声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1094|回复: 5

[编程技巧] 求助一个很简单的问题

[复制链接]
发表于 2011-5-18 09:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我编的算一个点的龙格库塔法如下
function  x=rk44(x,h,T)
T(2)=T(1)+h;
k1=h*feval('fun',T(1),x(:,1));
k2=h*feval('fun',T(1)+h/2,x(:,1)+k1/2);
k3=h*feval('fun',T(1)+h/2,x(:,1)+k2/2);
k4=h*feval('fun',T(1)+h,x(:,1)+k3);
x(:,2)=x(:,1)+(k1+2*k2+2*k3+k4)/6;
end
但是在主程序变步长的循环中它不循环,程序如下(部分)
function y=changerk44()
x=[0;0;0;0;];
h=0.01;
AbsTol=1e-6;
T(1)=0;
p=4;
p(21)=2^p-1;
for i=1:1000
    z=rk44(x(:,i),h,T(i));
    m=rk44(x(:,i),h/2,T(i));
请大侠指点,什么原因?
回复
分享到:

使用道具 举报

发表于 2011-5-18 09:28 | 显示全部楼层
回复 1 # 煜宸0922 的帖子

在你的循环语句中,z、m应改成z(i)、m(i)这样才能保证循环的每个数都保存!

评分

1

查看全部评分

 楼主| 发表于 2011-5-18 10:21 | 显示全部楼层
回复 2 # wangyouyi 的帖子

不行呀,边框会显示橘黄色的报错信息,说是变量在每次迭代中有改变之类的。
发表于 2011-5-18 11:49 | 显示全部楼层
回复 3 # 煜宸0922 的帖子

你求龙格库塔法的子程序就有些问题!其中的'fun'没有定义!好像T参数的传递也有问题!
求龙格库塔法matlab好像有直接的函数,如4阶龙格库塔法ode45 你可以看看参考下!
 楼主| 发表于 2011-5-18 14:20 | 显示全部楼层
回复 4 # wangyouyi 的帖子

fun在另一程序中定义了,是个方程组,没有问题,就是我编的那个编步长程序有问题,哎,时间紧急,大侠如果有办法,一定给以指导呀
发表于 2011-5-18 18:03 | 显示全部楼层
本帖最后由 321forever 于 2011-5-18 19:48 编辑

回复 3 # 煜宸0922 的帖子

还应该按1楼说的,但是在循环前面要加要数组初始化。
  1. z=zeros(1,1000);
  2. m=zeros(1,1000);
  3. for i=1:1000
  4. z(i)=....
  5. m(i)=....
  6. end
复制代码

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-2 06:35 , Processed in 0.056504 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表