matlab解一阶微分方程

来源:百度知道 编辑:UC知道 时间:2024/06/17 03:33:25
方程 dy/dt+i=240*sin(2*pi*50*t)

其中i=(0.0006455*exp(0.4182*(10*y/0.001+21)) + (-3.971e+004)*exp(-0.4854*(10*y/0.001+21)))*0.1/100
这个i的方程是我用CFtoolbox得到的.
我想用ODE45来得到这个微分方程的数值解,其中y(0)=0;
请高手帮忙.
i和y的关系设定 y是必须在这个范围里面,如果超出这个范围,i(y)这个方程就不适用了.而且y的值不能这样取-0.0015:0.0015,如果这样取的话,也是错误的.

y=-0.0015:0.0001:0.0015;
i=(0.0006455*exp(0.4182*(10*y/0.001+21)) + (-3.971e+004)*exp(-0.4854*(10*y/0.001+21)))*0.1/100;

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dy=zhidao_kingwolfnet(t,y)
%y如果在你的区间[-0.0015,0.0015],用你的i的表达式,
%不在区间内的话,我直接将i赋成0
if ((y>=-0.0015)&&(y<=0.0015))
i=(0.0006455*exp(0.4182*(10*y/0.001+21)) + (-3.971e+004)*exp(-0.4854*(10*y/0.001+21)))*0.1/100;
else
i=0;
end
dy=240*sin(2*pi*50*t)-i;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下面输入:
t_end=0.04;
x0=0;
[t,x]=ode45('zhidao_kingwolfnet',[0,t_end],x0);
plot(t,x);