函數yy =拉格朗日(x1,y1,xx)
%本程序是拉格朗日1插補,其中X1和Y1。
%是插值節點和節點上的函數值,輸出是插值點xx的函數值。
%xx可以是壹個向量。
符號x
n =長度(x 1);
對於i=1:n
t = x 1;t(I)=[];L(i)=prod((x-t)。/(x 1(I)-t));% L向量用於存儲插值基函數。
結束
u = sum(l . * y 1);
P=simplify(u)% p是簡化的拉格朗日插值函數(字符串)。
yy=subs(p,x,xx);
clf
繪圖(x1,y1,' ro ',xx,yy,' * ')
========
命令窗口命令和結果
格式長g
& gt& gt拉格朗日([11 12],[0.190809 0.207912],11.5)
p =
(616200515415341 * x)/36028797018963968+96413060822745/36028797018963968
ans =
0.1993605
& gt& gt拉格朗日([11 12 13],[0.190809 0.207912 0.224951],11.5)
p =
-(1152921504607*x^2)/36028797018963968+(321358855010651 * x)/18014398509481984-55772577785379/36028797018963968
ans =
0.1993685
& gt& gtsin(11.5 * pi/180)
ans = 0.199367934417197
(2)
函數f =牛頓(x,y,x0)
%這個程序是牛頓插值法,其中x,y
%是插值節點和節點上的函數值,輸出是插值點x0的函數值。
%x0可以是壹個向量。
syms t;
if(長度(x) ==長度(y))
n =長度(x);
c(1:n)= 0.0;
其他
disp(' x和y的維數不相等!');
返回;
結束
f = y(1);
y 1 = 0;
l = 1;
for(i=1:n-1)
for(j=i+1:n)
y 1(j)=(y(j)-y(I))/(x(j)-x(I));
結束
c(I)= y 1(I+1);
l = l *(t-x(I));
f = f+c(I)* l;
簡化(f)
y = y 1;
如果(i==n-1)
if(nargin == 3)
f = subs(f,' t ',x0);
其他
f =收集(f);%展開插值多項式
f = vpa(f,6);
結束
結束
結束
==========
fn =牛頓([11 12],[0.190809 0.207912],11.5)
ans =
(616200515415341 * t)/36028797018963968+96413060822745/36028797018963968
fn =
0.1993605
& gt& gtfn =牛頓([11 12 13],[0.190809 0.207912 0.224951],11.5)
ans =
(616200515415341 * t)/36028797018963968+96413060822745/36028797018963968
ans =
-(1152921504607*t^2)/36028797018963968+(321358855010651 * t)/18014398509481984-55772577785379/36028797018963968
fn =
0.1993685