Matlab自学笔记六十五:解方程的数值解法(代码速成)
1.说明
前面讲了解方程(文章61:Matlab自学笔记六十一:快速上手解方程)和解方程组(文章63:Matlab自学笔记六十三:解方程组),使用solve函数进行求解,注意,求得的结果是解析解,但实际问题中遇到的很多方程或者方程组,求解解析解并不容易,甚至无法求出解析解,这就要用到数值解了;
如果solve不能找到解(解析解),并且设置了ReturnConditions为true,返回空解并给出警告,solve函数在内部会自动调用vpasolve尝试寻找数值解。
数值解法vpasolve求取的是数值解,数值解是近似解,一般有很长的小数,若有限位数的数值解不足以表达精确解,那么该解为近似数值解,对于非多项式方程或方程组,数值解法只返回找到的第一个解(如果解存在),求解时可以结合图像预判解的范围。
2.编程示例
解方程sin(x) = exp(x)靠近坐标原点最近的解
程序:
>> syms x
>> eq=sin(x) == exp(x)
>> solve(eq,x) %解析解(如无解析解,会自动调用数值解)
运行结果:
eq =
sin(x) == exp(x)
警告: Unable to solve symbolically. Returning a numeric solution using vpasolve.
> 位置:sym/solve (第 304 行)
ans =
-226.19467105846511316931032359612
>> vpasolve(eq,x) %数值解
>> vpasolve(eq,x,-3) %在x=-3左右的数值解
>> fplot([lhs(eq),rhs(eq)],[-5 2]) %绘图查看解的情况
运行结果:
ans =
-226.19467105846511316931032359612
ans =
-3.1830630119333635919391869956364
更多相关内容推荐
75.9 疯狂的小车(Matlab制作动画)
23.16 最小二乘法的概念:线性、加权、鲁棒、非线性最小二乘法及Matlab编程实例
25.2.1 朴素贝叶斯算法|原理篇:连续型数据分类识别
24.2 KNN算法之邻点搜索方法:KD树,概念、原理和搜索流程KDTreeSearcher
26.5 SVM支持向量机,核函数Kernel和核变换,Matlab编程实例
22.8 Matlab数学建模算法:线性规划之linprog
48.2/Matlab粒子群算法/初始化粒子群/含调参编程演示
47.1/Matlab遗传算法/概念/原理/编程演示数学建模
45.13 Matlab精讲:卷积神经网络(工作原理和运行机制)
37.11 AppDesigner更改表格数据的显示样式
36.5 MatlabGUI<坐标轴>通过按钮改变函数图像
End