2016-11-15 6 views
1

y=x^2+xe^(x)のMATLABでLagrange補間法を計算しようとしました。そうx0=4.7のための結果だったLagrangeの補間符号化の失敗結果

clc 
clear 
close all 

x0=4.7; 
n=10; 
x=linspace(0,5,n); 
y=x.^2+x.*exp(x); 

syms t 
L=sym(ones(1,n)); 
P_x=sym(0); 
for i=1:n 
    for j=1:n 
     L_improcess=(t-x(j))/(x(i)-x(j)); 
     if(i==j) 
      continue 
     end 
     L(i)=L(i)*L_improcess; 
     P_x=y(i)*L(i)+P_x; 
    end 
end 
P=double(subs(P_x,t,x0)); 
disp(['Lagrange interpolation: P= ',num2str(P)]) 
disp(['the real value from original function is:' num2str(x0^2+x0*exp(x0))]) 

:私は、次のコードを書いた私は思ったんだけど

Lagrange interpolation: P= 20195.8626 
the real value from original function is:538.8417 

どのように2つの結果の間の差(両者はほぼ同じでなければなりません) ラグランジュf(x)の補間方法は、このようなものです:

enter image description here

よりinformatラグランジュ補間に関するイオンが利用可能です here

答えて

1

このライン:

P_x=y(i)*L(i)+P_x; 

が私の上にループであるべきではなく、J。

関連する問題