算法误差和Gauss消元

声明资料来源:此篇文将“猪老师爱做饭”在哔哩哔哩的视频《数值计算方法 数值分析 计算方法》的内容、个人在课上的笔记搬运过来,是个纯粹的搬运工和整理员。

目录:
一、数值计算方法
1.1算法对计算效率和速度的影响

对于f(x)=a0x^n+a1x^(n-1)+......+a(n-1)x^1+an=\sumaix^(n-i)的x执行次数

算法(1)为n+(n-1)+......+2+1=n(n+1)/2

算法(2)先将f(x)处理为:前两项变为(a0x+a1)x^(n-1),前三项变为[(a0x+a1)x+a2]x^(n-2),前四项变为{[(a0x+a1)x+a2]x+a3}x^(n-3),以此类推,与前若干项成正比例的x执行次数总和依次为2、3、4,x的幂数为n,所以x执行次数总和为n。

1.2算法对计算精度的影响

对于y=(x-2)^9

算法(1)为y1=(x-2)^9

算法(2)为使用二次项分布公式

两者的图像分别为

图片来源于“猪老师爱做饭”在哔哩哔哩的视频《数值计算方法 数值分析 计算方法》

1.3数值计算方法特点
  • 只能包括计算机能直接处理的运算
  • 能任意逼近并达到精度要求,对近似算法需要保证收敛性和稳定性
  • 有良好的计算复杂度(即运算次数少,存储空间小)
1.4误差来源
  • 模型误差(描述误差):指建立的数学模型和实际事物的差距(数学模型为在定量分析事物时抓住主要,忽略次要而建立的数学关系式)
  • 观测误差(测量误差):指计算公式中的往往通过观测、实验获得的参数与真实值间的误差
  • 截断误差(方法误差):指数学模型的准确解与用数值算法求得的准确解之差
  • 舍入误差:指在参加运算的数据只能是具有有限位的数据下,原始数据在机器表示的每一次运算中都可能产生的误差
1.5近似数的误差表示
  • 绝对误差

  • 相对误差 

er(x)=(x-x^)/x=e(x)/x,\varepsilonr(x)=|\varepsilon(x)|/x

在真实计算过程中由于x往往是未知量,所以我们将相对误差和相对误差限的分母换成x^,er(x)=(x-x^)/x^=e(x)/x^,\varepsilonr(x)=|\varepsilon(x)|/x^

二、Gauss Elemination and triangle factorization
2.1不消主元法

对于Ax=b线性方程组中的系数矩阵A_(nn),依次消去每列aii(i=1,2,...n)主元以下元素

A=[a_{1}^{0},a_{2}^{0},...,a_{n}^{0}],L1A=[a_{1}^{1},a_{2}^{1},...,a_{n}^{1}],L2A=[a_{1}^{2},a_{2}^{2},...a_{n}^{2}]

最终得到上三角矩阵L_{n}*L_{n-1}...L_{2}*L_{1}*A=U

2.2主元消去法

(1)列主元消除法

文字解释:对于第j列(j=1,2,...n),选择该列最大元素aij作为主元ajj,i=1,2,...nt

代码:

[maxvalue,indexi]=max(abs(A(:,j)));

if indexi~=j

        temp=A(j,:);

        A(j,:)=A(indexi,:);

        A(indexi,:)=temp;

end

(2)全选主元消除法

文字解释:a)每次进行aii主元以下元素的消除时都在右下角矩阵A(n-i+1)(n-i+1)中寻找绝对值最大的元素,b)并交换到A(n-i+1)(n-i+1)矩阵的第一主元位置,c)之后进行高斯消元.a)、b)、c)重复进行知道生成upper triangular上三角形

代码:

2.3直接三角分解

给定矩阵A_{mn}(m=n),根据A_{mn}的元素,得到L_{nm}矩阵,U_{nn}=(L_{nm}^(-1))A_{mn},或者为了节省内存占用,直接在A_{mn}进行三角分解

2.4杜立特分解

对于解Ax=b,有两个步骤:

1)A=LU,先假设出L、U的模型

LU=\begin{bmatrix} 1& & \\ l21& 1& \\ l31& l32& 1\end{bmatrix}\begin{bmatrix} u11& u12 &u13 \\ & u22& u23\\ & & u33\end{bmatrix}=\begin{bmatrix} u11 &u12 &u13 \\ l21u11&l21u12+u22 &l21u13+u23 \\ l31u11&l31u12+l32u22 &l31u13+l32u23+u33 \end{bmatrix}

在计算时

先算第一行a11=u11,a12=u12,a13=u13

再算第一列剩下元素l21=A(21)/u11,l31=A(31)/u11

再算第二行剩下元素u22=A(22)-l21u12,u23=A(23)-l21u13

再算第二列剩下元素l32=(A(32)-l21u12)/u22

再算第三行剩下元素u33=A(33)-l31u13-l32u23

一步一步把LU矩阵削减为右下角更小的矩阵

2)将Ax=b分解成两步:Ly=b,Ux=y

先通过Ly=b解出y,再通过Ux=y解出x

2.5三对角方程的追赶法Thomas算法
2.6Cholesky分解,即平方根法

1)条件:要求A为对称矩阵

2)

用matlab如何生成对称矩阵:A=rand(n);A=A'+A

用matlab如何生成对称正定矩阵:A=rand(n);B=diag(rand(n,1));A=A'*A+B;

用matlab生成正交矩阵:A=rand(n);Q=orth(A);A=rand(n);[Q,R]=qr(A);

3)A=L_{0}L_{0}^{T}

先使用正常的LU分解得出L和U,将U变为单位上三角阵,U=DU_{hat},LU=LDU_{hat}=LD^{1/2}D^{1/2}U_{hat}=L_{0}L_{0}^{T},L^{T}=U_{hat}

步骤一:循环过后A=U

步骤二:将U变为U_{hat}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值