MATLAB求解方程和多元方程0.01 .核心函数solve2.求解单方程3 .求解带有未知参数的方程4 .求解多元方程5 .数值近似解6 .无解7 .多留言点赞!
0 .说明
前面两篇博文分别介绍:
MATLAB求常微分方程的解析解
MATLAB求常微分方程的数值解
为了形成体系,还决定介绍普通方程的解。
本博文也是按照MATLAB的官方文档展开的。 (建议查看官方文档。 )
1 .核心函数solve一般形式s=solve(eqns,vars,Name,Value ),其中:
eqns是要解的方程
vars是要解决的变量
对于用于指定解的属性,Name-Value通常不可用;
s是结果,对应于vars的变量;
2 .求解单方程http://www.Sina.com/sin(x )=1
方程:
syms x; %定义x为未知量eqn=sin(x )==1; %定义了方程式,eqn只是一个代号,表示sin(x )==1solX=solve ) eqn,x ) %求出方程式eqn的x,放入solx中输入代码:
结果:MATLAB定义方程式使用了==符号,是这样规定的。
说明:细心的学生应该注意到了,这个例子的解实际上应该是pi/2 2k*pi。 是怎么得到的呢?
添加Name-Value对可解决问题。 输入以下代码:
syms x; %定义x为未知量eqn=sin(x )==1; %定义了方程式,eqn只是一个符号,表示为sin(x(==1[solx,params,cond]=solve(eqn,x,' ReturnConditions ',true ) ) %的方程式eqn
3 .具有未知参数的方程注意:ax bx c=0
方程:
syms x a b c; %定义x a b c为未知量eqn=a*x^2 b*x c==0; %定义方程solx=solve(eqn,x ) %解方程代码:
结果:在这里简单地用syms声明未知的参数就可以了。
4 .求解多元方程说明:
方程:
syms u v; %定义u v为未知量eqns=[2*u v==0,u-v==1]; %定义方程vars=[u,v]; 定义求%解的未知量[solU,solv]=solve(eqns,vars ) ]求出eqns中的vars未知量,分别存储sol=solve ) eqns,vars; 求出eqns中的vars未知量,从作为结构体容纳在sol中的solu1=sol.u%sol结构体中取出变量u的解solv1=sol.v%sol结构体中取出变量v的解代码:
结果:在本例中,有两个要解析的变量。 有两种保存方法,用代码进行了说明。
5 .数值近似解http://www.Sina.com/sin(x )==x-1
说明:
syms x; %定义x是未知量FPlot(sin(x ),[-2,2 ]; 绘制%y=sin(x )的图像的hold on; FPlot(x^2-1,[-2,2 ] ); %图y=x^2-1的图像hold off; eqn=sin(x )==x^2-1; 直接求解%定义方程solx=solve(eqn,x ) ),返回找到的第一个数值近似解solx1=vpasolve ) eqn,x,[ 0,2 ] ) VPA进行求解,得到在范围[ 0,2 ]内找到的第一个数值近似解
方程:在该例子中不能求出正确的解,slove可以返回求出的最初的数值近似解,vpasolve可以返回指定范围内的最初的近似解
6 .无解情况代码:
结果:
syms x; %定义x为未知量eqn=[3* x2==0,3 * x1==0]; %定义函数solx=solve(eqn,x )说明:
7 .留言点赞!