language插值法和newton插值法的matlab程序
			 
			 
			
		
		
		
			
			function f=language(x,y,x0) 
syms t; 
if length(x)==length(y) 
    n=length(x); 
else 
    disp('x和y的维数不相等'); 
    return; 
end 
 
f=0.0; 
for i=1:n 
    l=y(i); 
    for j=1:i-1 
        l=l*(t-x(j))/(x(i)-x(j)); 
    end 
    for j=i+1:n 
        l=l*(t-x(j))/(x(i)-x(j)); 
    end 
     
    f=f+l; 
    simplify(f); 
     
    if i==n 
        if nargin==3 
            f=subs(f,'t',x0); 
        else 
            f=collect(f); 
            f=vpa(f,6); 
        end 
    end 
end 
 
 
function f=newton(x,y,x0) 
syms t; 
if length(x)==length(y) 
    n=length(x); 
    c(1:n)=0.0; 
else 
    disp('x和y的维数不相等!'); 
    return; 
end 
 
f=y(1); 
y1=0; 
l=1; 
 
for i=1:n-1 
    for j=i+1:n 
        y1(j)=(y(j)-y(i))/(x(j)-x(i)); 
    end 
    c(i)=y1(i+1); 
    l=l*(t-x(i)); 
    f=f+c(i)*l; 
    simplify(f); 
    y=y1; 
     
    if i==n-1 
        if nargin==3 
            f=subs(f,'t',x0); 
        else  
            f=collect(f); 
            f=vpa(f,6); 
        end 
    end 
end
		 
		
		
		
		
		
		
		
	 |