MatLab中的差分方程偏微分方程

计算科学 matlab pde 有限差分
2021-12-15 12:10:39

我想编写以下差分方程。


查找号码vi,j所以对于 , 另外它满足条件,对于 : 最后,条件,对于1i40j5

vi,j+1=(0.1)vi+1,j+(0.8)vi,j+(0.1)vi1,j
0j5
v0,j=(0.2)j and v5,j=25+(0.2)j
0i5
vi,0=i2


我制作了这个网格的图片,其中在标准 xy 平面上绘制。vi,j

在此处输入图像描述

红点,是给我们的信息。中间网格是未知的,但我们可以从差分方程中确定。的值在红点旁边以黑色数字绘制。vi,j

中间的树是差分方程的可视化。紫色点是它下面三个点的加权平均值,数字表示它是如何平均的。


我想在 MatLab然后使用“surf”命令绘制近似曲面。vi,j

1个回答

根据您在图片中定义模具的方式,我认为您的公式有误,应该是: 你已经切换了,在你的初始条件下也是一样的。

vi+1,j=(0.1)vi,j1+(0.8)vi,j+(0.1)vi+1,j
ij

实现非常简单。使用 定义网格meshgrid定义v为具有相同维度的矩阵。前两个循环定义了边界条件。最后一个是差分公式。然后,一切就绪surf

clc;clear all;

N=5;M=5;
[X,Y]=meshgrid(0:N,0:M);
v=zeros(N+1,M+1);

for i=1:M+1
     v(i,1)=0.2*(i-1);
     v(i,end)=v(i,1)+25;
end
for j=1:N+1
    v(1,j)=(j-1)*(j-1);
end

for i=1:N
    for j=2:M
        v(i+1,j)=0.1*v(i,j-1)+0.8*v(i,j)+0.1*v(i,j+1);
    end
end

surf(X,Y,v)