概述
使用MATLAB求解方程求根——学习笔记
碎碎念:终于参加完了某比赛,连续大约摸了两天的鱼,就在昨天由于自己的操作失误,亲手将电脑给烧了,这就是上天在暗示我是时候加油为接下来的两场比赛和一个考试努力啦~下面浅谈一下MATLAB各种求解方程的根的方法。
求方程的根
法一:
求方程的全部根。
在MATLAB命令窗口输入:
p=[1,7,0,9,-20]; %建立多项式系数向量
x=roots(p) %求根
法二:
使用solve函数:
s=solve(f,v):求方程关于指定自变量的解;
s=solve(f):求方程关于默认自变量的解。
其中 f可以是用字符串表示的方程,或符号表达式;若f 中不含等号,则表示解 方程 f=0。
解方程 x^3-3*x+1=0
>>syms x; f=x^3-3*x+1;
>>s=solve(f,x)
>>s=solve(‘x^3-3*x+1’,‘x’)
>>s=solve(‘x^3-3*x+1=0’,‘x’)
Solve函数还可以用来求解方程组!
solve(f1,f2,...,fN,v1,v2,...,vN)
求解由 f1,f2,...,fN 确定的方程组关于 v1, v2,...,vN 的解。
解方程组:
>>[x,y,z]=solve(‘x+2*y-z=27’,‘x+z=3’, ...
‘x^2+3*y^2=28’,‘x’,‘y’,‘z’)
注意:输出变量的顺序要书写正确!
Solve在得不到解析解时,会给出数值解。
非线性方程组求解:
fzero(f,x0):求方程f=0在x0附近的根。
几点说明:
- 方程可能有多个根,但是fzero只能给出距离x0最近的一个根;
- 若x0是一个标量,则fzero先找出一个包含x0的区间,使得f在这个区间两个端点上的值异号,然后再在这个区间内寻找方程f=0的根;如果找不到这样的区间,则返回NaN。
- 若x0是一个2维向量,则表示在[x0(1),x0(2)]区间内求方程的根,此时必须满足f在这两个端点上的值异号。
- 由于fzero是根据函数是否船业横轴来决定零点。因此它无法确定函数曲线仅触及横轴但是不穿越的零点,如|sin(x)|的所有零点。
- 函数中的f是一个函数句柄,通过以下方式给出:
字符串形式:fzero(‘x^3-3*x+1’,2);
通过@调用的函数句柄:fzero(@sin,4);
- f不能用符号表达式!
线性方程组求解:
linsolve(A,b):解线性方程组
>> A=[1 2 –1; 1 0 1; 1 3 0];
>> b=[2;3;8];
>> X=linsolve(A,b)
注意这里的b是列向量。
求解方程函数小结
roots(p):多项式的所有零点,p是多项式系数向量。
fzero(f,x0):求f=0在x0附近的根,f是函数句柄,可以由字符串给出或使用@, 但不能是符号表达式!
solve(f,v):求方程关于指定自变量的解,f可以是用字符串表示的方程,或符号表 达式,若不含等号表示f=0;
也可解方程组(包含非线性);得不到解析解时,给出数值解。
linsolve(A,b):解线性方程组。
最后
以上就是受伤水杯为你收集整理的使用MATLAB求解方程求根——学习笔记使用MATLAB求解方程求根——学习笔记的全部内容,希望文章能够帮你解决使用MATLAB求解方程求根——学习笔记使用MATLAB求解方程求根——学习笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复