MATLAB实现牛顿插值的源程序
生活随笔
收集整理的這篇文章主要介紹了
MATLAB实现牛顿插值的源程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
function yi=Newton(x,y,xi)
%Newton插值方法,給定一系列插值的點(x,y),得到在x=xi處的,牛頓插值多項的值yi
n=length(x);
m=length(y);
if m~=n
??? error('x,y的長度不一樣,請重新輸入!');
??? return
end
A=zeros(n);??? %定義差商表
A(:,1)=y;????? %差商表第一列為y
for j=2:n?????????????? %j為列標
??? for i=1:(n-j+1)???? %i為行標
??????? A(i,j)=(A(i+1,j-1)-A(i,j-1))/(x(i+j-1)-x(i));?? %計算差商表
??? end
end
%根據差商表,求對應的牛頓插值多項式在x=xi處的值yi
N(1)=A(1,1);
for j=2:n
??? T=1;
??? for i=1:j-1
??????? T=T*(xi-x(i));
??? end
??? N(j)=A(1,j)*T;
end
yi=sum(N);?? %將x=xi帶入牛頓插值多項式,得到的yi的值
end
%Newton插值方法,給定一系列插值的點(x,y),得到在x=xi處的,牛頓插值多項的值yi
n=length(x);
m=length(y);
if m~=n
??? error('x,y的長度不一樣,請重新輸入!');
??? return
end
A=zeros(n);??? %定義差商表
A(:,1)=y;????? %差商表第一列為y
for j=2:n?????????????? %j為列標
??? for i=1:(n-j+1)???? %i為行標
??????? A(i,j)=(A(i+1,j-1)-A(i,j-1))/(x(i+j-1)-x(i));?? %計算差商表
??? end
end
%根據差商表,求對應的牛頓插值多項式在x=xi處的值yi
N(1)=A(1,1);
for j=2:n
??? T=1;
??? for i=1:j-1
??????? T=T*(xi-x(i));
??? end
??? N(j)=A(1,j)*T;
end
yi=sum(N);?? %將x=xi帶入牛頓插值多項式,得到的yi的值
end
總結
以上是生活随笔為你收集整理的MATLAB实现牛顿插值的源程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB句柄相关函数和代码示例(设置
- 下一篇: MATLAB编程经典程序 素数的判断,求