matlab solve解非线性方程solve('(1-1/m)^2*log(1-m)+0.1247

发布时间:2021-02-26 09:37:31

matlab solve解非线性方程solve('(1-1/m)^2*log(1-m)+0.1247'),m正确答案是0.7734但是解出来ans=0.答案带进去明显不对

网友回答

非线性方程一般不使用solve解,许多时候没有表达式解,可以采用向量法
======以下答案可供参考======
供参考答案1:
第一个结果是说,精度options.Tol已经满足要求,但这个精度options.TolFun不满足,让你更改初值试试。
第二个结果是说已经达到最大计算次数,可以通过提高options.MaxFunEvals来增加计算次数。
matlab也是做数值计算的,对计算非线性函数难免受初值选取、精确度满足、步长选择等影响。上面的问题基本也是这样,可以通过设置options来修正,options是个大域名,计算后可以通过在命令窗口输入options来查看各个变量,输入options.变量名 来查看各个变量值,比如options.MaxFunEvals。
x = fsolve(fun,x0,options)你可以多了解下它的用法,网上有很多,第三项是options选项,options各变量有默认值,你可以更改,来控制计算。
如果再不能的话,估计就是函数太过复杂,或太过矫情,不是fsolve所能计算的。
options=optimset('MaxFunEvals',~...)
optimset
Display: [ off | iter | notify | final ]
MaxFunEvals: [ positive scalar ]
MaxIter: [ positive scalar ]
.............
以上问题属网友观点,不代表本站立场,仅供参考!