matlab计算方程fsolve,MATLAB解方程组中 solve 和 fsolve 的细节比较

标签:

MATLAB作为科研工作者的忠实伙伴,解各种复杂方程的性能与其他工具相比,自然不逞多让。本期盘点MATLAB中solve和fsolve两个函数在解方程中的优劣。

1. solve函数

语法:

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(x + 1 == 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) 返回指定解决方案中的参数和解决方案条件的附加参数parameters和conditions。

solve 函数的局限性

对于非多项式方程,只能求出一个解

对于稍许复杂的方程,求解结果出现很大误差

求解复杂的多项式方程时,可能会产生错误的求解结果

求解复杂的多项式方程时,可能无法求解,且非常耗时

求解超越方程时,只能返回一个解;

求解超越方程时,可能返回错误解;

2. fsolve函数

语法(仅列出两种)

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

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值