MATLAB解方程

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

  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值