好文档 - 专业文书写作范文服务资料分享网站

计算方法实验报告材料-线性方程组地数值解法

天下 分享 时间: 加入收藏 我要投稿 点赞

实用文档

重 庆 大 学

学 生 实 验 报 告

实验课程名称 计算方法

开课实验室 DS1421

学 院 年级 专业

学 生 姓 名 学 号

开 课 时 间 至 学年 第 学期

总 成 绩 教师签名

实用文档

1.实验目的

(1)高斯列主元消去法求解线性方程组的过程 (2)熟悉用迭代法求解线性方程组的过程

(3)设计出相应的算法,编制相应的函数子程序

2.实验内容

分别用高斯列主元消去法 ,Jacobi迭代法,Gauss--Saidel迭代法,超松弛迭代法求解线性方程组

0?3??x1??10??210??3?4?1213??x??5????2???? ?123?4??x3???2???????4149?13???x4??7?3.实验过程

解:(1)高斯列主元消去法

编制高斯列主元消去法的M文件程序如下: %高斯列主元消元法求解线性方程组Ax=b %A为输入矩阵系数,b为方程组右端系数 %方程组的解保存在x变量中

format long;%设置为长格式显示,显示15位小数 A=[2,10,0,-3;-3,-4,-12,13;1,2,3,-4;4,14,9,-13] b=[10,5,-2,7]' [m,n]=size(A); %先检查系数正确性 if m~=n

error('矩阵A的行数和列数必须相同'); return; end

if m~=size(b)

error('b的大小必须和A的行数或A的列数相同'); return; end

%再检查方程是否存在唯一解 if rank(A)~=rank([A,b])

error('A矩阵的秩和增广矩阵的秩不相同,方程不存在唯一解'); return; end c=n+1;

A(:,c)=b; %(增广) for k=1:n-1

实用文档

[r,m]=max(abs(A(k:n,k))); %选主元 m=m+k-1; %修正操作行的值 if(A(m,k)~=0) if(m~=k)

A([k m],:)=A([m k],:); %换行 end

A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去 end end

x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1

x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k); end

disp('X='); disp(x);

format short;%设置为默认格式显示,显示5位 运行,结果如下所示:

(2)Jacobi迭代法

编制迭代计算的M文件程序如下:

%Jacobi迭代法求解

实用文档

% A为方程组的增广矩阵 clc;

A=[2,10,0,-3,10;-3,-4,-12,13,5;1,2,3,-4,-2;4,14,9,-13,7] MAXTIME=50;%最多进行50次迭代 eps=1e-5;%迭代误差 [n,m]=size(A);

x=zeros(n,1);%迭代初值 y=zeros(n,1); k=0;

%进入迭代计算

disp('迭代过程X的值情况如下:') disp('X='); while 1

disp(x'); for i=1:1:n s=0.0; for j=1:1:n if j~=i

s=s+A(i,j)*x(j); end

y(i)=(A(i,n+1)-s)/A(i,i); end end

for i=1:1:n

maxeps=max(0,abs(x(i)-y(i))); %检查是否满足迭代精度要求 end

if maxeps<=eps%小于迭代精度退出迭代 for i=1:1:n

x(i)=y(i);%将结果赋给x end return; end

for i=1:1:n%若不满足迭代精度要求继续进行迭代 x(i)=y(i); y(i)=0.0; end k=k+1;

if k>MAXTIME%超过最大迭代次数退出 error('超过最大迭代次数,退出'); return; end end

运行该程序结果如下:

实用文档

(3)Gauss--Saidel迭代法

计算方法实验报告材料-线性方程组地数值解法

实用文档重庆大学学生实验报告实验课程名称计算方法开课实验室DS1421学院年级专业
推荐度:
点击下载文档文档为doc格式
3mi0777bch2mdyx423a46cyp27lz4y01bqs
领取福利

微信扫码领取福利

微信扫码分享