本文主要是介绍拉格朗日插值法——matlab代码实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
公式:
function y=lagrange(x0,y0,x)
% 给定一系列点x0,y0
% x是我们要预测的值,由于可以有多个,因此用向量表示
% y返回我们的估计值,由于可以有多个,因此用向量表示n = length(x);% 要预测的个数y = zeros(n);% 初始化,并赋初值0for k = 1:length(x0)j_no_k=find((1:length(x0))~=k);% 在这里,find函数用于返回一个向量中不为下标k的元素(下标从1开始)y1=1;for j = 1:length(j_no_k)y1 = y1.*(x-x0(j_no_k(j))); % ∏(x-xj)endy = y + y1*y0(k)/prod(x0(k)-x0(j_no_k));% prod函数返回数组元素的乘积end
end
验证:给出f(x)=ln(x)
>> format(long)
>> xx =0.400000000000000 0.500000000000000 0.700000000000000 0.800000000000000>> yy =-0.916291000000000 -0.693147000000000 -0.356675000000000 -0.223144000000000>> lagrange(x,y,[0.4,0.54,0.6])ans =-0.916291000000000 -0.615647384000000 -0.509975500000000
其中0.6的精确解为-0.5108256237659907
0.54的精确解为-0.616186139423817
可见,有适当的点之后,用该法估计是不错的选择。
这篇关于拉格朗日插值法——matlab代码实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!