(2)设对称正定阵系数阵线方程组
2、数学原理
1、平方根法
解n阶线性方程组Ax=b的choleskly
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
也叫做平方根法,这里对系数矩阵A是有要求的,需要A是对称正定矩阵,根据数值分析的相关理论,如果A对称正定,那么系数矩阵就可以被分解为的
形式,其中L是下三角矩阵,将其代入Ax=b中,可得:
进行如下分解:
那么就可先计算y,再计算x,由于L是下三角矩阵,是
上三角矩阵,这样的计算比直接使用A计算简便,同时你应该也发现了工作量就转移到了矩阵的分解上面,
那么对于对称正定矩阵A进行Cholesky分解,我再描述一下过程吧:
如果你对原理很清楚那么这一段可以直接跳过的。
设
,即
其中
第1步,由矩阵乘法,
故求得
一般的,设矩阵L的前k-1列元素已经求出
第k步,由矩阵乘法得
于是
2、改进平方根法
在平方根的基础上,为了避免开方运算,所以用
计算;其中,
;
得
按行计算的
元素及
对元素公式
对于
.
.
计算出
的第
行元素
后,存放在
的第
行相置,然后再计算
的第
行元素,存放在
的第
行.
的对角元素存放在
的相应位置.
对称正定矩阵
按
分解和按
分解计算量差不多,但
分解不需要开放计算。求解
,
的计算公式分别如下公式。
3、程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
1、平方根法
function [x]=pfpf(A,b)
%楚列斯基分解 求解正定矩阵的线性代数方程 A=LL’ 先求LY=b 再用L’X=Y 即可以求出解X
[n,n]=size(A);
L(1,1)=sqrt(A(1,1));
for k=2:n
L(k,1)=A(k,1)/L(1,1);
end
for k=2:n-1
L(k,k)=sqrt(A(k,k)-sum(L(k,1:k-1).^2));
for i=k+1:n
L(i,k)=(A(i,k)-sum(L(i,1:k-1).*L(k,1:k-1)))/L(k,k);
end
end
L(n,n)=sqrt(A(n,n)-sum(L(n,1:n-1).^2));
%解下三角方程组Ly=b 相应的递推公式如下,求出y矩阵
y=zeros(n,1);%先生成方程组的因变量的位置,给定y的初始值
for k=1:n
j=1:k-1;
y(k)=(b(k)-L(k,j)*y(j))/L(k,k);
end
%解上三角方程组 L’X=Y 递推公式如下,可求出X矩阵
x=zeros(n,1);
U=L';%求上对角矩阵
for k=n:-1:1
j=k+1:n;
x(k)=(y(k)-U(k,j)*x(j))/U(k,k);
end
>> A=[4,2,-4,0,2,4,0,0
2,2,-1,-2,1,3,2,0
-4,-1,14,1,-8,-3,5,6
0,-2,1,6,-1,-4,-3,3
2,1,-8,-1,22,4,-10,-3
4,3,-3,-4,4,11,1,-4
0,2,5,-3,-10,1,14,2
0,0,6,3,-3,-4,2,19];
>> b=[0;-6;20;23;9;-22;-15;45];
>> x=pfpf(A,b)
x =
121.1481
-140.1127
29.7515
-60.1528
10.9120
-26.7963
5.4259
-2.0185
2、改进平方根法
function [x]=improvecholesky(A,b,n) %用改进平方根法求解Ax=b
L=zeros(n,n); %L为n*n矩阵
D=diag(n,0); %D为n*n的主对角矩阵
S=L*D;
for i=1:n %L的主对角元素均为1
L(i,i)=1;
end
for i=1:n
for j=1:n %验证A是否为对称正定矩阵
if (eig(A)<=0)|(A(i,j)~=A(j,i)) %A的特征值小于0或A非对称时,输出wrong
disp('wrong');break;end
end
end
D(1,1)=A(1,1); %将A分解使得A=LDLT
for i=2:n
for j=1:i-1
S(i,j)=A(i,j)-sum(S(i,1:j-1)*L(j,1:j-1)');
L(i,1:i-1)=S(i,1:i-1)/D(1:i-1,1:i-1);
end
D(i,i)=A(i,i)-sum(S(i,1:i-1)*L(i,1:i-1)');
end
y=zeros(n,1); % x,y为n*1阶矩阵
x=zeros(n,1);
for i=1:n
y(i)=(b(i)-sum(L(i,1:i-1)*D(1:i-1,1:i-1)*y(1:i-1)))/D(i,i);
%通过 LDy=b解得y的值
end
for i=n:-1:1
x(i)=y(i)-sum(L(i+1:n,i)'*x(i+1:n));
%通过LTx=y解得x的值
end
>> A=[4,2,-4,0,2,4,0,0
2,2,-1,-2,1,3,2,0
-4,-1,14,1,-8,-3,5,6
0,-2,1,6,-1,-4,-3,3
2,1,-8,-1,22,4,-10,-3
4,3,-3,-4,4,11,1,-4
0,2,5,-3,-10,1,14,2
0,0,6,3,-3,-4,2,19];
>> b=[0;-6;20;23;9;-22;-15;45];
>> n=8;
>> x=improvecholesky(A,b,n)
x =
121.1481
-140.1127
29.7515
-60.1528
10.9120
-26.7963
5.4259
-2.0185
4、结果分析和讨论
平方根法和改进平方根法求解线性方程组的解为x=(121.1481,-140.1127,29.7515,-60.1528,10.9120,-26.7963,5.4259,-2.0185)T。与精确解相比较也存在很大的误差,虽然系数矩阵的对角元素都大于零,
原则
组织架构调整原则组织架构设计原则组织架构设置原则财政预算编制原则问卷调查设计原则
上可以不必选择主元,但由于矩阵的数值问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
较大,不选主元的结果就是产生很大的误差,所以在求解的过程中还是应该选择主元以此消除误差,提高精度。
5、完成题目的体会与收获
对称正定矩阵的平方根法及改进平方根法是目前解决这类问题的最有效的方法之一,合理利用的话,能够产生很好的求解效果。改进平方根法较平方根法,因为不用进行开方运算,所以具有一定的求解优势。通过求解此题,学会了平方根法和改进平方根法matlab编程,使我受益匪浅。