Matlab用符号工具包求解方程的方法和问题

符号工具包

Matlab里可以用syms定义一些变量为符号变量,这些变量可以进行符号运算,生成符号表达式,也可以用来求解方程。

求解方程的办法

用matlab求解一个方程那方法不要太多,举例如下:

  1. 用fzero(f,[x1,x2]),其中f是函数句柄,[x1,x2]是求解区间,一般用以求解非线性方程,用二分法、割线法等进行处理。
  2. fsolve能支持高维运算,可以用fsolve(f,x0)来解,其中x0是初始值。
  3. solve在能给出符号解的时候会给出符号解,不能就给出数值解,solve(f)解的是f==0,基本上,模拟人工运算。
  4. roots不支持非多项式型,用的方法是roots (q),q是一个系数向量,它能给出所有数值解。
    Matlab用符号工具包求解方程的方法和问题_第1张图片

符号求解过程的一些问题

// symbolic solution
 syms x
 f = @(x)x^3-2*x-5;
 solve(f)

按道理是会输出符号解或者数值解的,然而输出的实际情况如下:

Matlab用符号工具包求解方程的方法和问题_第2张图片
其实matlab官方解释是在求解复杂方程时就会出现这样的情况,用vpa函数就能显示出数值解。
Matlab用符号工具包求解方程的方法和问题_第3张图片
要注意的是solve函数可以输入符号函数也可以输入函数句柄,fsolve和fzero要求输入函数句柄,个人觉得solve函数功能最强大。

你可能感兴趣的:(Matlab学习笔记)