8赞
280
当前位置:  开发笔记 > 编程语言 > 正文

MATLAB解方程

1.求解一般的代数方程例:symsabcxSa*x^2b*xcsolve(S)求解表达式等于0的根或再输入一个参数指定未知数bsolve(S,b)2.求解

1. 求解一般的代数方程

例:

syms a b c x
S=a*x^2+b*x+c
solve(S)

求解表达式等于0的根

或再输入一个参数指定未知数b=solve(S,b)


2. 求解线性方程

1) AX=B的解X=A\B或X=inv(A)B
2)XA=B的解X=B/A或X=B
inv(A)


3. 求解微分方程


(1)求解精确地解析解

r=dsolve(‘eq1,eq2,…’,‘cond1,cond2,…’,‘v’)
微分方程或微分方程组/初始条件或边界条件/独立变量

表示方式:

%1
syms y(x);
dsolve(diff(y,2)==x*y)
%2
dsolve('D2y=x*y','x')
%3
dsolve('D2y==x*y','x')

%添加各种已知条件的方法
%加入初始条件或边界条件

syms a b y(t)
dsolve(diff(y) == a*y, y(0) == b)

syms a y(t)
Dy = diff(y);
dsolve(diff(y, 2) == -a^2*y, y(0) == 1, Dy(pi/a) == 0)

syms a y(t)
dsolve(diff(y) == a/sqrt(y) + y, y(a) == 1)

%求解方程组

syms x(t) y(t)
z = dsolve(diff(x) == y, diff(y) == -x)
z.x
z.y

4. 求数值解

[t,y]=solver(‘fun’,tspan,options)
[自变量,函数值]=solver(‘待解方程的m文件名’,自变量取值区域,函数初始值)
对于难以找到精确解的方程求解数值解
solver:数值计算方法


例:

%采用dsolve求通解,带入x计算y
y=dsolve('Dy=-2*y+2*x^2+2*x','y(0)=1','x')
x=0:0.01:0.5;
yy=subs(y,x);%代入x求解y%用ode15直接计算数值解
fun=inline('-2*y+2*x^2+2*x');
[x,y]=ode15s(fun,[0:0.01:0.5],1);%带入原y表达式计算的结果
ys=x.*x+exp(-2*x);
plot(x,y,'r',x,ys,'b')%三者重合

MATLAB求解高阶微分方程,需等价地变成一阶微分方程

%%建立m文件描述方程组
function dy=vdp1000(t,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=1000*(1-y(1)^2)*y(2)-y(1);%%求解具体数值
[T,Y]=ode15s('vdp1000',[0 3000],[2 0]);
plot(T,Y(:,1),'-')

参考:参考1


推荐阅读
author-avatar
_郭士铭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有