注册 登录
编程论坛 Matlab

求助:怎么用matlab解微分方程呢

bigspring 发布于 2007-04-28 16:08, 3295 次点击
我刚接触这个软件,感觉无从下手,请各位提提见解,谢谢了!!!!
8 回复
#2
menglu2007-04-28 16:33
可以用ode45这个函数
#3
menglu2007-04-28 16:39
首先将微分方程化为一阶方程组,
并把它存在一个m文件中。
然后在另一个m文件中用ode45函数来解

给你个程序自己看吧,说不太清楚
%jswlx_8_4_3f.m 阻尼振动函数
function y=jswlx_8_4_3f(t,x)
y=[x(2);-0.2*x(2)-x(1)] %一阶方程组

%jswlx_8_4_3.m
Hf_1=figure;
set(Hf_1,'color','w')
tDelt=0.05;T=70.0;%变量t的间隔和最终T
x10=10;x20=0.0;x0=[x10,x20];%初始条件
ts=0:tDelt:T;
[t,x]=ode45('jswlx_8_4_3f',ts,x0)
plot(t,x(:,1)),%grid,
xlabel('T'),ylabel('X')
#4
bigspring2007-05-02 09:43
谢谢了
麻烦介绍一下ode45函数,
#5
menglu2007-05-04 13:50
ode45的命令格式是
[x,y]=ode45('fun',xs,y0,option)
其中:fun为以.m文件写成的待解微分方程
xs=[x0,x1,...,xf],x0和xf是自变量的初值和终值
y0为初始条件
option为设定的误差,可缺省,绝对误差10的-6次方
[x,y]为xs对应解向量
#6
menglu2007-05-04 14:00

像上面我举的例子
常微分方程为5x”+x’+5x=0 初速度v0=0,初位置x0=10
先将其化为一阶方程组
x'=v x0=10
v'=0.2v-x v0=0

在程序中x(1)相当于x,x(2)相当于v

%jswlx_8_4_3f.m 阻尼振动函数
function y=jswlx_8_4_3f(t,x)
y=[x(2);-0.2*x(2)-x(1)] %一阶方程组,列向量

%jswlx_8_4_3.m
Hf_1=figure;
set(Hf_1,'color','w')
tDelt=0.05;T=70.0;%变量t的间隔和最终T
x10=10;x20=0.0;x0=[x10,x20];%初始条件
ts=0:tDelt:T;
[t,x]=ode45('jswlx_8_4_3f',ts,x0)
plot(t,x(:,1)),%grid,
xlabel('T'),ylabel('X')

#7
menglu2007-05-04 14:02

像上面我举的例子
常微分方程为5x”+x’+5x=0 初速度v0=0,初位置x0=10
先将其化为一阶方程组
x'=v x0=10
v'=0.2v-x v0=0

在程序中x(1)相当于x,x(2)相当于v

%jswlx_8_4_3f.m 阻尼振动函数
function y=jswlx_8_4_3f(t,x)
y=[x(2);-0.2*x(2)-x(1)] %一阶方程组,列向量

%jswlx_8_4_3.m
Hf_1=figure;
set(Hf_1,'color','w')
tDelt=0.05;T=70.0;%变量t的间隔和最终T
x10=10;x20=0.0;x0=[x10,x20];%初始条件
ts=0:tDelt:T;
[t,x]=ode45('jswlx_8_4_3f',ts,x0)
plot(t,x(:,1)),%grid,
xlabel('T'),ylabel('X')

#8
bigspring2007-05-08 20:31

谢谢了!!!!

#9
hsq510302032008-08-30 20:19
找本这方面的书,有专门的求解命令,很简单的
1