稳态二维泊松方程,边界条件

44视图(30天)
Anitha Limann
Anitha Limann 2023年5月7日16:41
编辑: Anitha Limann2023年5月8日17点
你好,
我试图解决稳态二维泊松方程的两种脊传播问题。我已经介绍了边界条件参加。不过虽然我不应该流在顶部和底部边界可以看到我做得到的合成图像流跨越这些边界。这给我牛眼睛轮廓传播山脊但我应该得到马鞋的形状。
代码解决了二维稳态泊松方程采用有限差分法。的 泊松方程给出:
∇²φ(x, y) = Gstar (x, y)
φ(x, y)是未知函数和Gstar (x, y)是一个已知的函数。解在一个方形域狄利克雷边界条件。可能不应该这种靶心形状。潜在的山脊应该低,增加向边界。在顶部和底部边界附近的山脊我知道我应该得到一个形状类似于马鞋但正如你所看到的东西是不正确的边界条件。顶部和底部边界dphi / dx应该是0,我以为我做的,但我不能得到这个工作。
我不知道这是一个数学问题或Matlab的问题了。请帮我解决这个问题。
% %定义网格参数
x = 0:5:500;dx = x - x (1) (2);nx =长度(x);
y = 0:5:500;dy = y (2) - y (1);纽约=长度(y);
%定义脊位置
r1_x = 200;
r1_y = 250:500;
r2_x = 400;
r2_y = 0:250;
%为策划创建meshgrid
[xx, yy] = meshgrid (x, y);
upper_half = yy > = 250;
lower_half = yy < 250;
%应用年龄值上下部分的网格
t_upper = abs (xx - r1_x) / 4;
t_lower = abs (xx - r2_x) / 4;
t = 0(大小(xx));
t (upper_half) = t_upper (upper_half);
t (lower_half) = t_lower (lower_half);
t = max (0.1 t);
%计算g的微分
G = 0.11. /(2 *倍根号(t));
%忽略无穷值
数= 0;
Gsum = 0;
我= 1:nx
j = 1:纽约
如果G (i, j) < = 0.11
Gsum = Gsum + G (i, j);
数=计数+ 1;
结束
结束
结束
%计算均值
Gmean = Gsum /计数;
Gstar = G-Gmean;
% %计算势用泊松方程(del ^ 2 *潜在= Gstar)
φ= 0 (nx、纽约);%初始化解决方案的矩阵
%顶部边界条件
j = 2: nx-1
φ(j) =φ(j - 1) +φ(1 + 1)+φ(j) +φ(j) - (dx ^ 2 * Gstar (j) / 4);
结束
%底部边界条件
j = 2: nx-1
φ(ny, j) =φ(纽约,j - 1) +φ(纽约,j + 1) +φ(ny-1 j) +φ(ny-1 j)——(dx ^ 2 * Gstar (ny, j) / 4);
结束
%左边界条件
我= 2:ny-1
φ(我,1)=φ(我,2)+φ(我,2)+φ(1张)+φ(i + 1, - 1) - (dy ^ 2 * Gstar(我,1)/ 4);
结束
%对边界条件
我= 2:ny-1
φ(我,结束)=φ(我end-1) +φ(我end-1) +φ(张、结束)+φ(i + 1、结束)- (dy ^ 2 * Gstar(我)/ 4);
结束
%右上角
φ(1,1)= (dx ^ 2 * dy ^ 2 / (2 * (dx ^ 2 + dy ^ 2))) *((2 *(φ(2,1))/ dx ^ 2) +(2 *(φ(1、2))/ dy ^ 2)——Gstar (1,1));
%左上角落
φ(nx) = (dx ^ 2 * dy ^ 2 / (2 * (dx ^ 2 + dy ^ 2))) *((2 *(φ(2,nx)) / dx ^ 2) +(2 *(φ(nx-1)) / dy ^ 2)——Gstar (nx));
%右下角
φ(纽约,1)= (dx ^ 2 * dy ^ 2 / (2 * (dx ^ 2 + dy ^ 2))) *((2 *(φ(ny-1, 1)) / dx ^ 2) +(2 *(φ(ny, 2)) / dy ^ 2)——Gstar(纽约,1));
%左下角
φ(ny, nx) = (dx ^ 2 * dy ^ 2 / (2 * (dx ^ 2 + dy ^ 2))) *((2 *(φ(ny-1 nx)) / dx ^ 2) +(2 *(φ(纽约,nx-1)) / dy ^ 2)——Gstar (ny, nx));
% %
%雅可比迭代法
麦克斯特= 10000;%的最大迭代数
托尔= 1 e-6;%对收敛
iter = 1:麦克斯特
phi_old =φ;
我= 2:ny-1
j = 2: nx-1
φ(i, j) = (dx ^ 2 * dy ^ 2 / (2 * (dx ^ 2 + dy ^ 2))) *(((φ(i + 1, j) +φ(张,j)) / dx ^ 2) +((φ(i, j + 1) +φ(i, j - 1)) / dy ^ 2)——Gstar (i, j));
结束
结束
E = max (abs(φ(:)-phi_old (:)));
如果E <托尔%收敛检查
打破;
结束
结束
% %将潜力转化为速度(u和v组件)
p =重塑(φ,ny, nx);
u = 0 * p;
v = 0 * p;
u (: 2: end-1) = - (p(:, 3:结束)- p (:, 1: end-2)) / (2 * dx);
v (2: end-1:) = (p(3:最终,:)- p (1: end-2,:)) / (2 * (dy);
规模= 5;
图;持有;轴填满;
q =颤抖(x, y, u, v,规模);
轮廓(x, y, p,线宽= 1)
4评论
Anitha Limann
Anitha Limann 2023年5月8日16:39
编辑:Anitha Limann 2023年5月8日16:47
代码解决了二维稳态泊松方程采用有限差分法。的 泊松方程给出:
∇²φ(x, y) = Gstar (x, y)
φ(x, y)是未知函数和Gstar (x, y)是一个已知的函数。解在一个方形域狄利克雷边界条件。可能不应该这种靶心形状。潜在的山脊应该低,增加向边界。在顶部和底部边界附近的山脊我知道我应该得到一个形状类似于马鞋但正如你所看到的东西是不正确的边界条件。顶部和底部边界dphi / dx应该是0,我以为我做的,但我不能得到这个工作。
我也得到相同的情节从使用phi_old代替φ。
谢谢你!

登录置评。

答案(0)

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!