24小时热门版块排行榜    

CyRhmU.jpeg
查看: 604  |  回复: 1
【悬赏金币】回答本帖问题,作者rrf2008将赠送您 100 个金币

rrf2008

铁杆木虫 (正式写手)

[求助] 这个程序如何运行已有1人参与

1.微分方程函数文件
function dy=cdsf1(t,y)
dy=zeros(4,1);
dy(1)=-y(1)*0.9+(y(2)*y(1)+y(4)+y(3));
dy(2)=1-y(2)*0.2-y(1)^2;
dy(3)=-y(3)*1.5-y(1);
dy(4)=-y(4)*0.17-y(1)*y(2)*0.2;
2.和对比效果图
m=100;
t1=0;t2=0;
y1=0.5;y2=0.5;y3=0.5;y4=0.5;
y11=0.6;y22=0.6;y33=0.6;y44=0.6;
%x的图形对比
for n=1:m
    t1=(n-1)*0.3;
    t2=n*0.3;
    [T1,Y1]=ode45('cdsf1',[t1,t2],[y1 y2 y3 y4]);
    [T2,Y2]=ode45('cdsf1',[t1,t2],[y11 y22 y33 y44]);
    [H1,L1]=size(Y1);[H2,L2]=size(Y2);
    y1=Y1(H1,1);y2=Y1(H1,2);y3=Y1(H1,3);y4=Y1(H1,4);
    y11=Y2(H2,1)-0.0111*(Y2(H2,1)-Y1(H1,1));
    y22=Y2(H2,2)-0.0111*(Y2(H2,2)-Y1(H1,2));
    y33=Y2(H2,3)-0.0111*(Y2(H2,3)-Y1(H1,3));
    y44=Y2(H2,4)-0.0111*(Y2(H2,4)-Y1(H1,4));
    plot(T1,Y1(:,1))
    hold on
    plot(T2,Y2(:,1),'r:')
    hold on
end
请问上述程序如何在Matlab软件中运行出这个图形(如图)
回复此楼
奥运火炬手2008
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyh700600

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
1. 将下面的代码保存为M文件:
CODE:


function rrf2008

close all;clear,clc

%  2.和对比效果图
m=100;
t1=0;t2=0;
y1=0.5;y2=0.5;y3=0.5;y4=0.5;
y11=0.6;y22=0.6;y33=0.6;y44=0.6;
% x的图形对比
for n=1:m
    t1=(n-1)*0.3;
    t2=n*0.3;
    [T1,Y1]=ode45(@cdsf1,[t1,t2],[y1 y2 y3 y4]);
    [T2,Y2]=ode45(@cdsf1,[t1,t2],[y11 y22 y33 y44]);
    [H1,L1]=size(Y1);[H2,L2]=size(Y2);
    y1=Y1(H1,1);y2=Y1(H1,2);y3=Y1(H1,3);y4=Y1(H1,4);
    y11=Y2(H2,1)-0.0111*(Y2(H2,1)-Y1(H1,1));
    y22=Y2(H2,2)-0.0111*(Y2(H2,2)-Y1(H1,2));
    y33=Y2(H2,3)-0.0111*(Y2(H2,3)-Y1(H1,3));
    y44=Y2(H2,4)-0.0111*(Y2(H2,4)-Y1(H1,4));
    plot(T1,Y1(:,1))
    hold on
    plot(T2,Y2(:,1),'r:')
    hold on
end

end


% 1.微分方程函数文件

function dy=cdsf1(t,y)
dy=zeros(4,1);
dy(1)=-y(1)*0.9+(y(2)*y(1)+y(4)+y(3));
dy(2)=1-y(2)*0.2-y(1)^2;
dy(3)=-y(3)*1.5-y(1);
dy(4)=-y(4)*0.17-y(1)*y(2)*0.2;

end




2. 将下面的代码复制到命令窗口,按回车键,运行即可
CODE:
rrf2008

2楼2022-07-02 11:39:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 rrf2008 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见