Matlab中方程求解的基本命令
1.roots(p)
求多项式的根,其中p是多项式向量
例:求$x^3-x^2+x-1=0$的根。
roots([1,-1,1,-1])
注: [1,-1,1,-1]在matlab中表示多项式$x^3-x^2+x-1$
2.solve(fun)
求方程$fun=0$的符号解,如果不能求得精确的符号解,可以计算可变精度的数值解
例:用solve求方程$x^9+x^8+1=0$的根。
solve(‘x^9+x^8+1’)
给出了方程的数值解(32位有效数字的符号量)
例:求方程组
[x, y]=solve('x + y =1','x - 11*y=5')
[a,u,v]= solve('a*u^2 + v^2', 'u - v = 1', 'a^2 - 5*a +6')
3.solve(fun,var)
对指定变量var求代数方程fun=0的符号解。
例:解方程 $ax^2+bx^2+c=0$
syms a b c x;
f=a*x^2+b*x+c;
solve(f)
如果不指明变量,系统默认为x,也可指定自变量,比如指定b为自变量
syms a b c x;
f=a*x^2+b*x+c;
solve(f,b)
4.fsolve(fun,x0)
求非线性方程$fun=0$在估计值$x_0$附近的近似解。
例:用fsolve求方程$x=e^{-x}$在0附近的根。
fsolve(‘x-exp(-x)’,0)
5.fzero(fun,x0)
求函数fun在x0附近的零点
例:求方程$x-10^x+2=0$在$x_0=0.5$附近的根
fzero(‘x-10^x+2’,0.5)
fzero只能求解单变量的方程,没法求解复数、多变量以及方程组等
fsolve的功能强大多很多,它可以直接方便的求解多变量方程组,线性和非线性,超静定和静不定方程,还可求解复数方程
6:二分法
如遇到特别复杂的方程(包含积分方程等),一切方法失效时,用二分法求解。
(1)先用matlab画图命令求出根的大致范围
(2)假定范围为[a,b],不放设f(a)为正,f(b)为负,令c=(a+b)/2
(3)若f(c)为正,令c=a;否则令c为b
(4)一直对(3)循环下去,直到a,b间距达到给定的精度要求。