MATLAB中非均匀一维网格的生成
我试图生成一个非均匀的1D网格,该网格通过0到1之间的值r进行恒定拉伸 这是我尝试过的代码,但我似乎无法让它工作。最终的值永远不是1,我不确定这是否是因为索引的数量需要改变,以便总距离保持不变。我是新手,我以前从未做过任何非结构化网格,所以任何帮助都会非常好MATLAB中非均匀一维网格的生成,matlab,mesh,Matlab,Mesh,我试图生成一个非均匀的1D网格,该网格通过0到1之间的值r进行恒定拉伸 这是我尝试过的代码,但我似乎无法让它工作。最终的值永远不是1,我不确定这是否是因为索引的数量需要改变,以便总距离保持不变。我是新手,我以前从未做过任何非结构化网格,所以任何帮助都会非常好 n = 20; % number of indices h = 1/(n-1); % unstretched grid spacing r = .9; % stretching factor x2 = zeros(
n = 20; % number of indices
h = 1/(n-1); % unstretched grid spacing
r = .9; % stretching factor
x2 = zeros(n,1);
for i=2:n
x2(i) = x2(i-1)+r^(i-2)*h;
end
如果要将
n
节点按几何级数放置在0
和1
之间,且比率r
,则节点将放置在
x(1) = 0
x(2) = h
x(3) = h + r*h
x(4) = h + r*h + r^2*h
...
x(n) = h*(1 + r + r^3 + ... + r^(n-2)) = 1
在这里,我们可以确定h
as
h = 1/sum(r^j, j = 0..(n-2)) = (r - 1)/(r^(n-1) - 1)
然后,我们可以放置所有n
节点:
h = (r - 1)/(r^(n-1) - 1); % 1st grid spacing
x = [0, h*cumsum(r.^(0:(n-2)))];
n=5
和r=0.9
的解决方案:
x =
0.00000 0.29078 0.55249 0.78802 1.00000