函数插值
华中科技大学数值分析课程地址
插值方法
函数逼近问题:
有$y_i=f(x_i)(i=0,1,...,n)$,希望使用一个简单函数$p(x)$近似$f(x)$,使$p(x_i)=f(x_i)(i=1,2,...,n)$
通过已知的数据估计$f(x)$
插值法定义:
设函数$y=f(x)$在区间[a,b]上有定义,且$a<=x_0 若存在简单函数$p(x)$,使
$$
p(x_i)=y_i,i=0,1,2...,n
$$
成立,就称$p(x)$$为$$f(x)$$的插值函数,点$$x_i$$称为插值节点,[a,b]称为插值区间 常用插值法: 多项式插值:P(x)为多项式函数 分段插值:P(x)为分段多项式函数 三角插值:P(x)为三角函数 ...... 插值多项式的存在唯一性: 满足$P(x_i)=y_i,i=0,1,...,n$,次数不超过n的插值多项式是唯一存在的 证明方法略,hint:范德蒙行列式 如何构造插值多项式: 待定系数法: 1.构造插值多项式$P(x)=a_0+a_1x+a_2x^2+...+a_nx^n$,构造时候注意唯一性条件,次数不能超过n 2.带入已知条件求解插值多项式的未知数 待定系数法在线性方程组维数高时很难求解,其优点是基函数简单,缺点是方程组系数难以计算 拉格朗日插值法与待定系数法基函数不同 拉格朗日多项式: 为了解决方程组系数难以计算的问题,使方程组系数就等于$y_i$ 求n次多项式$L_n(x)=y_0l_0(x)+y_1l_1(x)+...+y_nl_n(x)$ 使得$L_n(x_i)=y_i,i=0,1,2,...,n$ 条件:无重合节点 $l_i(x)$称为拉氏基函数,使得$l_i(x)$满足条件$l_i(x_j)=\delta_{ij}$时,满足$L_n(x_i)=y_i,i=0,1,2,...,n$ 注:$\delta_{ij}=\begin{cases}0&\text{i$\neq$j}\\\\1&\text{i$=$j}\end{cases}$ $l_{i}(x)=\prod_{\substack{j \neq i \\ j=0}}^{n} \frac{\left(x-x_{j}\right)}{\left(x_{i}-x_{j}\right)}$ $L_{n}(x)=\sum_{i=0}^{n} L_{i}(x) y_{i}$ 注:拉格朗日基函数仅与插值节点有关而与函数无关 插值余项: 没听懂 $R_{n}(x)=\frac{f^{(n+1)}\left(\xi_{x}\right)}{(n+1) !} \prod_{i=0}^{n}\left(x-x_{i}\right)$ 误差估计上界为: $\frac{M_{n+1}}{(n+1) !} \prod_{i=0}^{n}\left|x-x_{i}\right|$ 其中$\left|f^{(n+1)}(x)\right|<=M_{n+1}$ 一般用估计上界来估计误差 拉格朗日插值法每新增或者减少一个节点,需要重新计算所有基函数$ l_k(x)$ 为了解决这个问题,设计一种可以逐次生成插值多项式的算法,即为牛顿插值法 插商: 零阶差商 一阶差商 二阶差商 ... k+1阶差商 牛顿插值: $N_n(x)=c_0+c_1(x-x_0)+c_2(x-x_0(x-x_1)+...+c_n(x-x_0)(x-x_1)...(x-x_n-1)$ $c_k=f[x_0,x_1,...,x_k]$ 等距节点公式: 节点等距分布:$x_i=x_0+ih(i=0,...,n)$ 一致逼近:$||f(x)-y(x)||_\infty = \mathop{max}\limits_{a\leq x\leq b}|f(x)-y(x)|$ 平方逼近:$||f(x)-y(x)||_2^2=\int_a^b\rho(x)[f(x)-y(x)]^2dx$ Weierstrass逼近定理:闭区间上的连续函数可以用多项式一致逼近 内积:$(f,g)=\int_a^b\rho(x)f(x)g(x)dx$$称为函数$$f(x)$$和$$g(x)$$在$$[a,b]$$上的内积,$$\rho(x)$$是$$[a,b]$上的权函数 内积空间的四条公理 满足内积定义的函数空间称为内积空间 范数: $||f||_2=\sqrt{\int_a^b\rho(x)f^2(x)dx}+\sqrt{(f,f)}$ 称为$f(x)$的欧式范数 定理: Cauchy-Schwarz不等式$|(f,g)|\leq||f||_2||g||_2$ 三角不等式$||f+g||_2\leq||f||_2+||g||_2$ 平行四边形定律$||f+g||_2^2+||f-g||_2^2=2(||f||_2^2+||g||_2^2)$ 正交函数族 线性无关函数族(与线性代数的线性无关类似) 判断函数族线性无关的充要条件:克莱姆行列式$G_{n-1}\neq 0$ 求$a_k^*(k+0,1,...,n)$使 $f(x)$是要逼近的函数 法方程组: 法方程组的系数矩阵希尔伯特阵(系数矩阵与基函数有关,并不是所有情况都能用希尔伯特阵,只适用于基函数为单项式函数的情况): 求解过程: 先求法方程等号右边(求内积) 再带入法方程系数矩阵求解法方程 一个求最佳平方逼近的matlab demo: 只能求解区间[0,1]上的一次多项式最佳平方逼近,作为一个求解过程的示例 基函数为单项式函数$\{1,t,\cdots,t^{n-1}\}$,此时系数矩阵为希尔伯特矩阵 f是要逼近的方程,ft是要逼近的方程*t,用于求解法方程等号右端项 最佳平方逼近的离散版本 引入离散型内积 $\sum\limits_{i=1}^N\omega(x_i)f(x_i)g(x_i)$拉格朗日插值
函数逼近
内积空间
函数的最佳平方逼近
function [A] = BSapproximation(f,ft)
%BSAPPROXIMATION 求最佳逼近,区间[0,1],基函数为一次多项式
b1 = integral(f, 0, 1);
b2 = integral(ft, 0, 1);
H = [1,1/2;1/2,1/3];
B = [b1; b2];
A=mldivide(H,B);
end
最小二乘拟合