5 6 7 … -0.9375,-0.8750,-0.7500,-0.5000,1.9375 -0.9688,-0.9375,-0.8750,-0.7500,-0.5000,1.9688 -0.9844,-0.9688,-0.9375,-0.8750,-0.7500,-0.5000,1.9844 … 利用我们求出的精确解与用程序求出的近似解求其误差,再利用matlab编程实现时其误差为零。 (2)
对于题目中的A的求逆的通用程序: function INV(n) A=ones(n); for i=2:n for j=1:i-1
A(i,j)=-1*A(i,j); end for j=i:n-1 A(i-1,j)=0; end end B=inv(A);
disp('A 的逆为:'); disp(B); n=5时:
-0.2500 -0.1250 -0.0625 -0.0625?? 0.5000? ?0 0.5000 -0.2500 -0.1250 -0.1250???1? A?? 0 0 0.5000 -0.2500 -0.2500?? 0 0 0 0.5000 -0.5000???? 0.2500 0.1250 0.0625 0.0625? 0.5000?n=6时:
-0.2500 -0.1250 -0.0625 -0.0313 -0.0313?? 0.5000? 0 ?0.5000 -0.2500 -0.1250 -0.0625 -0.0625??? 0 ?0 0.5000 -0.2500 -0.1250 -0.1250A?1???
0 0 0.5000 -0.2500 -0.2500? 0 ?? 0 ?0 0 0 0.5000 -0.5000?? 0.5000 0.2500 0.1250 0.0625 0.0313 0.0313????n=7时:
-0.2500 -0.1250 -0.0625 -0.0313 -0.0156 -0.0156?? 0.5000? 0 ? 0.5000 -0.2500 -0.1250 -0.0625 -0.0313 -0.0313??? 0 ? 0 0.5000 -0.2500 -0.1250 -0.0625 -0.0625??A?1?? 0 0 0 0.5000 -0.2500 -0.1250 -0.1250?
? 0 0 0 0 0.5000 -0.2500 -0.2500??? 0 0 0 0 0 0.5000 -0.5000??? 0.5000 0.2500 0.1250 0.0625 0.0313 0.0156 0.0156???n=8时:
-0.2500 -0.1250 -0.0625 -0.0313 -0.0156 -0.0078 -0.0078?? 0.5000? 0 ? 0.5000 -0.2500 -0.1250 -0.0625 -0.0313 -0.0156 -0.0156??? 0 ? 0 0.5000 -0.2500 -0.1250 -0.0625 -0.0313 -0.0313?? 0 0 0 0.5000 -0.2500 -0.1250 -0.0625 -0.0625? A?1??? 0 0 0 0 0.5000 -0.2500 -0.1250 -0.1250??? 0 0 0 0 0 0.5000 -0.2500 -0.2500??? 0 0 0 0 0 0 0.5000 -0.5000??? 0.2500 0.1250 0.0625 0.0313 0.0156 0.0078 0.0078??? 0.5000?.......
在此不再一一列举,都可以用上述程序算出;
5:编制计算对称正定阵的Cholesky分解的通用程序,并利用你编制的程序计算
Ax?b,其中A?(aij)?Rn?n,aij?1,b可以有你自己取定,对n从10到20验
i?j?1证程序的可靠性。
Cholesky分解求L的通用程序: %LT代表L的转置 function [L,LT]=Cholesky(A) [n,m]=size(A); L=zeros(n,n); for j=1:m sum=0; for k=1:j-1
sum=sum+(L(j,k))^2; end
L(j,j)=(A(j,j)-sum)^(1/2); for i=j+1:n sum=0; for k=1:j-1
sum=sum+L(i,k)*L(j,k); end
L(i,j)=(A(i,j)-sum)/L(j,j); end end L=L; LT=L';
求解Ax?b的方程解的程序如下: function cholesky_qiu_jie(n,b) A=zeros(n); for i=1:n for j=1:n
A(i,j)=1/(i+j-1); end end
[L,LT]=Cholesky(A); Y=inv(LT)*inv(L)*b; disp(Y'); >> n=10;
>> b=[1 0 0 0 0 0 0 0 0 0]'; >> cholesky_qiu_jie(n,b) 1.0e+06 *
Columns 1 through 5
0.000099995224850
-0.004949584178747
0.079191090719606
-0.600518630835813 2.522130446082295
Columns 6 through 10
-6.305225874989181
9.607833253959356
-8.749889022961289
4.374900125373453 -0.923581794866949
>> n=11;
>> b=[1 0 0 0 0 0 0 0 0 0 0]'; >> cholesky_qiu_jie(n,b) 1.0e+07 * Columns 1 through 5
0.000012085421839 -0.000724460241949 0.014116768083723
-0.131679518851255 0.690983916160226
Columns 6 through 10 -2.210252357004733
4.471585077358848
-5.747468746188864
4.548898816586863 -2.021271620300206
Column 11
0.385801129112326 n=12;
>> b=[1 1 1 1 1 1 1 1 1 1 1 1]'; >> cholesky_qiu_jie(n,b) 1.0e+08 * Columns 1 through 5 -0.000000106586186
0.000015496760612
-0.000549242897797
0.008320106358643 -0.067089571289062
Columns 6 through 10 0.321428166562500
-0.969534469375000
1.888382749062500
-2.369824064062500 1.849525708125000
Columns 11 through 12
-0.816237543125000 0.155564209082031 n=13;
>> b=[1 1 1 1 1 1 1 1 1 1 1 1 1]'; >> cholesky_qiu_jie(n,b) 1.0e+10 * Columns 1 through 5 0.000000017255662
-0.000002801898660
0.000111021739307
-0.001891219259375 0.017318444275000
Columns 6 through 10