jaykangta 发表于 2007-12-14 12:08

大家帮我看看这个程序关于差分格式实现

大家帮我看看这个程序要怎么改才能实现这个差分格式,刚接触matlab,这个差分格式中的u1(i,j)和是第k层和第k+1层中间的过度变量,一直处理不好,大家帮帮忙啊!
差分格式
u(1:11,1:11,1)=0,r=0.01

(1+2r)u1(i,j)-ru1(i+1,j)-ru1(i-1,j)=(1-2r)u(i,j,k)+ru(i+1,j,k)+ru(i,j,k)

(1+2r)u(i,j,k+1)-ru(i,j,k+1)-r(i,j,k+1)=(1-2r)u1(i,j,)+ru1(i+1,j,)+ru1(i-1,j)


u(1:(m+1),1:(n+1),1)=0
r=0.01;
u1=u
for k=2:k
    for j=2:m
      for i=2:n
      u1(i,j)=(r*u1(i+1,j)+r*u1(i-1,j)+r*u(i,j+1,k-1)+(1-2*r)*u(i,j,k-1)+r*u(i,j-1,k-1))/(1+2*r);
      u2(i,j,k)=(r*u2(i,j+1,k)+r*u2(i,j-1,k)+r*u1(i+1,j)+r*u1(i-1,j)+(1-2*r)*u1(i,j))/(1+2*r);      
         end
    end
    u=u2;
end

[ 本帖最后由 sigma665 于 2007-12-14 12:28 编辑 ]

sigma665 发表于 2007-12-14 14:34

回复 #1 jaykangta 的帖子

你的程序不完整!!!!

jaykangta 发表于 2007-12-14 14:44

那要怎么改啊

那要怎么改啊,边界条件只有一个,m,n,k前面已经附值了

sigma665 发表于 2007-12-14 15:07

回复 #3 jaykangta 的帖子

把完整的程序发上来
如果不愿意的话,至少也要发个能让别人运行的...

jaykangta 发表于 2007-12-14 17:14

m=10;
n=10;
kk=10;
u(1:(n+1),1:(m+1),1)=0;
r=0.01;
u1=u;
for k=2:kk
    for j=2:m
      for i=2:n
            u1(i,j,k)=(r*u1(i+1,j,k-1)+r*u1(i-1,j,k-1)+r*u(i,j+1,k-1)+(1-2*r)*u(i,j,k-1)+r*u(i,j-1,k-1))/(1+2*r);
            u2=u1;
            u2(i,j,k)=(r*u2(i,j+1,k)+r*u2(i,j-1,k)+r*u1(i+1,j,k-1)+r*u1(i-1,j,k-1)+(1-2*r)*u1(i,j,k-1))/(1+2*r);      
      end
    end
    u=u2;
end
这个程序运行得到的u值是方程的解吗?

花如月 发表于 2007-12-15 11:38

回复 #5 jaykangta 的帖子

是不是解,你应该比较清楚吧。程序是你自己写的,思路对结果就应该是对的。另外建议看看矢量化编程的帖子,不要用太多的循环、、、
页: [1]
查看完整版本: 大家帮我看看这个程序关于差分格式实现