松弛法求解给定边界条件的泊松方程

一、问题描述

一块 4cm x 3cm 的板,表面的散热忽略不计,四边温度给定,除一条长边温度为 100◦C 外,其他三条边的温度为 20◦C。计算其稳定的温度场。

采用迭代法计算时,注意采用不同的松弛因子,并比较收敛速度,观察在不同的网格尺度下,最佳松弛因子的变化。
在这里插入图片描述

二、解题思路

本题为给定边界条件的泊松方程的求解问题。
在这里插入图片描述
采用 SOR 松弛法:
在这里插入图片描述
其中
β = Δ x Δ y \beta = \frac{\Delta x}{\Delta y} β=ΔyΔx

用 matlab 编写函数
f u n c t i o n n = S O R ( w ) function \quad n = SOR(w) functionn=SOR(w)
其中参数 w 为松弛因子 ,返回值 n 为收敛所需要的迭代次数 。判断收敛的条件为

∑ i , j ( T i , j n + 1 − T i , j n ) 2 < ϵ \sum_{i,j} (T_{i,j}^{n+1} - T_{i,j}^n)^2 < \epsilon i,j(Ti,jn+1Ti,jn)2<ϵ

function n = SOR(w)
xl = 1;
yl = 1;
n = 30;
hx = xl/n;
hy = yl/n;

T = zeros(n);
f = zeros(n);

T(:,1)=20;
T(:,end)=20;
T(1,:)=20;
T(end,:) = 100;

e = 1;
while(e >0.0001)
    n = n+1;
    T1 = sor(T,f,w,hx,hy,1);
    e = sum((T1(:)-T(:)).^2);
    T = T1;
end
contour(T,100);


function T = sor(T,f,w,dx,dy,N)
b = dx/dy;
B2 = b*b;
DX2 = dx*dx;
C = w/(2*(1+B2));
for t = 1:N
    for i =2:size(T,1)-1
        for j = 2:size(T,1)-1
        T(i,j) = (1-w)*T(i,j) + C*(T(i+1,j)+T(i-1,j) + ...
            B2*(T(i,j+1)+T(i,j-1))+DX2*f(i,j));
        end
    end
end

结果

在这里插入图片描述
不同网格尺度下最佳松弛因子的变化
在这里插入图片描述
可见随着网格数增加 ,最佳松弛因子随之增大 ,趋向 2.0

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值