我试图生成一个非均匀的1D网格,其中常数拉伸的值为0到1之间的值。
这是我尝试的代码,但我似乎无法让它工作。最终值永远不会是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
答案 0 :(得分:1)
如果您希望将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
确定为
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