MATLAB中非均匀一维网格的生成

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(

我试图生成一个非均匀的1D网格,该网格通过0到1之间的值r进行恒定拉伸

这是我尝试过的代码,但我似乎无法让它工作。最终的值永远不是1,我不确定这是否是因为索引的数量需要改变,以便总距离保持不变。我是新手,我以前从未做过任何非结构化网格,所以任何帮助都会非常好

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