數值計算方法實驗之按照按三彎矩方程及追趕法的三次樣條插值 (MATLAB 代碼)


一、實驗目的

    在已知f(x),x∈[a,b]的表達式,但函數值不便計算,或不知f(x),x∈[a,b]而又需要給出其在[a,b]上的值時,按插值原則f(xi)= yi(i= 0,1…….,n)求出簡單函數P(x)(常是多項式),使其在插值基點xi,處成立P(xi)= yi(i=0,1,……,n),而在[a,b]上的其它點處成立f(x)≈P(x).

二、實驗原理

 

三、實驗程序

  

四、實驗內容

  求之f(x)=x4在[0,2]上按5個等距節點確定的Lagrange插值多項式.

五、實驗程序

  

syms x
f(x)=x^4;
a=0;
b=2;      %左右斷點值
n=4;      %節點數為n+1
h=(b-a)/n;%h為相鄰節點間的間距
u=1/2;
v=1/2;    %等距節點下u,v的值一直為1/2
d=zeros(n+1,1);
D=zeros(n+1,n+1);
S=cell(4,1);
d(1)=12/h*((f(a+h)-f(a))/h-subs(diff(f(x)),x,a));
d(n+1)=12/h*(subs(diff(f(x)),x,b)-(f(b)-f(b-h))/h);
D(n+1,n+1)=4;
for i=2:n
    d(i)=12*((f(a+h*i)-f(a+h*(i-1)))/h-(f(a+h*(i-1))-f(a+h*(i-2))/h))/(2*h);
end
for j=1:n
    D(j,j)=4;
    D(j,j+1)=v;
    D(j+1,j)=u;
end
M=linsolve(D,d);
for k=1:n
    s1=M(k,1)*(a+h*k-x)^3/(6*h)+M(k+1,1)*(x-a-h*(k-1))/(6*h)+f(a+h*(k-1)-M(k,1)*h*h/6)*((a+h*k-x)^3/(6*h)+M(k+1,1)*(x-a-h*(k-1)))/h+(f(a+h*k)-M(k+1,1)*h*h/6)*(x-a-h*(k-1))/h;
    s2=vpa(s1,4);
    S{k,1}=char(s2); 
end

 

五、運算結果 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM