数值分析习题5/线性方程组数值求解

线性方程组数值求解题目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

列主元高斯消去法计算问题 1

format short;
A=[4 2 -3 -1 2 1 0 0 0 0;8 6 -5 -3 6 5 0 1 0 0;...
 4 2 -2 -1 3 2 -1 0 3 1;0 -2 1 5 -1 3 -1 1 9 4;...
 -4 2 6 -1 6 7 -3 3 2 3;8 6 -8 5 7 17 2 6 -3 5;...
 0 2 -1 3 -4 2 5 3 0 1;16 10 -11 -9 17 34 2 -1 2 2;...
 4 6 2 -7 13 9 2 0 12 4;0 0 -1 8 -3 -24 -8 6 3 -1];
b=[5 12 3 2 3 46 13 38 19 -21]';
N=size(A);
n=N(1);
x=gauss_lieZY(A,b,n)
被调函数
function [x] = gauss_lieZY(A,b,n)
%列主元高斯消去法求线性方程组的解
m=zeros(n);
eps
for k=1:1:n-1 %要选 n-1 次主元
 a(k)=A(k,k); %迭代来取主元
 p(k)=k;
 for i=k+1:1:n
 if abs(A(i,k))>=abs(a(k))
 a(k)=A(i,k) 
 p(k)=i %记录列主元所在列
 end
 end
 
 if p(k)>k
 z=A(k,:); %交换使得列主元居上
 A(k,:)=A(p(k),:);
 A(p(k),:)=z
 z1=b(k,1); %同时要同步改变 b 向量
 b(k,1)=b(p(k),1);
 b(p(k),1)=z1
 end
 
 if abs(a(k))<eps %如果列主元为 0fprintf('该矩阵奇异,不能以此法求唯一解');
 return; end
 for j=k+1:1:n
 m(j,k)=A(j,k)/A(k,k); %m(j,k)表示线性变换时主列要乘以的系数
 for h=k:1:n
 A(j,h)=A(j,h)-m(j,k)*A(k,h);
 if abs( A(j,h))<1e-15
 A(j,h)=0;
 end
 end
 b(j,1)=b(j,1)-m(j,k)*b(k,1);
 end
 A
 b
end
 S=0;
 for t=n:-1:1
 for s=t+1:1:n
 S=S+A(t,s)*b(s,1);
 end
 x(t,1)=(b(t,1)-S)/A(t,t);
 if abs(x(t,1))<1e-13
 x(t,1)=0;
 end
 b(t,1)=x(t,1);
 S=0;
 end
x=vpa(x,2) 
end

改进的平方根法计算问题 2

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 6 23 11 -22 -15 45]'; 
N=size(A);
n=N(1);
GJ_pinfanggeng(A,b,n)
function [X,Y] = GJ_pinfanggeng(A,b,n)
%改进平方根法求线性方程组的解L=zeros(n);
E=eye(n);
s=0; 
s1=0;
d(1)=A(1,1);
format short;
%************************ 根据公式写入L、D 、Lt矩阵**********************
for i=2:1:n
 for j=1:1:i-1
 if j==1
 s=0;
 else
 for k=1:1:j-1
 s=s+d(k)*L(i,k)*L(j,k);
 end
 end
 L(i,j)=(A(i,j)-s)/d(j);
 s=0;
 end
 for k=1:1:i-1
 s1=s1+d(k)*L(i,k)*L(i,k);
 end
 d(i)=A(i,i)-s1;
 s1=0;
end
L=L+E
LT=L'
D=diag(d)
Y=L\b;
X=(D*LT)\Y;
End

追赶法计算问题 3

a=[-1 -1 -1 -1 -1 -1 -1 -1 -1];
b=[4 4 4 4 4 4 4 4 4 4];
c=[-1 -1 -1 -1 -1 -1 -1 -1 -1];
d=[7 5 -13 2 6 -12 14 -4 5 -5]';
zhuiganfa(a,b,c,d);
function [L,U,x] = zhuiganfa(a,b,c,d)
%追赶法解三对角型线性方程组
%*************写出增广矩阵 Z***********************
A=diag(a,-1)+diag(b)+diag(c,1);
Z=[A d];
[n m]=size(Z);
E=eye(n);
%*************计算 L、U 矩阵***********************
l(1)=A(1,1);
y(1)=d(1)/l(1);
for i=2:1:n
 u(i-1)=c(i-1)/l(i-1);
 l(i)=b(i)-a(i-1)*u(i-1);
 y(i)=(d(i)-a(i-1)*y(i-1))/l(i);
end
L=diag(l)+diag(a,-1)
U1=diag(u,1)+E;
U=[U1 y']
%**************计算方程组的解********************
x(n)=y(n);
for j=n-1:-1:1
 x(j)=y(j)-u(j)*x(j+1);
end
x
end
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值