yuexiaoming 发表于 2012-2-23 22:57

Matlab程序调用时出现错误,求高手指导一下(关于ode23)

本帖最后由 牛小贱 于 2014-2-27 11:30 编辑

调用程序如下( m文件):function dy = fun1(t,y,flag,u)
if y(1)>=1
    a=0.1*cos(u*t)-y(1)+1;
elseif y(1)<1&y(1)>-1
    a=0.1*cos(u*t);
elseif y(1)<=-1
    a=0.1*cos(u*t)-y(1)-1;
end
dy=zeros(2,1);
dy=;主程序:
u=;
for j=1:2
= ode23(@fun1, , ,[],u(j));
figure
plot(y(:,1),y(:,2));
end


yuexiaoming 发表于 2012-2-24 08:56

自己顶一下{:{39}:}

牛小贱 发表于 2014-2-27 11:18

本帖最后由 牛小贱 于 2014-2-27 11:28 编辑

正确的程序应该是这样的:
调用程序如下( m文件):function dy = fun1(t,y,flag,u)
u=;
for j=1:2
    if y(1)>=1
    a=0.1*cos(u(j)*t)-y(1)+1;
elseif y(1)<1&y(1)>-1
    a=0.1*cos(u(j)*t);
elseif y(1)<=-1
    a=0.1*cos(u(j)*t)-y(1)-1;
    end
end
dy=zeros(2,1);
dy=;
主程序: = ode23(@fun1, ,);
figure
plot(y(:,1),y(:,2));另外,补充一点:ode23和ode45在 MATLAB中的用法 ode23:使用二阶龙格-库塔法求微分方程,调用格式为:
,y]=ode23(‘fname’,tspan,y0)
ode45:使用四阶龙格-库塔法求微分方程,调用格式为:
,y]=ode45(‘fname’,tspan,y0)其中fname为由M函数定义的线性或者非线性微分方程的句柄函数名。tspan形式为,表示求解区间。y0是初始状态列向量。t和y分别给出时间向量和相应的状态向量。希望对你有所帮助!!!
页: [1]
查看完整版本: Matlab程序调用时出现错误,求高手指导一下(关于ode23)