24小时热门版块排行榜    

查看: 558  |  回复: 1

蓝谙

至尊木虫 (职业作家)

[求助] 自己写了一个二维热传导方程的向前差分法,提示有两个错误,但不知怎么改。帮帮忙啦~

function u=uu(x,y)%边界函数
u=(x.^2)*sin(y)-(y.^2)*sin(x);
end

function [x,y,u]=heat(x0,xn,y0,yn,t0,tn,h1,h2,a)%二维热传导方程的向前差分
n1=(xn-x0)/h1;%x y的点的个数
n2=(tn-t0)/h2;%t 的点的个数
for i=1:n1
    for j=1:n1
    u1(i,j,1)=0;%第一层初始化
    end
end
x(1)=x0;y(1)=y0;


for i=1:n1
    x(i+1)=x(i)+h1;
    y(i+1)=y(i)+h1;%求出x y的坐标
end
for i=1:n1
    for j=1:n2
    u1(1,i,j)=feval(uu,x(1),y(i));%x=x0的边值
    end
end
for i=1:n1
    for j=1:n2
    u1(n1,i,j)=feval(uu,x(n1),y(i));%x=xn的边值
    end
end
for i=1:n1
    for j=1:n2
        u1(i,1,j)=feval(uu,x(i),y(1));%y=y0的边值
    end
end
for i=1:n1
    for j=1:n2
        u1(i,n1,j)=feval(uu,x(i),y(xn));%y=yn的边值
    end
end
   
r=a*h2/(h1^2);
for k=2n2-1)
    for i=2n1-1)
        for j=2n1-1)
        u(i,j,k+1)=u(i,j,k)+r*(u(i+1,j,k)-4*u(i,j,k)+u(i-1,j,k)+u(i,j+1,k)+u(i,j-1,k))
        end
    end
end
for i=1:n1
    for j=1:n1
        u(i,j)=u1(i,j,n2);
    end
end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

蓝谙

至尊木虫 (职业作家)

引用回帖:
1楼: Originally posted by 蓝谙 at 2015-11-26 12:45:29
function u=uu(x,y)%边界函数
u=(x.^2)*sin(y)-(y.^2)*sin(x);
end

function =heat(x0,xn,y0,yn,t0,tn,h1,h2,a)%二维热传导方程的向前差分
n1=(xn-x0)/h1;%x y的点的个数
n2=(tn-t0)/h2;%t 的点的个数
for  ...

现在自己想明白啦。不过没人回好伤心...

发自小木虫Android客户端
2楼2015-11-28 22:51:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 蓝谙 的主题更新
信息提示
请填处理意见