MATLAB之GAUSS消元法解线性方程组

Matlab 之Gauss 消元法解线性方程组

1. Gauss 消元法

function x=DelGauss(a,b)

%Gauss 消去法

[n,m]=size(a);

nb=length(b);

det=1;%存储行列式值

x=zeros(n,1);

for k=1:n-1

for i=k+1:n

if a(k,k)==0

return

end

m=a(i,k)/a(k,k);

for j=k+1:n

a(i,j)=a(i,j)-m*a(k,j);

end

b(i)=b(i)-m*b(k);

end

det=det*a(k,k);%计算行列式

end

det=det*a(n,n);

for k=n:-1:1%回代求解

for j=k+1:n

b(k)=b(k)-a(k,j)*x(j);

end

x(k)=b(k)/a(k,k);

end

Example:

>>A=[1.0170-0.00920.0095;-0.00920.99030.0136;0.00950.01360.9898];

>>b=[101]';

>>x=DelGauss(A,b)

x =

0.9739

-0.0047

1.0010

2. 列主元Gauss 消去法:

function x=detGauss(a,b)

%Gauss 列主元消去法

[n,m]=size(a);

nb=length(b);

det=1;%存储行列式值

x=zeros(n,1);

for k=1:n-1

amax=0;%选主元

for i=k:n

if abs(a(i,k))>amax

amax=abs(a(i,k));r=i;

end

end

if amax

return;

end

if r>k%交换两行

for j=k:n

z=a(k,j);a(k,j)=a(r,j);a(r,j)=z;end

z=b(k);b(k)=b(r);b(r)=z;det=-det;end

for i=k+1:n%进行消元

m=a(i,k)/a(k,k);

for j=k+1:n

a(i,j)=a(i,j)-m*a(k,j);

end

b(i)=b(i)-m*b(k);

end

det=det*a(k,k);

end

det=det*a(n,n);

for k=n:-1:1%回代求解

for j=k+1:n

b(k)=b(k)-a(k,j)*x(j);

end

x(k)=b(k)/a(k,k);

end

Example:

>>x=detGauss(A,b)

x =

0.9739

-0.00471.0010

Matlab 之Gauss 消元法解线性方程组

1. Gauss 消元法

function x=DelGauss(a,b)

%Gauss 消去法

[n,m]=size(a);

nb=length(b);

det=1;%存储行列式值

x=zeros(n,1);

for k=1:n-1

for i=k+1:n

if a(k,k)==0

return

end

m=a(i,k)/a(k,k);

for j=k+1:n

a(i,j)=a(i,j)-m*a(k,j);

end

b(i)=b(i)-m*b(k);

end

det=det*a(k,k);%计算行列式

end

det=det*a(n,n);

for k=n:-1:1%回代求解

for j=k+1:n

b(k)=b(k)-a(k,j)*x(j);

end

x(k)=b(k)/a(k,k);

end

Example:

>>A=[1.0170-0.00920.0095;-0.00920.99030.0136;0.00950.01360.9898];

>>b=[101]';

>>x=DelGauss(A,b)

x =

0.9739

-0.0047

1.0010

2. 列主元Gauss 消去法:

function x=detGauss(a,b)

%Gauss 列主元消去法

[n,m]=size(a);

nb=length(b);

det=1;%存储行列式值

x=zeros(n,1);

for k=1:n-1

amax=0;%选主元

for i=k:n

if abs(a(i,k))>amax

amax=abs(a(i,k));r=i;

end

end

if amax

return;

end

if r>k%交换两行

for j=k:n

z=a(k,j);a(k,j)=a(r,j);a(r,j)=z;end

z=b(k);b(k)=b(r);b(r)=z;det=-det;end

for i=k+1:n%进行消元

m=a(i,k)/a(k,k);

for j=k+1:n

a(i,j)=a(i,j)-m*a(k,j);

end

b(i)=b(i)-m*b(k);

end

det=det*a(k,k);

end

det=det*a(n,n);

for k=n:-1:1%回代求解

for j=k+1:n

b(k)=b(k)-a(k,j)*x(j);

end

x(k)=b(k)/a(k,k);

end

Example:

>>x=detGauss(A,b)

x =

0.9739

-0.00471.0010


相关文章

  • 线性方程组求解matlab程序
  • 数学软件课程设计 题目 班级 数学081班 姓名 潘珊珊 实验目的 用Matlab语言实现Jacobi迭代算法.Gauss-Seidel迭代算法和逐次超松弛迭代法,求解一般的线性代数方程组问题. 实验内容 一.Jacobi迭代算法: 程序如 ...查看


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


  • 基于MATLAB的科学计算-解线性方程组的迭代法
  • 科学计算-理论.方法 及其基于 及其基于 MATLAB 的程序实现与分析 三. 解线性方程组的迭代法(Iteration) 解线性方程组的迭代法( ) 线性方程组的理论求解公式 x = A−1b (1) 在应用于实际问题的计算时,通常面临两 ...查看


  • 线性方程组的解法
  • 线性方程组的解法 1 引言 在科学研究和大型工程设计中出现了越来越多的数学问题,而这些问题往往需要求数值解.在进行数值求解时,经离散后,常常归结为求解形如Ax= b的大型线性方程组.而如插值公式,拟合公式等的建立,微分方程差分格式的构造等, ...查看


  • 用matlab解线性方程组
  • 用matlab解线性方程组 2008-04-12 17:00 一.高斯消去法 1.顺序高斯消去法 直接编写命令文件 a=[] d=[]' [n,n]=size(a); c=n+1 a(:,c)=d; for k=1:n-1 a(k+1:n, ...查看


  • 数值分析报告
  • 重庆交通大学计算机与信息学院 设计性实 验报告 班 级: 05计科(3)班 实验项目性质: 综合设计性实验 实验所属课程: 数 值 分 析 实验室(中心) : 计算机软件中心 指 导 教 师 : 程 攀 学 生 学 号 : 05060315 ...查看


  • 线性代数实验报告 1
  • 数学实验报告 学号: , 姓名: , 得分: 实验1 求解线性方程组 实验内容: 用MATLAB 求解如下线性方程组Ax = b , 其中 ⎡⎢56000000⎤⎢15600000⎥⎢01560000⎥A =⎢ 00156000⎥⎢⎥, b ...查看


  • 线性二次型最优控制器的实现
  • 南 京 师 范 大 学 最优化与最优控制 题 目:学 院:专 业:专业方向:班 级:姓 名:指导教师:填写日期: 最优化与最优控制 电气与自动化工程学院 控制理论与控制工程 基于ARM 的太阳跟踪系统 学 号: 131802030 魏骁 孙 ...查看


  • 非线性方程和线性方程的数值解
  • 非线性方程的几种数值解法 郭摇 摘要:现在许多科学理论和工程技术问题都最终要化成非线性方程f(x)=0或非线性方程组F(x)=0的求解.对于非线性方程的数值解法有很多种,如:二分法,简易牛顿法,斯蒂芬森迭代法,牛顿迭代法,割线法等. 关键字 ...查看


热门内容