整理一下数值分析的笔记~
目录:1. 误差
2. 多项式插值与样条插值
3. 函数逼近
4. 数值积分与数值微分
5. 线性方程组的直接解法
6. 线性方程组的迭代解法
7. 非线性方程求根
8. 特征值和特征向量的计算
9. 常微分方程初值问题的数值解
1. 误差的分类和来源
模型误差:实际问题和对其进行抽象、简化后得到的数学模型之间存在的误差
观测误差:由于精度的限制,观察和测量时候产生 的误差
舍入误差:计算机字长的限制,所能表示的数只能有有限的位数,后面的部分按照不同的舍入规则舍去而产生的误差
截断/方法误差:得不到精确解的数学模型通常用数值方法求近似解,二者之间的误差。通常是用有限过程对无穷进行截断,比如,f(x)用泰勒公式近似替代如下:
Pn(x)=f(0)+f′(0)1!x+f′′(0)1!x2+...+fn(0)n!xn
P_n(x)=f(0)+\frac{f'(0)}{1!}x+\frac{f''(0)}{1!}x^2+...+\frac{f^{n}(0)}{n!}x^n
Pn(x)=f(0)+1!f′(0)x+1!f′′(0)x2+...+n!fn(0)xn
则截断误差为
Rn(x)=f(x)−Pn(x)=fn+1(ξ)(n+1)!xn+1,其中ξ∈(0,x)。 R_n(x)=f(x)-P_n(x)=\frac{f^{n+1}(\xi)}{(n+1)!}x^{n+1},其中 \xi \in(0,x)。 Rn(x)=f(x)−Pn(x)=(n+1)!fn+1(ξ)xn+1,其中ξ∈(0,x)。
2. 误差和误差限
定义1. 设x为准确值,x∗x^*x∗为x的一个近似值,称E(x∗)=x∗−xE(x^*)=x^*-xE(x∗)=x∗−x为近似值的绝对误差,简称误差。
实际上,准确值x通常无法求得甚至未知,因此E(x∗)E(x^*)E(x∗)往往也无法求得,只能知道其绝对值得某个上界ε(x∗)≥E(x∗)=∣x∗−x∣\varepsilon(x^*)\geq E(x^*)=|x^*-x|ε(x∗)≥E(x∗)=∣x∗−x∣,数值ε(x∗)\varepsilon(x^*)ε(x∗)称为x∗x^*x∗的**(绝对)误差限**。
{一般地,凡是由准确值经过四舍五入得到的近似值,其绝对误差限等于该近似值末位的半个单位}
但是一个测量值的精确程度除了与绝对误差限有关外,还和该量的大小有关,由此引入相对误差限。
定义2. 设x为准确值,x∗x^*x∗为x的一个近似值,称Er(x∗)=E(x∗)x=x∗−xxE_r(x^*)=\frac{E(x^*)}{x}=\frac{x^*-x}{x}Er(x∗)=xE(x∗)=xx∗−x为近似值x∗x^*x∗的相对误差,简记为ErE_rEr,εr(x∗)≥∣Er(x∗)\varepsilon _r(x^*)\geq|E_r(x^*)εr(x∗)≥∣Er(x∗)为x∗x^*x∗的相对误差限。
两种误差限的关系:εr=ε∣x∗∣\varepsilon _r=\frac{\varepsilon}{|x^*|}εr=∣x∗∣ε
eg. 已知e=2.71828182…,近似值e∗e^*e∗=2.71828,则ε=∣e∗−e∣=0.00000182...≤0.000002=2×10−6,εr=ε∣e∗∣≈0.71×10−6\varepsilon=|e^*-e|=0.00000182...\leq0.000002=2 \times 10^{-6},\varepsilon_r=\frac{\varepsilon}{|e^*|}\approx0.71 \times10^{-6}ε=∣e∗−e∣=0.00000182...≤0.000002=2×10−6,εr=∣e∗∣ε≈0.71×10−6
3. 有效数字
定义3.若x∗x^*x∗作为x的近似值,其绝对误差的绝对值不超过某一位数字的半个单位,而该位数字到x∗x^*x∗的第一位非零数字共有n位,则称用x∗x^*x∗近似x时具有n位有效数字,简称x∗x^*x∗有n位有效数字。
有效数字与绝对误差限的关系
x的近似值x∗x^*x∗的规格化形式可以写为:
x∗=±0.a1a2...ak×10m x^*=\pm0.a_1a_2...a_k \times10^m x∗=±0.a1a2...ak×10m
其中m是整数,aia_iai是0-9中的一个数字且a1≠0a_1\neq 0a1̸=0,则x∗=±0.a1a2...ak×10m具有n位(n≤k)x^*=\pm0.a_1a_2...a_k \times10^m具有n位(n\leq k)x∗=±0.a1a2...ak×10m具有n位(n≤k)有效数字当且仅当∣E∣=∣x∗−x∣≤0.5×10m−n|E|=|x^*-x|\leq 0.5 \times 10^{m-n}∣E∣=∣x∗−x∣≤0.5×10m−n。(可以看出有效数字越多,绝对误差越小)
有效数字与相对误差限的关系
x的近似值x∗x^*x∗的规格化形式可以写为:
x∗=±0.a1a2...ak×10m,a1≠0 x^*=\pm0.a_1a_2...a_k \times10^m,a_1 \neq0 x∗=±0.a1a2...ak×10m,a1̸=0
x∗x^*x∗有n位有效数字,则相对误差限:
er∗≤12a1×101−n
e_r^*\leq \frac{1}{2a_1} \times 10^{1-n}
er∗≤2a11×101−n
反之,若x∗x^*x∗的相对误差限为
er∗≤12(a1+1)×101−n e_r^*\leq \frac{1}{2(a_1+1)} \times 10^{1-n} er∗≤2(a1+1)1×101−n
4. 数值运算的误差估计
ε(x1∗±x2∗)=ε(x1∗)+ε(x2∗) \varepsilon(x_1^* \pm x_2^*)=\varepsilon(x_1^*)+\varepsilon(x_2^*) ε(x1∗±x2∗)=ε(x1∗)+ε(x2∗)ε(x1∗x2∗)≈∣x1∗∣ε(x2∗)+∣x2∗∣ε(x1∗) \varepsilon(x_1^* x_2^*) \approx |x_1^*|\varepsilon(x_2^*)+|x_2^*|\varepsilon(x_1^*) ε(x1∗x2∗)≈∣x1∗∣ε(x2∗)+∣x2∗∣ε(x1∗)ε(x1∗/x2∗)≈∣x1∗∣ε(x2∗)+∣x2∗∣ε(x1∗)∣x2∗∣2 \varepsilon(x_1^* / x_2^*) \approx \frac{|x_1^*|\varepsilon(x_2^*)+|x_2^*|\varepsilon(x_1^*)}{|x_2^*|^2} ε(x1∗/x2∗)≈∣x2∗∣2∣x1∗∣ε(x2∗)+∣x2∗∣ε(x1∗)
一般地,自变量有误差时,计算函数值也产生误差,误差限可利用函数的泰勒展开式进行估计,ε(f(x∗))=f(x)−f(x∗)=f′(x∗)(x−x∗)+f′′(ξ)2(x−x∗)2,其中ξ介于x和x∗之间\varepsilon(f(x^*))=f(x)-f(x^*)=f'(x^*)(x-x^*)+\frac{f''(\xi)}{2}(x-x^*)^2,其中\xi介于x和x^*之间ε(f(x∗))=f(x)−f(x∗)=f′(x∗)(x−x∗)+2f′′(ξ)(x−x∗)2,其中ξ介于x和x∗之间
取绝对值并假定f′(x∗)f'(x^*)f′(x∗)和f′′(x∗)f''(x^*)f′′(x∗)比值不大,忽略ε(x∗)\varepsilon(x^*)ε(x∗)的高阶项,有:
ε(f(x∗))≈∣f′(x∗)∣ε(x∗) \varepsilon(f(x^*)) \approx |f'(x^*)| \varepsilon(x^*) ε(f(x∗))≈∣f′(x∗)∣ε(x∗)
多元函数同理。
5. 四则运算的稳定性问题
- 防止大数吃小数(计算机位数有限造成) →\rarr→求和时从小到大相加,可使和的误差减小
- 做减法时避免相近数相减→\rarr→使用有理化,三角变换等。
- 避免小数作除数和大数作乘数。
6. 提高算法效率问题
6.1 减少运算次数(比如多项式计算的秦九韶算法)
6.2 病态问题:
定义:对数学问题本身如果输入数据有微小扰动,引起输出数据的很大扰动,即病态问题。
比如:计算函数值f(x),当x有扰动,δ=x−x∗\delta=x-x^*δ=x−x∗,相对误差δx\frac{\delta}{x}xδ,函数值相对误差f(x)−f(x∗)f(x)\frac{f(x)-f(x^*)}{f(x)}f(x)f(x)−f(x∗),相对误差比值为f(x)−f(x∗)f(x)δx≈f′(x)δf(x)δx≈xf′(x)f(x)=Cp\frac{\frac{f(x)-f(x^*)}{f(x)}}{\frac{\delta}{x}}\approx\frac{\frac{f'(x)\delta}{f(x)}}{\frac{\delta}{x}}\approx \frac{xf'(x)}{f(x)}=C_pxδf(x)f(x)−f(x∗)≈xδf(x)f′(x)δ≈f(x)xf′(x)=Cp
CpC_pCp称为计算函数值问题的条件数。
从上面的计算中可以看出,如果条件数很大(通常自变量相对误差不会太大)将会引起函数值相对误差很大 ,此时出现病态问题。
{持续更新}
欢迎扫描二维码关注微信公众号 深度学习与数学 [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]