注册 登录
编程论坛 Matlab

[求助]怎么用ode45解微分方程组?

qiaozhanduo 发布于 2007-04-25 15:50, 3213 次点击

用怎么解微分方程组呀?急急急!这种情况是怎么回事?
clc
k0=3.3*10^7;

p.g=6.0*10^7;
p.t=10;
p.sp=1.0*10^-12;
w=3.5*10^5;
m=0.04;
p.ip=0.002;
p.k=k0*(1-m*sin(w*t));
%fun4512.m
function dydt=fun 4512(t,y)
dydt=[-p.k*y(1)+p.g*y(1)*y(2)+sp;-1/p.t*((1+p,ip+y(1)^2)*y(2)-p.ip+1];
[t,y]=ode45(@fun4512,[0 0.04],[0,0.007]);
figure(1)
plot(t,y(1,:))

??? Error using ==> feval
Undefined function 'fun4512'.

Error in ==> C:\MATLAB6p1\toolbox\matlab\funfun\private\odearguments.m
On line 104 ==> f0 = feval(ode,t0,y0,args{:});

Error in ==> C:\MATLAB6p1\toolbox\matlab\funfun\ode45.m
On line 158 ==> [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, args, ...

Error in ==> C:\Untitled.m
On line 11 ==> [t,y]=ode45(@fun4512,[0 0.04],[0,0.007]);

2 回复
#2
abingchem2007-04-26 19:09
好像没有这样定义函数的,不能在脚本文件中这样定义函数,单独定义吧
#3
menglu2007-04-28 16:32


1.微分方程应该建一个m文件吧
%fun4512.m
function dydt=fun 4512(t,y)
dydt=[-p.k*y(1)+p.g*y(1)*y(2)+sp;-1/p.t*((1+p,ip+y(1)^2)*y(2)-p.ip+1];
首先,fun 4512(t,y)此处不该有空格的,函数名和文件名必须保持一致
其次,微分方程好像写错了,没太看懂
2.[t,y]=ode45(@fun4512,[0 0.04],[0,0.007]);
@fun4512应该写成'fun4512'
后面的没看懂

1