1、n-1 b(j)=b(j)/A(j,j); b(j+1:n)=b(j+1:n)-b(j)*A(j+1:n,j);endb(n)=b(n)/A(n,n); %前代法A=A;for j=n:-1:2 b(1:j-1)=b(1:j-1)-b(j)*A(1:j-1,j);b(1)=b(1)/A(1,1); %回代法disp(平方根法的解即为b改进平方根法函数程序如下:function b=gaijinpinfanggenfa(A,b)v=zeros(n,1); for i=1:j-1 v(i)=A(j,i)*A(i,i); A(j,j)=A(j,j)-A(j,1:j-1)*v(1:j-1); A(j+
2、1:n,j)=(A(j+1:n,j)-A(j+1:n,1:j-1)/A(j,j); end %LDL分解B=diag(A);D=zeros(n); D(i,i)=B(i); A(i,i)=1; EndA=tril(A); %得到L和DA=D*(A改进平方根法解得的解即为b调用函数解题:clear;clc;n=input(请输入矩阵维数:b=zeros(n,1);A=zeros(n);for i=1: for j=1:A(i,j)=1/(i+j-1);b(i)=b(i)+1/(i+j-1);end %生成hilbert矩阵x,b=pingfanggenfa(A,b)b=gaijinpinfang
3、genfa(A,b)运行结果:40Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 6.570692e-020. In pingfanggenfa at 4 In qiujie at 10Matlab自带解即为x平方根法的解即为bx = 1.6035 8.9685 0.8562 1.0195 0.9375 -50.2500 -3.0000 -16.0000 24.0000 -49.5000 -30.0000 39.0000 22.0000 -64.0000 -12.0
4、000 2.0000 10.2500 -10.5000 -1.0000 -10.8750 83.0000 46.0000 -98.0000 12.0000 -69.0000 68.0000 21.0000 17.0000 -50.7188 -8.7500 -8.0000 112.0000 6.0000 -68.7500 44.0000 -28.0000 8.0000 -44.0000b = 1.0e+007 * 0.0000 -0.0000 0.0001 -0.0004 -0.0014 0.0424 -0.2980 1.1419 -2.7335 4.2539 -4.3018 2.7733 -1
5、.1989 0.5406 -0.3688 0.3285 -0.4438 0.4621 -0.2513 0.0565 -0.0051 0.0071 -0.0027 -0.0031 0.0036 -0.0019 0.0009 0.0002 -0.0002 -0.0006 0.0004改进平方根法解得的解即为b 1.0e+024 * -0.0012 0.0139 -0.0954 0.4208 -1.2101 2.0624 -1.0394 -3.3343 6.2567 -0.2463 -7.4594 2.8030 3.6990 0.7277 -1.7484 -0.4854 -3.6010 0.2532
6、 5.1862 -2.1299 1.4410 0.8738 -4.5654 1.0422 4.0920 -2.7764 -2.2148 -0.8953 0.3665 4.8967 1.0416 0.1281 -4.3387 -1.1902 -2.8334 8.4610 -3.6008实验二、利用QR分解解线性方程组:利用QR分解解线性方程组Ax=b,其中A=16 4 8 4;4 10 8 4;8 8 12 10;4 4 10 12;b=32 26 38 30;求解程序如下:定义house函数:function v,B=house(x)n=length(x);y=norm(x,inf);x=x/
7、y;Q=x(2:n)*x(2:n);v(1)=1;v(2:n)=x(2:if n=1 Q=0; B=0;else a=sqrt(x(1)2+Q); if x(1)=0 v(1)=x(1)-a; else v(1)=-Q/(x(1)+a); B=2*v(1)2/(Q+v(1)2); v=v/v(1);进行QR分解:b=bx=size(A);m=x(1);n=x(2);d=zeros(n,1); v,B=house(A(j:m,j);m,j:n)=(eye(m-j+1)-B*(v)*v)*A(j: d(j)=B; if j=eps)&(norm(Newtonfun(X1),2)=eps) if norm(Newtonfun(X2),2)norm(Newtonfun(X1),2) %判断先后两次迭代的大小 X1=X2; B=inv(Jacobi(X2); C=Newtonfun(X2); X2=X2-B*C; i=i+1;else v=1/(2k); %引入下山因子 X2=X2-v*B*C; k=k+1;j=i+k-1 %迭代次数X=X2 %输出结果j = 5X = 0.500000000000000 -0.000000000000000 -0.523598775598299
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1