数值分析编程及运行结果(高斯顺序消元法)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高斯消元法1.程序:
clear
format rat
A=input('输入增广矩阵A=')
[m,n]=size(A);
for i=1:(m-1)
numb=int2str(i);
disp(['第',numb,'次消元后的增广矩阵']) for j=(i+1):m
A(j,:)=A(j,:)-A(i,:)*A(j,i)/A(i,i);
end
A
end
%回代过程
disp('回代求解')
x(m)=A(m,n)/A(m,m);
for i=(m-1):-1:1
x(i)=(A(i,n)-A(i,i+1:m)*x(i+1:m)')/A(i,i); end
x
2.运行结果:
高斯选列主元消元法1.程序:
clear
format rat
A=input('输入增广矩阵A=')
[m,n]=size(A);
for i=1:(m-1)
numb=int2str(i);
disp(['第',numb,'次选列主元后的增广矩阵']) temp=max(abs(A(i:m,i)));
[a,b]=find(abs(A(i:m,i))==temp);
tempo=A(a(1)+i-1,:);
A(a(1)+i-1,:)=A(i,:);
A(i,:)=tempo
disp(['第',numb,'次消元后的增广矩阵'])
for j=(i+1):m
A(j,:)=A(j,:)-A(i,:)*A(j,i)/A(i,i);
end
A
end
%回代过程
disp('回代求解')
x(m)=A(m,n)/A(m,m);
for i=(m-1):-1:1
x(i)=(A(i,n)-A(i,i+1:m)*x(i+1:m)')/A(i,i); end
x
2.运行结果:
追赶法1.程序:
function [x,L,U]=zhuiganfa(a,b,c,f)
a=input('输入矩阵-1对角元素a=');
b=input('输入矩阵对角元素b=');
c=input('输入矩阵+1对角元素c=');
f=input('输入增广矩阵最后一列元素f='); n=length(b);
% 对A进行分解
u(1)=b(1);
for i=2:n
if(u(i-1)~=0)
l(i-1)=a(i-1)/u(i-1);
u(i)=b(i)-l(i-1)*c(i-1);
else
break;
end
end
L=eye(n)+diag(l,-1);
U=diag(u)+diag(c,1);
x=zeros(n,1);
y=x;
% 求解Ly=b
y(1)=f(1);
for i=2:n
y(i)=f(i)-l(i-1)*y(i-1); end
% 求解Ux=y
if(u(n)~=0)
x(n)=y(n)/u(n);
end
for i=n-1:-1:1
x(i)=(y(i)-c(i)*x(i+1))/u(i); end
2.运行结果:
高斯-塞德尔迭代格式
1.程序:
function x=Gauss_Seidel(a,b)
a=input('输入系数矩阵a=')
b=input('输入增广矩阵最后一列b=');
e=0.5e-7;
n=length(b);
N=50;
x=zeros(n,1);
t=zeros(n,1);
for k=1:N
sum=0;
E=0;
t(1:n)=x(1:n);
for i=1:n
x(i)=(b(i)-a(i,1:(i-1))*x(1:(i-1))-a(i,(i+1):n)*t((i+1):n))/a(i,i);
end
if norm(x-t) k break; end end 2.运行结果: 雅戈比迭代格式1.程序: function x=Jocabi(a,b) a=input('输入系数矩阵a='); b=input('输入增广矩阵最后一列b='); e=0.5e-7; n=length(b); N=100; x=zeros(n,1); y=zeros(n,1); for k=1:N sum=0; for i=1:n y(i)=(b(i)-a(i,1:n)*x(1:n)+a(i,i)*x(i))/a(i,i); end for i=1:n sum=sum+(y(i)-x(i))^2; end if sqrt(sum) k break; else for i=1:n x(i)=y(i); end end end if k==N warning('未能找到近似解'); end 2.运行结果: