目录

  • 前言
  • 一、三次样条插值
    • 1. 三次样条函数定义
    • 2. 三次样条插值多项式
    • 3. 三次样条插值求法
      • 3.1 第一种类型
      • 3.2 第二种类型
      • 3.3 第三种类型
  • 二、三次样条插值公式matlab程序
    • 1. 三次样条插值公式(第二种类型)
    • 2 例题
  • 三、 总结
  • 四、 补充
  • 五、插值法专栏

前言

  必看 回顾前篇例题中的另一问题使用三次样条插值函数来求解插值点的函数值,那么本篇文章将继续承接上篇内容,主要讲述三次样条插值函数的原理及如何利用matlab来实现编程。如果没有看过前一篇的读者可以点击此链接: 数值分析(一) 牛顿插值法及matlab代码 回顾一下

一、三次样条插值

1. 三次样条函数定义

  定义:函数定义在区间 [ a , b ] \left[a,b\right] [a,b]上,给定n+1个节点和一组与之对应的函数值,且函数满足:
     1. 每个节点上满足 S ( x i ) = f ( x i ) ( i = 0 , 1 , ⋯ , n − 1 ) S\left(x_i\right)=f\left(x_i\right)\;\;\;\;\left(i=0,1,\cdots,n-1\right) S(xi​)=f(xi​)(i=0,1,⋯,n−1)
     2. 在 [ a , b ] \left[a,b\right] [a,b]上有连续的二阶导数
     3. 在每个小区间 [ x i , x i + 1 ] ( i = 0 , 1 , ⋯ , n − 1 ) \left[x_i,x_{i+1}\right]\left(i=0,1,\cdots,n-1\right) [xi​,xi+1​](i=0,1,⋯,n−1)上是一个三次多项式
     则称 S ( x i ) S\left(x_i\right) S(xi​)为 三次样条插值函数

2. 三次样条插值多项式

  三次样条插值函数 S ( x ) S\left(x\right) S(x)是一个分段三次多项式,要求出 S ( x ) S\left(x\right) S(x),在每个小区间 [ x i , x i + 1 ] \left[x_i,x_{i+1}\right] [xi​,xi+1​]上要确定4个待定参数,若用 S i ( x ) S_i\left(x\right) Si​(x)表示它在第i个子区间 [ x i , x i + 1 ] \left[x_i,x_{i+1}\right] [xi​,xi+1​]上的表达式,则 S i ( x ) = a i 0 + a i 1 x + a i 2 x 2 + a i 3 x 3 ( i = 0 , 1 , ⋯ , n − 1 ) S_i\left(x\right)=a_{i0}\;+a_{i1}x+a_{i2}x^2\;+a_{i3}x^3\;\;\;\left(i=0,1,\cdots,n-1\right) Si​(x)=ai0​+ai1​x+ai2​x2+ai3​x3(i=0,1,⋯,n−1)注意 三次多项式 S ( x ) S\left(x\right) S(x)及其一阶导数 S ′ ( x ) S'\left(x\right) S′(x)和二阶导 S ′ ′ ( x ) S''\left(x\right) S′′(x)在整个插值区间上连续,在上述条件中再加入边界条件,即可求出各系数,常用的边界条件有三种类型。

3. 三次样条插值求法

  在子区间 [ x i , x i + 1 ] \left[x_i,x_{i+1}\right] [xi​,xi+1​]上 S ( x ) = S i ( x ) S\left(x\right)=S_i\left(x\right) S(x)=Si​(x)是三次多项式,所以 在此小区间上 S ′ ′ ( x ) S''\left(x\right) S′′(x)是x的线性函数,且因为 S ′ ′ ( x i − 1 ) = M i − 1 , S ′ ′ ( x i ) = M i x ∈ [ x i − 1 , x i ] S''\left(x_{i-1}\right)=M_{i-1},S''\left(x_i\right)=M_i\;\;\;\;x\in\left[x_{i-1},x_i\right] S′′(xi−1​)=Mi−1​,S′′(xi​)=Mi​x∈[xi−1​,xi​],用线性插值,可知其表达式为 S i ′ ′ ( x ) = M i − 1 x − x i x i − 1 − x i + M i x − x i − 1 x i − x i − 1 S_i''\left(x\right)=M_{i-1}\frac{x-x_i}{x_{i-1}-x_i}+M_i\frac{x-x_{i-1}}{x_i-x_{i-1}} Si′′​(x)=Mi−1​xi−1​−xi​x−xi​​+Mi​xi​−xi−1​x−xi−1​​  记 h i = x i − x i − 1 h_i=x_i-x_{i-1} hi​=xi​−xi−1​,根据上式则可得到 S i ′ ′ ( x ) = M i − 1 x i − x h i + M i x − x i − 1 h i S_i''\left(x\right)=M_{i-1}\frac{x_i-x}{h_i}+M_i\frac{x-x_{i-1}}{h_i} Si′′​(x)=Mi−1​hi​xi​−x​+Mi​hi​x−xi−1​​  通过两次连续积分可得到: S i = M i − 1 ( x i − x ) 3 6 h i + M i ( x − x i − 1 ) 3 6 h i + A i ( x i − x ) + B i ( x − x i − 1 ) S_i=M_{i-1}\frac{\left(x_i-x\right)^3}{6h_i}+M_i\frac{\left(x-x_{i-1}\right)^3}{6h_i}+A_i\left(x_i-x\right)+B_i\left(x-x_{i-1}\right) Si​=Mi−1​6hi​(xi​−x)3​+Mi​6hi​(x−xi−1​)3​+Ai​(xi​−x)+Bi​(x−xi−1​)  其中 A i A_i Ai​, B i B_i Bi​是积分常数根据插值条件 S ( x i − 1 ) = f ( x i − 1 ) , S ( x i ) = f ( x i ) S\left(x_{i-1}\right)=f\left(x_{i-1}\right),S\left(x_i\right)=f\left(x_i\right) S(xi−1​)=f(xi−1​),S(xi​)=f(xi​)确定,即 A i A_i Ai​, B i B_i Bi​满足: S ( x i − 1 ) = 1 6 M i − 1 h i 2 + A i h i = f ( x i − 1 ) , S ( x i ) = 1 6 M i h i 2 + B i h i = f ( x i ) S\left(x_{i-1}\right)=\frac16M_{i-1}h_i^2+A_ih_i=f\left(x_{i-1}\right),S\left(x_i\right)=\frac16M_ih_i^2+B_ih_i=f\left(x_i\right) S(xi−1​)=61​Mi−1​hi2​+Ai​hi​=f(xi−1​),S(xi​)=61​Mi​hi2​+Bi​hi​=f(xi​)  并记 f ( x i − 1 ) = y i − 1 , f ( x i ) = y i f\left(x_{i-1}\right)=y_{i-1},f\left(x_i\right)=y_i f(xi−1​)=yi−1​,f(xi​)=yi​,则得到 A i = 1 h i ( y i − 1 − 1 6 M i − 1 h i 2 ) , B i = 1 h i ( y i − 1 6 M i h i 2 ) A_i=\frac1{h_i}\left(y_{i-1}-\frac16M_{i-1}h_i^2\right),B_i=\frac1{h_i}\left(y_i-\frac16M_ih_i^2\right) Ai​=hi​1​(yi−1​−61​Mi−1​hi2​),Bi​=hi​1​(yi​−61​Mi​hi2​)  将求得的 A i A_i Ai​, B i B_i Bi​代入式子中 S i = M i − 1 ( x i − x ) 3 6 h i + M i ( x − x i − 1 ) 3 6 h i + 1 h i ( y i − 1 − 1 6 M i − 1 h i 2 ) ( x i − x ) + 1 h i ( y i − 1 6 M i h i 2 ) ( x − x i − 1 ) ( x ∈ [ x i − 1 , x i ] , i = 1 , 2 , ⋯ , n ) S_i=M_{i-1}\frac{\left(x_i-x\right)^3}{6h_i}+M_i\frac{\left(x-x_{i-1}\right)^3}{6h_i}+\frac1{h_i}\left(y_{i-1}-\frac16M_{i-1}h_i^2\right)\left(x_i-x\right)+\frac1{h_i}\left(y_i-\frac16M_ih_i^2\right)\left(x-x_{i-1}\right)\\\left(x\in\left[x_{i-1},x_i\right],i=1,2,\cdots,n\right) Si​=Mi−1​6hi​(xi​−x)3​+Mi​6hi​(x−xi−1​)3​+hi​1​(yi−1​−61​Mi−1​hi2​)(xi​−x)+hi​1​(yi​−61​Mi​hi2​)(x−xi−1​)(x∈[xi−1​,xi​],i=1,2,⋯,n)  由上讨论可知,只要确定 M 0 , M 1 , … , M n M_0,M_1,\dots,M_n M0​,M1​,…,Mn​ 这n+1个值, 就可定出三样条插值函数S(x)。
  为了求出 M i ( i = 0 , 1 , ⋯ , n ) M_i\left(i=0,1,\cdots,n\right) Mi​(i=0,1,⋯,n),利用一阶导数在子区间 [ x i , x i + 1 ] \left[x_i,x_{i+1}\right] [xi​,xi+1​]连接点上连续的条件 S ′ ( x i − 0 ) = S ′ ( x i + 0 ) S'\left(x_i-0\right)=S'\left(x_i+0\right) S′(xi​−0)=S′(xi​+0),通过一系列变换
  求得 h i h i + h i + 1 M i − 1 + 2 M i + h i + 1 h i + h i + 1 M i + 1 = 6 h i + h i + 1 ( y i + 1 − y i h i + 1 − y i − y i − 1 h i ) \frac{h_i}{h_i+h_{i+1}}M_{i-1}+2M_i+\frac{h_{i+1}}{h_i+h_{i+1}}M_{i+1}=\frac6{h_i+h_{i+1}}\left(\frac{y_{i+1}-y_i}{h_{i+1}}-\frac{y_i-y_{i-1}}{h_{i}}\right) hi​+hi+1​hi​​Mi−1​+2Mi​+hi​+hi+1​hi+1​​Mi+1​=hi​+hi+1​6​(hi+1​yi+1​−yi​​−hi​yi​−yi−1​​)
(注意:由于过程有点小繁琐,本博主就偷个懒,直接把求好的公式展示出来。如果有读者非常想要了解详细计算步骤,读者可以参考教材《数值分析第5版__李庆扬,王能超,易大义编_北京:清华大学出版社》,在书的P42-43页 可以找到过程)
  
  若记: { μ i = h i h i + h i + 1 λ i = h i + 1 h i + h i + 1 = 1 − μ i g i = 6 h i + h i + 1 ( y i + 1 − y i h i + 1 − y i − y i − 1 h i + 1 ) = 6 h i + h i + 1 ( f [ x i , x i + 1 ] − f [ x i − 1 , x i ] ) \left\{\begin{array}{l}\mu_i=\frac{h_i}{h_i+h_{i+1}}\\\\\lambda_i=\frac{h_{i+1}}{h_i+h_{i+1}}=1-\mu_i\\\\g_i=\frac6{h_i+h_{i+1}}\left(\frac{y_{i+1}-y_i}{h_{i+1}}-\frac{y_i-y_{i-1}}{h_{i+1}}\right)=\frac6{h_i+h_{i+1}}\left(f\left[x_i,x_{i+1}\right]-f\left[x_{i-1},x_i\right]\right)\end{array}\right. ⎩ ⎨ ⎧​μi​=hi​+hi+1​hi​​λi​=hi​+hi+1​hi+1​​=1−μi​gi​=hi​+hi+1​6​(hi+1​yi+1​−yi​​−hi+1​yi​−yi−1​​)=hi​+hi+1​6​(f[xi​,xi+1​]−f[xi−1​,xi​])​
  则简写方程 μ i M i − 1 + 2 M i + λ i M i + 1 = g i ( i = 1 , 2 , ⋯ , n − 1 ) \mu_iM_{i-1}+2M_i+\lambda_iM_{i+1}=g_i\;\;\;\;\;\;\;\;\left(i=1,2,\cdots,n-1\right) μi​Mi−1​+2Mi​+λi​Mi+1​=gi​(i=1,2,⋯,n−1)
  即: { μ 1 M 0 + 2 M 1 + λ 1 M 2 = g 1 μ 2 M 1 + 2 M 2 + λ 2 M 3 = g 2 ⋯ μ n − 1 M n − 2 + 2 M n − 1 + λ n − 1 M n = g n − 1 \left\{\begin{array}{l}\mu_1M_0+2M_1+\lambda_1M_2=g_1\\\mu_2M1+2M_2+\lambda_2M_3=g_2\\\cdots\\\mu_{n-1}M_{n-2}+2M_{n-1}+\lambda_{n-1}M_n=g_{n-1}\end{array}\right. ⎩ ⎨ ⎧​μ1​M0​+2M1​+λ1​M2​=g1​μ2​M1+2M2​+λ2​M3​=g2​⋯μn−1​Mn−2​+2Mn−1​+λn−1​Mn​=gn−1​​

3.1 第一种类型

  给定两端点的一阶导数值: S ′ ( x 0 ) = f ′ ( x 0 ) = y 0 ′ , S ′ ( x n ) = f ′ ( x n ) = y n ′ S'\left(x_0\right)=f'\left(x_0\right)=y'_0,S'\left(x_n\right)=f'\left(x_n\right)=y'_n S′(x0​)=f′(x0​)=y0′​,S′(xn​)=f′(xn​)=yn′​
  根据第一类型条件可得: 2 M 0 + M 1 = 6 h 1 ( y 1 − y 0 h 1 − y 0 ′ ) M n − 1 + 2 M n = 6 h n ( y n ′ − y n − y n − 1 h n ) 2M_0+M_1=\frac6{h_1}\left(\frac{y_1-y_0}{h_1}-y'_0\right)\\M_{n-1}+2M_n=\frac6{h_n}\left(y'_n-\frac{y_n-y_{n-1}}{h_n}\right) 2M0​+M1​=h1​6​(h1​y1​−y0​​−y0′​)Mn−1​+2Mn​=hn​6​(yn′​−hn​yn​−yn−1​​)  根据之前式子整合后可以得到关于 M 0 , M 1 , ⋯ M n M_0,M_1,\cdots M_n M0​,M1​,⋯Mn​线性方程方程如下: [ 2 1 μ 1 2 λ 1 ⋱ ⋱ ⋱ μ n − 1 2 λ n − 1 1 2 ] [ M 0 M 1 ⋮ M n − 1 M n ] = [ g 0 g 1 ⋮ g n − 1 g n ] \begin{bmatrix}2&1&&&\\\mu_1&2&\lambda_1&&\\&\ddots&\ddots&\ddots&\\&&\mu_{n-1}&2&\lambda_{n-1}\\&&&1&2\end{bmatrix}\begin{bmatrix}M_0\\M_1\\\vdots\\M_{n-1}\\M_n\end{bmatrix}=\begin{bmatrix}g_0\\g_1\\\vdots\\g_{n-1}\\g_n\end{bmatrix} ​2μ1​​12⋱​λ1​⋱μn−1​​⋱21​λn−1​2​ ​ ​M0​M1​⋮Mn−1​Mn​​ ​= ​g0​g1​⋮gn−1​gn​​ ​  其中 { g 0 = 6 h 1 ( f [ x 0 , x 1 ] − y 0 ′ ) g n = 6 h n ( y n ′ − f [ x n − 1 , x n ] ) \left\{\begin{array}{l}g_0=\frac6{h_1}\left(f\left[x_0,x_1\right]-y'_0\right)\\\\g_n=\frac6{h_n}\left(y'_n-f\left[x_{n-1},x_n\right]\right)\end{array}\right. ⎩ ⎨ ⎧​g0​=h1​6​(f[x0​,x1​]−y0′​)gn​=hn​6​(yn′​−f[xn−1​,xn​])​

3.2 第二种类型

  给定两端点的二阶导数值: S ′ ′ ( x 0 ) = f ′ ′ ( x 0 ) = y 0 ′ ′ , S ′ ′ ( x n ) = f ′ ′ ( x n ) = y n ′ ′ S''\left(x_0\right)=f''\left(x_0\right)=y''_0,S''\left(x_n\right)=f''\left(x_n\right)=y''_n S′′(x0​)=f′′(x0​)=y0′′​,S′′(xn​)=f′′(xn​)=yn′′​
  作为特例, S ′ ′ ( x 0 ) = S ′ ′ ( x n ) = 0 S''\left(x_0\right)=S''\left(x_n\right)=0 S′′(x0​)=S′′(xn​)=0称为 自然边界条件。满足自然边界条件的三次样条插值函数称为 自然样条插值函数
  其中令 M 0 = y 0 ′ ′ , M n = y n ′ ′ M_0=y''_0,M_n=y''_n M0​=y0′′​,Mn​=yn′′​  从而得到第二种类型关于 M 1 , M 2 , ⋯ M n − 1 M_1,M_2,\cdots M_{n-1} M1​,M2​,⋯Mn−1​线性方程方程 [ 2 λ 1 μ 2 2 λ 2 ⋱ ⋱ ⋱ μ n − 2 2 λ n − 2 μ n − 1 2 ] [ M 1 M 2 ⋮ M n − 2 M n − 1 ] = [ g 1 − μ 1 y 0 ′ ′ g 2 ⋮ g n − 2 g n − 1 − λ n − 1 y n ′ ′ ] \begin{bmatrix}2&\lambda_1&&&\\\mu_2&2&\lambda_2&&\\&\ddots&\ddots&\ddots&\\&&\mu_{n-2}&2&\lambda_{n-2}\\&&&\mu_{n-1}&2\end{bmatrix}\begin{bmatrix}M_1\\M_2\\\vdots\\M_{n-2}\\M_{n-1}\end{bmatrix}=\begin{bmatrix}g_1-\mu_1y''_0\\g_2\\\vdots\\g_{n-2}\\g_{n-1}-\lambda_{n-1}y''_n\end{bmatrix} ​2μ2​​λ1​2⋱​λ2​⋱μn−2​​⋱2μn−1​​λn−2​2​ ​ ​M1​M2​⋮Mn−2​Mn−1​​ ​= ​g1​−μ1​y0′′​g2​⋮gn−2​gn−1​−λn−1​yn′′​​ ​

3.3 第三种类型

  当 f ( x ) f\left(x\right) f(x)是以为 x n − x 0 x_n-x_0 xn​−x0​周期的函数时,则要求 S ( x ) S\left(x\right) S(x)也是周期函数,这时边界条件应满足当 f ( x 0 ) = f ( x n ) f\left(x_0\right)=f\left(x_n\right) f(x0​)=f(xn​)时, S ′ ( x 0 + 0 ) = S ′ ( x n − 0 ) , S ′ ′ ( x 0 + 0 ) = S ′ ′ ( x n − 0 ) S'\left(x_0+0\right)=S'\left(x_n-0\right),S''\left(x_0+0\right)=S''\left(x_n-0\right) S′(x0​+0)=S′(xn​−0),S′′(x0​+0)=S′′(xn​−0)  由上述条件可以得到: M 0 = M n , λ n M 1 + μ n M n − 1 + 2 M n = g n M_0=M_n,\lambda_nM_1+\mu_nM_{n-1}+2M_n=g_n M0​=Mn​,λn​M1​+μn​Mn−1​+2Mn​=gn​
  其中: { μ n = h n h 1 + h n + 1 λ i = h n h 1 + h n = 1 − μ i g i = 6 h 1 + h n ( f [ x 0 , x 1 ] − f [ x n − 1 , x n ] ) \left\{\begin{array}{l}\mu_n=\frac{h_n}{h_1+h_{n+1}}\\\\\lambda_i=\frac{h_n}{h_1+h_n}=1-\mu_i\\\\g_i=\frac6{h_1+h_n}\left(f\left[x_0,x_1\right]-f\left[x_{n-1},x_n\right]\right)\end{array}\right. ⎩ ⎨ ⎧​μn​=h1​+hn+1​hn​​λi​=h1​+hn​hn​​=1−μi​gi​=h1​+hn​6​(f[x0​,x1​]−f[xn−1​,xn​])​  关于 M 1 , M 2 , ⋯ M n M_1,M_2,\cdots M_n M1​,M2​,⋯Mn​线性方程 [ 2 λ 1 μ 1 μ 2 2 λ 2 ⋱ ⋱ ⋱ μ n − 1 2 λ n − 1 λ n μ n 2 ] [ M 1 M 2 ⋮ M n − 1 M n ] = [ g 1 g 2 ⋮ g n − 1 g n ] \begin{bmatrix}2&\lambda_1&&&\mu_1\\\mu_2&2&\lambda_2&&\\&\ddots&\ddots&\ddots&\\&&\mu_{n-1}&2&\lambda_{n-1}\\\lambda_n&&&\mu_n&2\end{bmatrix}\begin{bmatrix}M_1\\M_2\\\vdots\\M_{n-1}\\M_n\end{bmatrix}=\begin{bmatrix}g_1\\g_2\\\vdots\\g_{n-1}\\g_n\end{bmatrix} ​2μ2​λn​​λ1​2⋱​λ2​⋱μn−1​​⋱2μn​​μ1​λn−1​2​ ​ ​M1​M2​⋮Mn−1​Mn​​ ​= ​g1​g2​⋮gn−1​gn​​ ​

  读者注意:上述三种边界条件所求的三次样条插值函数各有所不同,虽然式子都长得差不多还是有很多细微的差别,请读者认真仔细阅读。
  

二、三次样条插值公式matlab程序

  本文章主要是衔接上篇文章的第二小问进行编写,在此先讲三次样条插值公式(第二类型),如有没看过前一章的读者可以点击此链接  数值分析(一) 牛顿插值法及matlab代码 回顾一下。

1. 三次样条插值公式(第二种类型)

  下面展示三次样条插值公式(第二种类型)代码

function [D,h,A,g,M]=threesimple(X,Y)
%        自然边界条件的三次样条函数(第二种边界条件)
%        此函数为M值求值函数
%        D,h,A,g,M输出量分别为系数矩阵D,插值宽度h,差商表A,g值,M值 n=length(X); A=zeros(n,n);A(:,1)=Y';D=zeros(n-2,n-2);g=zeros(n-2,1);for  j=2:nfor i=j:nA(i,j)=(A(i,j-1)- A(i-1,j-1))/(X(i)-X(i-j+1));endendfor i=1:n-1h(i)=X(i+1)-X(i);endfor i=1:n-2D(i,i)=2;g(i,1)=(6/(h(i+1)+h(i)))*(A(i+2,2)-A(i+1,2));endfor i=2:n-2u(i)=h(i)/(h(i)+h(i+1));n(i-1)=h(i)/(h(i-1)+h(i));D(i-1,i)=n(i-1);D(i,i-1)=u(i);             endM=D\g;M=[0;M;0];
endfunction s=threesimple1(X,Y,x)
%        自然边界条件函数
%        s函数表示三次样条插值函数插值点对应的函数值
%        根据三次样条参数函数求出的D,h,A,g,M
%        x表示求解插值点函数点,X为已知插值点        [D,h,A,g,M]=threesimple(X,Y)n=length(X); m=length(x);    for t=1:mfor i=1:n-1if (x(t)<=X(i+1))&&(x(t)>=X(i))p1=M(i,1)*(X(i+1)-x(t))^3/(6*h(i));p2=M(i+1,1)*(x(t)-X(i))^3/(6*h(i));p3=(A(i,1)-M(i,1)/6*(h(i))^2)*(X(i+1)-x(t))/h(i);p4=(A(i+1,1)-M(i+1,1)/6*(h(i))^2)*(x(t)-X(i))/h(i);s(t)=p1+p2+p3+p4; break;elses(t)=0; endendend
end

2 例题

  衔接上篇文章实例中提到的所有问题,在此篇文章中全部解决,问题如下:

  上篇文章已经处理了牛顿插值问题,那么接下来处理三次样条插值问题
  利用前文所给出的三次样条(自然边界条件)的函数代码,在命令框中输入如下语句:

clear all
format short
x=0.2:0.2:1;
y=[0.98 0.92 0.81 0.64 0.38];
x0=[0.2 0.28 1.0 1.08];
s=threesimple1(x,y,x0)

  运行后结果如下所示,在这里显示很多数据其中D,h,A,g,M输出量分别为系数矩阵D,插值宽度h,差商表A,g值,M值

  结果分析: 根据计算结果可以看到最后一个点x=1.08时输出值为0,由于原先给定的区间是[0,1]之间,而1.08是不在区间范围内的,所以在编写程序时,有个判断若超出区域边界值,直接将其函数值赋值0。
  题中还提及到将点画在坐标上,在命令行中输入代码段

plot(x0,s,'bp')
hold on
grid
plot(x0,y,'o')
xlabel('自变量 X'), ylabel('因变量 Y')
title('牛顿插值多项式与三次样条函数')
legend('三次样条插值点坐标','牛顿插值点坐标')

  显示的图如下所示:

  最后S(x)函数如下:(注意文章写的有点晚了就偷个懒,里面的M值有些没写,不过之前求的M值都有只需要往里填就行)

  根据有些读者建议,完善一下本文再将函数图像绘制出来代码如下:

clear all
format short
x=0.2:0.2:1;
y=[0.98 0.92 0.81 0.64 0.38];
x0=0.1:0.001:1.1;
s=threesimple1(x,y,x0)
plot(x0,s)
hold on
grid on
plot(x,y,'o')
xlabel('自变量 X'), ylabel('因变量 Y')
title('插值点与三次样条函数')
legend('三次样条插值点坐标','插值点')

  运行后的结果如下:

三、 总结

  整合上一篇牛顿插值法,再结合本篇文章三次样条插值法,将这道计算实习题完整做完了。这里我也只提供第二种边界条件的最特殊的条件函数,之后我看有时间再做一篇关于三种类型的完整函数。我之后上传这个 实习计算题的完整代码 ,以供读者参考,也希望读者有能力可以提升我写的函数。感谢读者耐心的观看,希望读者读完后可以学到很多。

四、 补充

  感谢大家的观看,有很多问了我许多问题,问我最多问题:每段表达式系数输与表达式怎么输出,针对大家的这些疑问我将更新的代码放到下一篇文章中,文章的连接如下(2022.5.3):

  数值分析(二续) 三次样条插值二类边界完整matlab代码

五、插值法专栏

专栏链接:插值法专栏,如果对你有帮助的话可以点个赞,点个订阅,我将完善此专栏

  1. 数值分析(一) 牛顿插值法及matlab代码
  2. 数值分析(二续) 三次样条插值二类边界完整matlab代码
  3. 数值分析(四) Hermite(埃尔米特)插值法及matlab代码

数值分析(二) 三次样条插值法matlab程序相关推荐

  1. 牛顿插值法 matlab m文件,牛顿插值法matlab程序

    <牛顿插值法matlab程序>由会员分享,可在线阅读,更多相关<牛顿插值法matlab程序(3页珍藏版)>请在人人文库网上搜索. 1.计算方法数值实验报告班级090712学号0 ...

  2. 数值分析拉格朗日实验题MATLAB程序,数值分析实验报告(拉格朗日插值牛顿插值最小二乘法)...

    实验1 拉格朗日插值法 一.方法原理 n次拉格朗日插值多项式为:Ln(x)=y0l0(x)+y1l1(x)+y2l2(x)+-+ynln(x) n=1时,称为线性插值,L1(x)=y0(x-x1)/( ...

  3. 二维正态分布matlab程序,一维正态分布、二维正态分布的matlab实现

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %本程序用于产生一维正态分布.二维正态分布 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...

  4. 一元二次求解matlab程序,怎么用matlab解一元二次方程

    一.工具:Matlab2012b二.操作步骤:A.解一元方程[1]先举一例,解方程"x^2+100*x+99=0"在matlab"CommandWindow"中 ...

  5. 数值分析·学习 | 拉格朗日插值法matlab实现

    目录 前言 一.拉格朗日(Lagrange)插值是什么? 二.matlab实现代码 1.线性插值: 2.抛物线插值: 3.拉格朗日(Lagrange)插值: 总结: 前言 本篇内容为个人所学知识分享 ...

  6. 一元二次求解matlab程序,规范MATLAB编程实例——求解一元二次方程

    好的程序应当具有较好的可读性,良好的可读性可以使得编程者和使用者读程序的时候顺畅很多.如果程序编得很混乱,有可能当编程者久隔多日再一次打开程序时,就读不懂原来的程序了. 下面从一个简单的实例出发,说明 ...

  7. 求f(x)=根号x的三次样条插值和分段线性插值c语言代码,【数值分析|三次样条插值法《数值分析》上机实验作业】...

    『易坊知识库摘要_数值分析|三次样条插值法<数值分析>上机实验作业』2.要求(1)满足自然边界条件s?(0.2)?s?(1.0)?0:(2)满足第一类边界条件s?(0.2)?0.20271 ...

  8. 数值分析龙贝格matlab,龙贝格matlab程序

    k>=15 [龙贝格求积算法 Matlab 主程序] function[t]=rbg(f,a,b,c) t=zeros(15,4); %定义龙贝格积分函数,f 为待积函数,a 与 b 为积 分上 ...

  9. 秦九韶算法matlab程序,数值分析matlab程序实例.doc

    数值分析matlab程序实例 1,秦九韶算法,求出P(x=3)=2+4x+5x^2+2x^3的值 clear?all; x=3; n=3; a(1)=2;a(2)=4;a(3)=5;a(4)=2 v( ...

最新文章

  1. 多线程中的使用共享变量的问题
  2. Java中的异常全面讲解
  3. c++编辑器_盘点四款PDF编辑器,使用它们,编辑PDF文件没问题!
  4. java for循环break_Java中break、continue、return在for循环中的使用
  5. 提交表单到弹出窗口 Submit a form into a popup
  6. java http请求实现_JAVA实现HTTP请求方式
  7. 【Spring Cloud】微服务和Spring Cloud
  8. Mac 10.12安装迅雷2.7.2
  9. Linux 修改 Tomcat 编码
  10. 微信小程序人脸识别方案
  11. Xshell6 Xftp6 破解
  12. USB C口5V输入,四节串联锂电池充电管理芯片,IC电路板PW4405芯片-22号电路板
  13. 逆地址解析-【高德地图】【腾讯地图】
  14. 【转载:80个Python经典资料(教程+源码+工具)汇总】
  15. ORACLE违反协议异常
  16. pdf工具类之添加页码
  17. cmnet和cmwap的访问
  18. 对于超大型SQL SERVER数据库执行DBCC操作
  19. LM7805 输出电流
  20. 六零导航页(LyLme Spage)导航网站源码

热门文章

  1. 笔记:Stack overflow栈溢出
  2. 共阴数码管段码-共阳数码管段码
  3. 【Qt】通过QtCreator源码学习Qt(十二):Q_D和Q_Q指针(简称“d指针”)详解
  4. 验证网站代码的免费在线工具
  5. 群晖docker部署带web容器的端口配置
  6. 中国目前O2O市场无非就是糯米、美团、大众点评为代表的BAT在角逐
  7. TCP/IP中的TTL
  8. 适用于Windows11 任务栏开始菜单和图标,资源管理器显示异常修复的方法
  9. 单源最短路径 Dijkstra+优先队列
  10. 六、HSV颜色空间应用实例——颜色分割提取与替换