标题:求助,matlab编程问题,我自己编了个小程序,不能达到预期结果,请教高手
只看楼主
Ave000
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-11-17
结帖率:0
 问题点数:0 回复次数:2 
求助,matlab编程问题,我自己编了个小程序,不能达到预期结果,请教高手
程序:
function rk(A,x,h,y0)
i=1;
y(i,:)=y0;
m=length(A);
b=x(length(x));
while x(i)<b
     a=[x(i),y(i,:)];
    for l=1:m
         k1(l)=eval(A{l},a);
    end
     a=[x(i)+h/2,y(i,:)+h/2*k1];
    for l=1:l
         k2(l)=eval(A{l},a);
    end
     a=[x(i)+h/2,y(i,:)+h/2*k2];
    for l=1:m
         k3(l)=eval(A{l},a);
    end
     a=[x(i)+h,y(i,:)+h*k3];
    for l=1:m
         k4(l)=eval(A{l},a);
    end
     y(i+1,:)=y(i,:)+h/6*(k1+2*k2+2*k3+k4);
     i=i+1;
end
y,k1,k2,k3,k4
运行结果:
y1='-10*a(2)-9*a(3)+8';
y2='-9*a(2)-8*a(3)+7';
A=[{y1},{y2}];
rk(A,0:0.05:1,0.05,ones(1,2))

y =

    1.0000    1.0000
    0.6417    0.6716
    0.4972    0.5345
    0.4403    0.4758
    0.4193    0.4491
    0.4129    0.4356
    0.4126    0.4275
    0.4148    0.4216
    0.4181    0.4166
    0.4217    0.4120
    0.4255    0.4075
    0.4294    0.4030
    0.4334    0.3986
    0.4373    0.3941
    0.4413    0.3897
    0.4453    0.3852
    0.4493    0.3807
    0.4533    0.3762
    0.4574    0.3717
    0.4614    0.3672
    0.4655    0.3627


k1 =

    0.0809   -0.0904


k2 =

    0.0811   -0.0906


k3 =

    0.0811   -0.0906


k4 =

    0.0812   -0.0907
我想把中间的K1,k2,k3,k4都显示出来,该怎么做啊,请教赐教
搜索更多相关主题的帖子: matlab 结果 
2009-11-17 15:41
jinanzht
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-11-17
得分:0 
你可以在for循环中用sprintf输出中间结果
2009-11-17 22:10
dbx12358
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:3
帖 子:37
专家分:141
注 册:2008-11-13
得分:0 
你把for循环里面k语句后面的分号去掉就行了。
2009-11-24 22:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-292617-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.583803 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved