大家帮我看看这个程序关于差分格式实现
大家帮我看看这个程序要怎么改才能实现这个差分格式,刚接触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 编辑 ]
回复 #1 jaykangta 的帖子
你的程序不完整!!!!那要怎么改啊
那要怎么改啊,边界条件只有一个,m,n,k前面已经附值了回复 #3 jaykangta 的帖子
把完整的程序发上来如果不愿意的话,至少也要发个能让别人运行的... 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值是方程的解吗?
回复 #5 jaykangta 的帖子
是不是解,你应该比较清楚吧。程序是你自己写的,思路对结果就应该是对的。另外建议看看矢量化编程的帖子,不要用太多的循环、、、
页:
[1]