线性方程组求解matlab程序

数学软件课程设计

题目 班级 数学081班 姓名 潘珊珊

实验目的

用Matlab语言实现Jacobi迭代算法、Gauss-Seidel迭代算法和逐次超松弛迭代法,求解一般的线性代数方程组问题。

实验内容

一、Jacobi迭代算法:

程序如下:

function y=jacobi(A,b,x0,r)

D=diag(diag(A));

U=triu(A,1);

L=tril(A,-1);

B=-D\(L+U);

f=D\b;

y=B*x0+f;

n=1;

while norm(y-x0)>=r&n

x0=y;

y=B*x0+f;

n=n+1;

end

fprintf('方程组的解 y=');

y

fprintf('\n');

fprintf('迭代次数 n=',y);

n

二、Gauss-Seidel迭代算法:

程序如下:

function y=gaussseidel(A,b,x0)

D=diag(diag(A));

U=-triu(A,1);

L=-tril(A,-1);

G=(D-L)\U;

f=(D-L)\b;

y=G*x0+f;

n=1;

while norm(y-x0)>=1.0e-6&n

x0=y;

y=G*x0+f;

n=n+1;

end

fprintf('方程组的解y=');

y

fprintf('迭代次数n=',y);

n

三、松弛法:

程序如下:

function y=sor(A,b,w,x0) D=diag(diag(A));

U=triu(A,1);

L=tril(A,-1);

lw=(D-w*L)\((1-w)*D+w*U); f=(D-w*L)\b*w;

y=lw*x0+f;

n=1;

while norm(y-x0)>=1.0e-6&n

y=lw*x0+f;

n=n+1;

end

fprintf('方程组的解 y='); y

fprintf('\n');

fprintf('迭代次数 n=',y); n

实验结果

一、Jacobi迭代算法:

A=[4 1 1;1 4 2;2 2 8];

b=[2;3;4];

x0=[0;0;0];

a(A,b,x0,0.001)

方程组的解 y=

y =

0.2940

0.5292

0.2940

迭代次数 n=

n =

14

ans =

0.5292

0.2940

二、Gauss-Seidel迭代算法:

A=[4 1 1;1 4 2;2 2 8]; >> b=[2;3;4];

>> x0=[0;0;0];

>> gauss(A,b,x0)

方程组的解y=

y =

0.2941

0.5294

0.2941

迭代次数n=

n =

10

ans =

0.2941

0.5294

0.2941

三、松弛法:

A=[1 2 3;2 1 3;1 2 6]; >> b=[1;2;3];

>> x0=[0;0;0];

>> sor(A,b,1.1,x0)

方程组的解 y=

y =

1.0e+308 *

1.7796

Inf

Inf

迭代次数 n=

n =

320

ans =

1.0e+308 *

1.7796

Inf

Inf

数学软件课程设计

题目 班级 数学081班 姓名 潘珊珊

实验目的

用Matlab语言实现Jacobi迭代算法、Gauss-Seidel迭代算法和逐次超松弛迭代法,求解一般的线性代数方程组问题。

实验内容

一、Jacobi迭代算法:

程序如下:

function y=jacobi(A,b,x0,r)

D=diag(diag(A));

U=triu(A,1);

L=tril(A,-1);

B=-D\(L+U);

f=D\b;

y=B*x0+f;

n=1;

while norm(y-x0)>=r&n

x0=y;

y=B*x0+f;

n=n+1;

end

fprintf('方程组的解 y=');

y

fprintf('\n');

fprintf('迭代次数 n=',y);

n

二、Gauss-Seidel迭代算法:

程序如下:

function y=gaussseidel(A,b,x0)

D=diag(diag(A));

U=-triu(A,1);

L=-tril(A,-1);

G=(D-L)\U;

f=(D-L)\b;

y=G*x0+f;

n=1;

while norm(y-x0)>=1.0e-6&n

x0=y;

y=G*x0+f;

n=n+1;

end

fprintf('方程组的解y=');

y

fprintf('迭代次数n=',y);

n

三、松弛法:

程序如下:

function y=sor(A,b,w,x0) D=diag(diag(A));

U=triu(A,1);

L=tril(A,-1);

lw=(D-w*L)\((1-w)*D+w*U); f=(D-w*L)\b*w;

y=lw*x0+f;

n=1;

while norm(y-x0)>=1.0e-6&n

y=lw*x0+f;

n=n+1;

end

fprintf('方程组的解 y='); y

fprintf('\n');

fprintf('迭代次数 n=',y); n

实验结果

一、Jacobi迭代算法:

A=[4 1 1;1 4 2;2 2 8];

b=[2;3;4];

x0=[0;0;0];

a(A,b,x0,0.001)

方程组的解 y=

y =

0.2940

0.5292

0.2940

迭代次数 n=

n =

14

ans =

0.5292

0.2940

二、Gauss-Seidel迭代算法:

A=[4 1 1;1 4 2;2 2 8]; >> b=[2;3;4];

>> x0=[0;0;0];

>> gauss(A,b,x0)

方程组的解y=

y =

0.2941

0.5294

0.2941

迭代次数n=

n =

10

ans =

0.2941

0.5294

0.2941

三、松弛法:

A=[1 2 3;2 1 3;1 2 6]; >> b=[1;2;3];

>> x0=[0;0;0];

>> sor(A,b,1.1,x0)

方程组的解 y=

y =

1.0e+308 *

1.7796

Inf

Inf

迭代次数 n=

n =

320

ans =

1.0e+308 *

1.7796

Inf

Inf


相关文章

  • 用matlab实现线性常系数差分方程的求解
  • 数字信号处理课程设计 题目: 试实现线性常系数差分方程的求解 学院: 专业: 班级: 学号: 组员: 指导教师: 题目:用Matlab 实现线性常系数差分方程求解 一. 设计要求 1. 2. 3. 掌握线性常系数差分方程的求解 熟练掌握Ma ...查看


  • 数值分析学习心得体会
  • 数值分析学习感想 一个学期的数值分析,在老师的带领下,让我对这门课程有了深刻的理解和感悟.这门 课程是一个十分重视算法和原理的学科,同时它能够将人的思维引入数学思考的模式,在处 理问题的时候,可以合理适当的提出方案和假设.他的内容贴近实际, ...查看


  • 数值分析作业思考题
  • 数值分析思考题1 1.讨论绝对误差(限).相对误差(限)与有效数字之间的关系. 2.相对误差在什么情况下可以用下式代替? e *x *-x e =*= x x * *r 3.查阅何谓问题的"病态性",并区分与" ...查看


  • MATLAB求解数学模型的基本知识
  • MATLAB 求解数学模型的基本知识 目录 1. 熟悉MATLAB 软件运算环境 ............................................................................... ...查看


  • 线性方程组的数值解法
  • <大学数学实验>作业 线性方程组的数值解法 班级: 姓名: 学号: 日期: 目录 目录 ...................................................................... ...查看


  • 线性矩阵不等式的MATLAB求解
  • [摘 要]本文介绍了有关线性矩阵不等式的一些基本概念.对用于求解线性矩阵不等式的MATLAB中的线性矩阵不等式工具箱作了简要说明.为了更加说明线性矩阵不等式的求解过程.文中还给出了相关的程序命令,以及示例. [关键词]线性矩阵不等式:MAT ...查看


  • MATLAB在工程力学教学中的应用
  • 摘 要 针对传统工程力学教学中,较为复杂的计算和作图不便于学生全面理解学习内容.且占用过多课堂教学时间的问题,将计算和作图交给计算机,运用MATLAB数学计算软件编制程序来解决,大大提高课堂教学效率,提升了学生的学习效率,加深了学生对所学内 ...查看


  • 高斯列主元消去法解线性方程组
  • 线性方程组的数值解法 --高斯列主元消去法解线性方程组的MATLAB实现 班级:MATH 20XX 学号:xxxxxxxxxx 姓名:LI Wen 高斯列主元消去法解线性方程组的MATLAB实现 摘 要 在自然科学和工程技术中许多问题的解决 ...查看


  • 线性代数实验报告
  • 线性代数实验报告 2013年12月24日 数学实验报告题目 一. 实验目的 1.熟悉MATLAB 的矩阵初等运算: 2.掌握求矩阵的秩.逆.化最简阶梯形的命令: 3.会用MABLAB 求解线性方程组 二. 实验问题 34⎤⎡4-22⎤⎡1 ...查看


热门内容