MATLAB用fsolve求解出现Equation solved, fsolve stalled.什么意思
发布网友
发布时间:2023-03-23 09:15
我来回答
共1个回答
热心网友
时间:2023-10-13 21:11
fsolve 的错误提示大意是 fsolve 在搜索0点时,fsolve函数用到的搜索步长小于matlab能够区分精度的最小值,可能与你的具体函数表达式相关。
为了保证足够的数值精度, fsolve 必须使用很小的(小于matlab默认步长)步长去搜索0点。可是步长很小后,又出现了新问题:即许多函数值都接近于0,从而让真正的0点无法被识别出来。
不论 fsolve 还是 fzero,他们的搜索0点过程都是一个数值搜索的过程。数值算法失效是一件正常的事,因为它极大的依赖于函数特性和初值的指定。那么我们可以转而使用符号函数求解0点。符号函数不用关心具体的函数值,完全当做符号处理,所以,不存在上述不稳定因素。所以,用solve函数求解符号方程:
>>syms x y; %定义两个符号变量;
>>[x ,y]=solve('y=2*x+3','y=3*x-7');%定义一个 2x1 的数组,存放x,y
朋友可以试试论坛给出的方法。