声明资料来源:此篇文将“猪老师爱做饭”在哔哩哔哩的视频《数值计算方法 数值分析 计算方法》的内容、个人在课上的笔记搬运过来,是个纯粹的搬运工和整理员。
目录:
一、数值计算方法
1.1算法对计算效率和速度的影响
对于f(x)=a0x^n+a1x^(n-1)+......+a(n-1)x^1+an=aix^(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,r(x)=|(x)|/x
在真实计算过程中由于x往往是未知量,所以我们将相对误差和相对误差限的分母换成x^,er(x)=(x-x^)/x^=e(x)/x^,r(x)=|(x)|/x^
二、Gauss Elemination and triangle factorization
2.1不消主元法
对于Ax=b线性方程组中的系数矩阵,依次消去每列aii(i=1,2,...n)主元以下元素
,
最终得到上三角矩阵
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直接三角分解
给定矩阵(m=n),根据的元素,得到矩阵,=(^(-1)),或者为了节省内存占用,直接在进行三角分解
2.4杜立特分解
对于解,有两个步骤:
,先假设出L、U的模型
在计算时
先算第一行
再算第一列剩下元素
再算第二行剩下元素
再算第二列剩下元素
再算第三行剩下元素
一步一步把LU矩阵削减为右下角更小的矩阵
2)将Ax=b分解成两步:Ly=b,Ux=y
先通过Ly=b解出y,再通过Ux=y解出x
2.5三对角方程的追赶法Thomas算法
2.6Cholesky分解,即平方根法
1)条件:要求A为对称矩阵
2)
用matlab如何生成对称矩阵:
用matlab如何生成对称正定矩阵:
用matlab生成正交矩阵:或
3)
先使用正常的LU分解得出L和U,将U变为单位上三角阵,,
步骤一:循环过后A=U
步骤二:将变为