【发布时间】:2011-11-15 15:01:26
【问题描述】:
我检查了有关拉格朗日插值的答案,但找不到适合我的问题的答案。我正在尝试将拉格朗日插值用于带有 matlab 的曲面。假设我有一个 x 和 y 向量和 f=f(x,y)。我想插入这个 f 函数。我认为,我所做的在数学上是正确的:
function q = laginterp(x,y,f,ff)
n = length(x);
m = length(y);
v = zeros(size(ff));
for k = 1:n
for l = 1:m
w1 = ones(size(ff));
w2 = ones(size(ff))
for j = [1:k-1 k+1:n]
for j = [1:l-1 l+1:n]
w1 = (x-x(j))./(x(k)-x(j)).*w1;
w2 = (y-y(i))./(y(l)-y(i)).*w2;
end
end
ff = ff + w1.*w2.*f(k,l);
end
end
这是我的功能,然后我正在等待任何给定 x,y,f 的答案
x= 0:4;
y = [-6 -3 -1 6];
f=[2 9 4 25 50];
v = laginterp(x,y,f,ff);
plot3(x,y,'o',f,q,'-')
我总是很感激任何帮助!
【问题讨论】:
-
我不太清楚这里的问题是什么。功能不行吗?另外,你应该看看vectorizing your code...四个
for循环几乎从来都不是Matlab的做事方式。
标签: matlab interpolation