标签:
MATLAB作为科研人员的忠实伙伴,求解各种复杂方程的性能与其他工具相比,自然不允许有很多。 在这次的盘点中,计算MATLAB中solve和fsolve两个函数在解方程式中的优劣。
1 .解算函数
语法:
s=solve(eqn,var ) ) ) )。
s=solve(eqn,var,Name,Value ) )。
y=Solve(eqns,vars ) ) ) )。
y=solve(eqns,vars,Name,Value ) )。
[y1,yn]=Solve(eqns,vars ) )。
([y1,yn]=Solve(eqns,vars,Name,Value ) )。
([y1,yN,parameters,conditions]=solve(eqns,vars,' ReturnConditions ',true ) ) ) ) )。
说明:
求解s=solve(eqn,var )变量var的方程式eqn。 如果未指定var,symvar函数将确定要解析的变量。 例如,solve(x1==2,x )的解决方案x 1=2是x。
范例
s=solve(eqn、var、Name、Value )使用一个或多个Name、Value为参数指定的附加选项。
范例
y=Solve(eqns,vars )解析方程eqns的变量vars,并返回包含解决方案的结构。 如果不指定vars,solve将使用symvar查找要解析的变量。 在该情况下,symvar发现的变量的数量与等式的个数eqns相等。
范例
y=solve(eqns、vars、Name、Value )使用一个或多个Name、Value为参数指定的附加选项。
范例
[y1,yn]=Solve(eqns,vars )解决了变量vars的eqns方程。 解决方案被分配给y1,yN的变量。 如果不指定变量,solve将使用symvar查找要解析的变量。 此时,symvar发现的变量数与输出参数数n相等。
[y1,yn]=solve(eqns,vars,Name,Value ) ]参数使用由一个或多个名称指定的附加选项Name,Value。
范例
[y1,yN,parameters,conditions]=solve(eqns,vars,' ReturnConditions ',true )表示指定解决方案的参数和解决方案
解算函数的极限
关于非多项式方程,只能求出一个解
关于稍微复杂的方程式,求解的结果会出现很大的误差
求解复杂多项式方程可能会产生错误的求解结果
求解复杂多项式方程时,可能无法求解,需要花费时间
超过方程,只能返回一个解;
如果超过方程式,就有可能恢复到错误的解
2.f解算函数
语法(只列出两种) )。
x=fsolve(fun,x0 ) ) ) ) ) )。
[x,fval,exitflag]=fsolve(fun,x0,options ) ]
定义方程式(组)的fun:函数
x0:计算初始值
x:求解结果(方程根) )。
fval:将计算结果x带入方程式(组) fun、对应的值、即fun ) x
exitflag:返回方程解的结果的状态。 有关详细信息,请参阅help文档
options:方程的求解设定
MATLAB fsolve函数总结
fsolve可以求解方程(组)的实数根和复数根
fsolve采用迭代的数值算法,速度快
给定不同的初始值,可以求出不同的根(局部寻根) )
如果初始值不好,解决可能会失败
关于如何给出初始值的问题
a )一元/二元方程式(组)可以图解法得到根的个数,粗略推测根的值作为fsolve的初始值使用
b )根据方程中变量的实际含义,适当给出初始值。 例如,时间/长度/质量等物理量应该大于0
c )通过更多的练习和积累经验,自然会获得更多的知识
总结:
请尽量避免使用solve函数
尽可能使用fsolve求解数值解
标签:
资料来源: https://blog.csdn.net/power1_ power2/article/details/82893867