请问这道matlab解电路题题怎么解,能不能用第二张图片的方法等效运算

最近的一篇文章中数据测试结果得到了一大堆数据,想找一式子或者曲线来找一找其中x和y的规律手动试了一些函数曲线,总是不能满足所有的数据上头说可以用matlab擬合,这之前还真没用过用了一下还真是好用...

}

        1、计算精确:符号计算基于数学公式、定理并通过一系列推理、演绎得到方程的解或者数学表达式的值对操作对象不进行离散化和近似化处理。

        2、可应用范围有限:实際科研和生产中遇到的问题绝大多数都无法获得精确的符号解这时我们不得不求助数值计算。

        3、对待符号计算态度:用其来完成公式推導和解决简单的对计算时效性要求不高的问题综合符号计算和数值计算各自的优点,视问题特点混合使用符号计算和数值计算

2、符号對象和符号表达式

1、符号对象的创建:要生成一个符号对象,可以利用sym以及syms函数sym可以生成单个符号对象,而syms可以生成多个符号对象符號对象的运算是完全精确的,没有舍入误差例如:a

        2、符号表达式:创建了符号对象,我们就可以创建各种各样的符号表达式譬如,创建符号变量a, b, c后如下都是符号表达式:

第一种用法是确认表达式expr中所有自由符号变量第二种用法是从表达式expr中确认出距离x最近的n个符号变量。这个最近距离指的是变量第一个字符和x的ASCII码值之差的绝对值差绝对值相同时,ASCII码值大的字符优先findsym是老版本中的方法,新版本将使鼡symvar函数代替:symvar(expr);

         3、运算符:MATLAB采用了重载(Overload)技术,使得用来构成符号表达式的运算符无论在拼写还是在使用方法上,都与数值计算中的算符完全相同譬如“+”,“-”“*”,“\”“/”,“^”等

符号对象的比较中,没有大于大于等于小于小于等於的概念而只有是否等于的概念,即==”与“~=”如果要判断两个符号数值的大小一般来说有两种办法,一种是利用double将其转化成數值型的另一种是利用sort+“==”或“~=”譬如下面代码:

从上述代码可以看出上述两种方法都间接实现了判断大小。

        4、符号计算与数值计算结合:利用符号计算得到结果时有时需要将其转化成数值型的以便后续数值计算利用。通过符号计算得到一个表达式时想把它转化荿关于其中某个变量的数值函数。

        很多时候我们需要求符号表达式在不同的参数值下的具体值说通俗点就是如何把具体的参数代入符号表达式。这时候可以利用eval和subs函数或者转化成匿名函数

% 将符号变量转化成数值 % 可供使用的一些方法 % 这里a是符号变量,a1--a4是数值变量 % 很多时候峩们需要求符号表达式在不同的参数值下的具体值 % 说通俗点就是如何把具体的参数代入符号表达式。这时候可以利用eval和subs函数或者转化成匿名函数 % 利用符号计算求f(x)的二阶导数 % diff函数用于求导数或者向量和矩阵的比较 % 如果输入一个长度为n的一维向量,则该函数将会返回长度为n-1嘚向量向量的值是原向量相邻元素的差 % 第一种方法:利用subs函数求d2f在x=1时的值。 % 第二种方法:x赋值1后利用eval函数求d2f在x = 1时的值 % 第三种方法:将d2f轉化成匿名函数,求其在x = 1时的值 % 矩阵f对t的一阶导数 % 矩阵f对x的二阶导数由于是x,而f中含有x变量故x可以省略

通常在不确定方程是否有符号解的时候,推荐先使用solve进行尝试因为solve相比于数值求解来说,它不需要提供初值并且一般情况下能够得到方程的所有解。对于一些简单嘚超越方程solve还能够自动调用数值计算系统给出一个数值解。

        eq为符号表达式var为指定的要求解的变量。如果不声明要求解的变量(第一和第彡种形式)则matlab自动按默认变量进行求解,默认变量可以由symvar(eq)确定

% 使用solve函数求解方程
 
% (solve函数的参数包括方程表达式,以及要求解的变量这裏变量是可选参数,不指定时matlab自动按默认变量进行求解)
% 这时候solve求得的解通过结构体的形式赋值给sol然后再通过x=sol.x和y=sol.y分别赋值给x和y。
 
% 使用double将苻号解转换为数值解
 
需要注意等式左边接收参数时应当按字母表进行排序,否则MATLAB不会自动识别你的参数顺序比如:








solve会把答案按字母表進行排序后进行赋值,x解赋值给第一个参数y解赋值给第二个参数,那么对于第二种形式实际上最终结果是变量y存储了x的解而变量x存储叻y的解。


由于是符号求解有时候得到的解是一大串式子(符号求解无精度损失,所以MATLAB不会自动将答案转化为浮点数)这时候可以用vpa或者double函數将结果转换为单一的数。


另外很多人习惯对于solve的参数采用字符型输入这种方式有几个弊端,首先就是程序的调试一旦式子输入有误(朂常见的就是括号的配平),将会对程序调试带来很大的困难







 

数值求解法包括fzerofsolve,其区别在于fzero只适用求解一元函数零点而fsolve适用于求解多え函数零点(包括一元函数)当求解一元函数零点时推荐优先使用fzero,原因是fzero求解一元方程往往更容易因为它不仅支持提供初值的搜索,還支持在一个区间上进行搜索




如果方程有多个零点时,fzero只能根据提供的初值求得最靠近初值的一个零点如果希望求得多个零点的话,那么只能够通过改变初值来得到不同的零点
对于零点的选取,目前来说没有什么比较好的办法只能够通过分析方程的性质,或者通过莋图的方法去寻找一个比较靠近零点的初值另外,fzero能够提供区间搜索注意区间两端的端点函数值符号需要反向。
% fzero只适用求解一元函数零点 % 这里采用匿名函数也可以使用函数文件形式 % 1为搜索初值,fval为求解误差






这里对于方程的的输入需要采用矩阵的形式其中x(1)代表x,x(2)代表y有时候变量较多时可能会容易混淆,这里提供另一种方法采用符号变量形式再利用matlabFunction转化为函数句柄:
% 采用符号变量形式再利用matlabFunction转化为函数句柄
% 将符号函数转化为函数句柄
 
效果与之前相同,但不容易出错求得的解以矩阵形式返回给sol,即sol的第一个值是匿名函数的第一个输叺参数值xsol的第二个值是匿名函数的第二个输入参数值y。

 
vpasolve是R2012b引进的函数可以求解一元或多元函数零点。相比于fzero和fsolve来说vpasolve最大的一个优点僦是不需要提供初值,且能够自动搜索指定范围内的多个解






例:对于多项式方程,vpasolve能够给出所有解:
对于非多项式方程vpasolve给出它找到的苐一个解:
这时可以提供搜索初值,来改变它找到的解:
可以指定搜索范围但不同于solve,solve指定求解范围是用assume函数vpasolve则是直接在输入参数中指定:
最后,vpasolve一个很强大的用法将‘random’选项设置为true可以直接搜索指定范围内不同解:

5、左除”\”与右除”/”

 
 
在MATLAB环境中,强烈建议使用左除”\”或者右除”/”解线性方程组左除和右除是根据除号左侧还是右侧是分母而定的,方程系数矩阵在未知数左侧则用左除,反之用祐除使用左除”\”或者右除”/”的好处是因为其对线性方程(组)的广泛适用性,当未知数个数大于方程个数的时候左除或右除会给出方程的特解,结合null函数可以得到通解。当未知数个数小于方程个数的时候左除或右除会给出方程的最小二乘解。
求解积分与求解方程相哃也有两种方法,符号求解和数值求解与数值积分相比,符号积分具有指令简单占用机时长等特点,因此一般复杂的积分运算都采鼡数值积分函数来计算但某些情况下,特别是一些简单的上下限为函数的多重积分用符号积分计算会比调用数值积分函数计算简单方便许多。
 




上述调用格式中var可以省略var省略时,积分将针对findsym确定的变量来进行a, b作为积分上下限,实际输入中可以为数值符号或者字母符号 % 这里没有制定区间,求解的是不定积分

但是大多情况下int都得不到解析解这时候就可以采用数值积分。
 



其中fun为函数句柄xmin为积分下限,xmax為积分上限Name和Value是一些选项控制,包括误差、向量化积分等等integral配合fzero可以求解无法显式表达的函数的定积分。



}

首先谢谢你的热心帮助但是你嘚程序matlab运行出错是怎么回事?哪里错了呢求改正

如果你的matlab可以运行出来,麻烦你截图告诉我运行结果超级感谢大好人

你对这个回答的評价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

我要回帖

更多关于 matlab解电路题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信