MATLAB样例之雅克比迭代法

合集下载

matlab解二元方程组

matlab解二元方程组

matlab解二元方程组

标题:MATLAB解二元方程组

摘要:

本文将深入探讨如何使用MATLAB解决二元方程组问题。我们将从简单的线性方程组入手,逐渐扩展到非线性和高阶方程组。通过详细的

示例和解释,我们帮助读者理解MATLAB在解决二元方程组中的应用。

引言:

解二元方程组是数学中常见的问题,它在科学、工程以及经济学等领

域中都有广泛的应用。MATLAB作为一种功能强大的数学软件,提供

了丰富的工具和函数,能够轻松解决这类问题。本文将通过示例演示MATLAB解二元方程组的基本方法,并逐步引入更多复杂的情况。

1. 线性二元方程组的解法

1.1 列主元消元法

1.2 矩阵求逆法

1.3 MATLAB中的线性方程组求解函数

2. 非线性二元方程组的解法

2.1 牛顿法

2.2 雅可比迭代法

2.3 MATLAB中的非线性方程组求解函数

3. 高阶二元方程组的解法

3.1 矩阵法

3.2 MATLAB中的高阶方程组求解函数

4. 总结和回顾

4.1 对线性、非线性和高阶二元方程组进行对比分析

4.2 选择合适的方法和函数进行求解的考虑因素

4.3 对MATLAB求解二元方程组的优缺点讨论

结论:

本文详细介绍了MATLAB解二元方程组的方法和应用。通过对线性、非线性和高阶方程组求解的研究,我们了解了不同问题的求解策略和MATLAB函数的使用方法。希望本文能够帮助读者更好地掌握MATLAB在解二元方程组中的作用,并应用于实际问题中。

观点和理解:

MATLAB作为一种强大的数学工具,能够方便地解决各种二元方程组问题。通过熟练掌握线性、非线性和高阶方程组的解法,我们可以更好地应用MATLAB解决实际问题。在选择解法时,需要根据问题的特点和求解的要求进行权衡与选择。总之,MATLAB在解二元方程组中

雅克比迭代法求线性方程组的根

雅克比迭代法求线性方程组的根

实验二 雅可比迭代法求线性方程组的根

一、实验目的

学习用雅可比迭代法求线性方程组的解。

二、实验题目

求线性方程组

⎪⎩⎪⎨⎧=++=++=-+11054722156851627321

321321x x x x x x x x x

的根,精确到0.0001。

三、实验原理

将方程组按雅可比方法写成

⎪⎪⎪⎩

⎪⎪⎪⎨⎧+--=+--=++-=275554154152415252278527192213312321x x x x x x x x x 由此可以得到迭代公式:

⎪⎪⎪⎩

⎪⎪⎪⎨⎧+--=+--=++-=+++275554154152415252278527192)(2)(1)1(3)(3)(1)1(2)(3)(2)1(1n n n n n n n n n x x x x x x x x x n = 0, 1, 2, …

四、实验内容

取初始向量为:0)0(1=x ,0)0(2=x ,0)0(3

=x 运行程序,记录计算结果。

五、源程序(Matlab)

clear

clc

n=input('n=');

A=input('A=');

b=input('b=');

x0=input('x0=');

x0=zeros(n,1);

x=x0;

epsilon=input('\n 精度=');

N=input('\n 最大迭代次数N=');

fprintf('\n %d:',0);

for i=1:n

fprintf('%f',x0(i));

end

%以下是迭代过程

for k=1:N

%这是第k步迭代,迭代前的向量在x0[]中,迭代后的向量在x[]中;

3.2Jacobi迭代法和Gauss-Seidel迭代法

3.2Jacobi迭代法和Gauss-Seidel迭代法

计算结果为 迭代次数= 10 x= 1.000118598691415 1.999767947010035 - 0.999828142874476 0.999785978460050
3.2.3 Gauss-Seidel迭代法
将Jacobi迭代法的迭代公式 (3.2.2) 改写为
xi
k 1
1 aii
算法3.1的 Matlab 程序
步骤2.2 若 x k 1 x k ,则算法停止,输出
方程组的近似解 xk 1;否则,令 x k : x k 1 , k : k 1 .
步骤3 终止.
输出信息“算法超出最大迭代次数!”,算法
Matlab 程序如下:
%Jacobi.m function x = Jacobi (A, b, x0, eps, N) % 功能:用Jacobi迭代法解n 阶线性方程组 Ax=b n=length(b); x=ones(n,1); k=0;
下面推导Gauss Seidel迭代法的矩阵形式:
据(3.2.3), 将方程组(3.2.1)改写为
( D L U ) x b,

Dx Lx Ux b,
根据式(3.2.10),取迭代公式为
Dxk 1 Lxk 1 Uxk b,
即 x k 1 ( D L)1Ux k ( D L)1 b,

matlab方程组数值解法

matlab方程组数值解法

matlab方程组数值解法

Matlab方程组数值解法

随着科学技术的发展,数值计算在科学研究和工程实践中的应用越来越广泛。对于复杂的数学模型,通过解析方法求得准确的解析解往往是困难的甚至不可能的。因此,数值解法成为了求解这些问题的重要手段之一。Matlab作为一种强大的数值计算工具,提供了多种数值解法来解决方程组的数值求解问题。

在Matlab中,求解方程组的数值解法主要包括直接法和迭代法两种。直接法是指通过一系列直接计算来求解方程组的解,常见的方法有高斯消元法和LU分解法。迭代法则是通过迭代计算来逼近方程组的解,常见的方法有雅可比迭代法和高斯-赛德尔迭代法。

高斯消元法是一种经典的直接法,它通过消元和回代的方式将方程组化为简化的三角方程组,然后通过回代计算得到解。Matlab中提供了直接调用的函数,如"linsolve"函数,可以直接求解线性方程组。对于非线性方程组,可以通过牛顿法等迭代法来求解。

LU分解法是另一种常用的直接法,它将方程组的系数矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积,然后通过回代计算得到解。在Matlab中,可以使用"lu"函数进行LU分解,并通过"\"运算符求解线性方程组。

雅可比迭代法是一种简单而有效的迭代法,它通过迭代计算逐步逼

近方程组的解。在每一步迭代中,通过将方程组中的每个未知数的迭代解代入到方程组中的对应方程中,得到新的近似解。通过多次迭代,可以得到逼近方程组解的解向量。在Matlab中,可以使用"jacobi"函数进行雅可比迭代。

高斯-赛德尔迭代法是雅可比迭代法的改进版,它在每一步迭代中使用上一步迭代得到的未知数的新近似解。这样可以更快地逼近方程组的解。在Matlab中,可以使用"gauss_seidel"函数进行高斯-赛德尔迭代。

matlab jacobi迭代法代码

matlab jacobi迭代法代码

matlab jacobi迭代法代码

Matlab是一种常用的数学软件,它具有强大的矩阵计算和绘图功能。在数值计算中,迭代法是一种重要的求解方法。本文将介绍如何使用Matlab实现Jacobi迭代法,并运用实例来说明其应用。

Jacobi迭代法是一种经典的迭代法,用于解线性方程组。它的基本思想是通过迭代逐步逼近方程组的解。具体而言,对于线性方程组Ax=b,Jacobi迭代法通过以下步骤进行计算:

1. 将方程组表示为x=D^(-1)(L+U)x+b的形式,其中D为A的对角矩阵,L为A的严格下三角矩阵,U为A的严格上三角矩阵。

2. 初始化解向量x^(0)为一个初始猜测值,通常取零向量。

3. 根据迭代公式x^(k+1)=D^(-1)(b-(L+U)x^(k)),计算下一迭代解x^(k+1)。

4. 重复步骤3,直到解向量收敛于方程组的解。

下面是一个使用Matlab实现Jacobi迭代法的示例代码:

```matlab

function x = Jacobi(A, b, maxIter, tolerance)

n = size(A, 1);

x = zeros(n, 1);

xPrev = x;

iter = 0;

while iter < maxIter

for i = 1:n

sigma = A(i, 1:i-1) * xPrev(1:i-1) + A(i, i+1:n) * xPrev(i+1:n);

x(i) = (b(i) - sigma) / A(i, i);

end

if norm(x - xPrev) < tolerance

雅可比迭代法的MATLAB程序

雅可比迭代法的MATLAB程序

雅可比迭代法的MATLAB程序:

Function[x,k,index]=Jacobi(A,b,ep,it-max)

% 求线性方程组的雅可比法;

% A为方程组的系数矩阵;

% b为方程组的右端项;

% x为方程组的解;

% ep为精度要求,缺省值为le-5;

% it_max为最大迭代次数,缺省值为100;

% k为迭代次数;

% index 为指标变量,index=0表示计算失败,index=1表示计算成功; if nargin<4

it_max=100;

end

if nargin<3

ep=le-5;

end

n=length(A);k=0;x=zeros(n,1);y=zeros(n,1);index=1;

while k<=it_max

for i=1:n

if abs (A(i,i))<le-10

index=0;

return;

end

y(i)=(b(i)-A(i,1:n)*x(1:n)+A(i,i)*x(i))/A(i,i);

end

if norm(y-x,inf)<ep

break;

end

k=k+1;

x=y;

end

高斯-赛德尔迭代的MATLAB程序

Function[x,k,index]=Gau-seidel(A,b,ep,it-max)

% 求线性方程组的高斯-赛德尔迭代法;

% A为方程组的系数矩阵;

% b为方程组的右端项;

% x为方程组的解;

% ep为精度要求,缺省值为le-5;

% it_max为最大迭代次数,缺省值为100;

% k为迭代次数;

% index 为指标变量,index=0表示计算失败,index=1表示计算成功; if nargin<4

matlab解状态方程

matlab解状态方程

Matlab解状态方程详解

一、引言

状态方程是描述系统动态行为的重要工具,广泛应用于控制工程、电子工程、机械工程等领域。在Matlab中,可以使用各种方法来解状态方程,包括直接法、迭代法和优化法等。本文将详细介绍Matlab解状态方程的几种常用方法,并给出相应的示例代码。

二、直接法

直接法是解状态方程最简单的方法之一。对于简单的一阶或二阶线性时不变系统,可以通过简单的代数运算得到状态变量的解。对于更复杂的多阶非线性系统,可能需要使用数值方法进行求解。

在Matlab中,可以使用以下代码实现直接法:

三、迭代法

迭代法是一种通过不断迭代来逼近状态变量解的方法。常用的迭代法包括欧拉法、龙格-库塔法和雅可比迭代法等。

在Matlab中,可以使用以下代码实现欧拉法:

四、优化法

优化法是一种通过最小化某个代价函数来求解状态方程的方法。常用的优化法包括梯度下降法、牛顿法和拟牛顿法等。

在Matlab中,可以使用以下代码实现梯度下降法:

用雅可比迭代法和高斯赛德尔迭代法解线性方程组

用雅可比迭代法和高斯赛德尔迭代法解线性方程组

西安财经学院

本科实验报告

学院(部)统计学院

实验室数学专业实训基地

课程名称大学数学实验

学生姓名董童丹(编程)杨媚(实验报告)学号0804280125 0804280126

专业数学与应用数学0801

教务处制

二0一一年五月四日

《用雅可比迭代法和高斯赛德尔迭代法解线性方程组》实验报告

开课实验室:实验室313 2011年5月 4日 学院 统计学院

年级、专业、班

数学与应用数学0801班

姓名 董童丹 杨媚

成绩

课程 名称

大学数学实验

实验项目 名 称 用雅可比迭代法和高斯赛德尔迭代法解线性方程组

指导教师

严惠云

教师评语

教师签名:

年 月 日

一、实验目的:

1)掌握用MATLAB 软件求微分方程初值问题数值解的方法; 2)通过实例学习用线性方程组模型解决简化的实际问题; 3)了解用雅可比迭代法和高斯赛德尔迭代法解线性方程组。 二、实验环境:

本次上机实践所使用的平台和相关软件Matlab 。 三、实验内容:

*题目1、分别用雅可比迭代法和高斯-赛德尔迭代法计算下列方程组,均取相同的初值

T x )1,1,1()0(=,观察其计算结果,并分析其收敛性.

⎪⎩⎪

⎨⎧=++=++-=--4

780591109321

321321x x x x x x x x x

2、定义矩阵⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦

⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣

----

----

------

=32

141213214

141213214141213

214121

3

A

*算法设计

1、雅可比迭代法:

原线性方程组可等价地写为:⎪⎩⎪

⎨⎧+--=-=++=.

478,59,1109213

matlab中jacobi迭代法

matlab中jacobi迭代法

一、简介

Matlab中jacobi迭代法是一种用于求解线性方程组的迭代方法,适用于系数矩阵为对称、正定矩阵的情况。该迭代方法通过将系数矩阵分解为对角矩阵、上三角矩阵和下三角矩阵的形式,然后通过迭代计算得到方程组的解。在Matlab中,可以利用矩阵运算和迭代循环来实现jacobi迭代法。

二、 jacobi迭代法原理

1. 基本思想

jacobi迭代法的基本思想是将系数矩阵分解为对角矩阵D、上三角矩阵U和下三角矩阵L的形式,即A=D+L+U,其中D为系数矩阵A 的对角线元素组成的对角矩阵,L为系数矩阵A的下三角部分,U为系数矩阵A的上三角部分。令x为方程组的解向量,b为方程组的右端向量,则方程组可表示为Ax=b。

根据方程组的性质,可将方程组表示为(D+L+U)x=b,然后利用迭代的方式逐步逼近方程组的解。

2. 迭代公式

假设迭代到第k次,方程组可表示为(D+L+U)x=b,将其转化为迭代形式x(k+1)=(D+L)^(-1)(b-Ux(k)),利用迭代公式可以逐步计算出方程组的解。

3. 收敛条件

对于jacobi迭代法,收敛条件为系数矩阵A为对角占优矩阵或正定矩阵。如果满足这一条件,迭代计算会逐步收敛于方程组的解。

三、 Matlab中jacobi迭代法实现

在Matlab中,可以利用矩阵运算和迭代循环来实现jacobi迭代法。

具体步骤如下:

1. 对系数矩阵进行分解

将系数矩阵A分解为对角矩阵D、上三角矩阵U和下三角矩阵L的形式。

2. 初始化迭代变量

初始化迭代的初始值x0、迭代次数k、逐次逼近解向量x(k+1)。

基于Matlab的解线性方程组的几种迭代法的实现及比较

基于Matlab的解线性方程组的几种迭代法的实现及比较

基于Matlab的解线性方程组的几种迭代法的实现及比较

线性方程组的解法有很多种,其中一类常用的方法是迭代法。迭代法根据一个初值逐步逼近方程组的解,在每一次迭代中利用现有的信息产生新的近似值,并不断地修正。下面介绍基于Matlab的三种迭代法:雅可比迭代法、高斯-赛德尔迭代法和超松弛迭代法,并进行比较。

1. 雅可比迭代法

雅可比迭代法是迭代法中最简单的一种方法。对于线性方程组Ax=b,雅可比迭代法的迭代公式为:

x_{i+1}(j)=1/a_{jj}(b_j-\\sum_{k=1,k\

eq j}^n a_{jk}x_i(k))

其中,i表示迭代次数,j表示未知数的下标,x_i表示第i次迭代的近似解,a_{jk}表示系数矩阵A的第j行第k列元素,b_j 表示方程组的常数项第j项。

在Matlab中,可以使用以下代码实现雅可比迭代:

function [x,flag]=jacobi(A,b,X0,tol,kmax)

n=length(b);

x=X0;

for k=1:kmax

for i=1:n

x(i)=(b(i)-A(i,:)*x+A(i,i)*x(i))/A(i,i);

end

if norm(A*x-b)<tol

flag=1;

return

end

end

flag=0;

return

其中,参数A为系数矩阵,b为常数项列向量,X0为初值列向量,tol为迭代误差容许值(默认为1e-6),kmax为最大迭代次数(默认为1000)。函数返回值x为近似解列向量,flag表示是否满足容许误差要求。

2. 高斯-赛德尔迭代法

线性方程组解法 (雅可比 高斯赛德尔 SOR)

线性方程组解法 (雅可比 高斯赛德尔 SOR)

实验作业(一)

本章实验内容:

实验题目:Jacobi 迭代法,Gauss-Saidel 迭代法,SOR 迭代法。 实验内容:利用MATLAB ,编制求Ax=b 的各迭代计算方法的程序。

实验目的:了解迭代法的运用性,进行各迭代法数值结果的比较,并找出一个计

算量小的,使迭代法加速收敛的迭代方法。

编程要求:①利用迭代法,初始向量为x (0)

②同时利用Jacobi 法和Gauss-Seidel 法来进行对比。

③利用SOR 迭代法来进行对比。

计算算法:①Jacobi 迭代法的算法为:

()()⎪⎪⎪⎩⎪⎪⎪⎨⎧==-==∑≠=+.,1,0,,2,1/)(),,()(1)1()0()0(1)0(表示迭代次数

k n i a x a b x x x x

ii k j n i j j ij i k i T n ②Gauss-Saidel 迭代法的算法为:

()()⎪⎪⎩

⎪⎪⎨⎧==--==∑∑+=-=++.,1,0,,1/)(),,()(111)1()1()0()0(1)0( k n i a x a x a b x x x x ii k j n i j ij i j k j ij i k i T

n ③SOR 迭代法的算法为:

()

⎪⎪⎪⎩⎪⎪⎪⎨⎧==--+==∑∑-==++.1,0;,,2,1/)(,),,(11)()1()()1()0()0(1)0(为松弛因子

ωωk n i i j n i j ii k j ij k j ij i k i k i T n a x a x a b x x x x x 例1 利用Jacobi 方法求方程组

matlab迭代法解方程

matlab迭代法解方程

matlab迭代法解方程

在MATLAB中,可以使用迭代法求解方程。迭代法的一般步骤如下:

1. 选择一个初始猜测值。

2. 根据某种迭代公式,计算下一个近似解。

3. 根据设定的停止准则,判断迭代是否结束。常见的停止准则可以是近似解的相对误差小于某个给定的值,或者迭代次数达到了预设的最大次数。

4. 如果迭代未结束,将计算得到的近似解作为新的猜测值,回到步骤2;否则,停止迭代,并输出最终的近似解。

下面是一个使用迭代法求解方程的示例代码:

```matlab

function x = iterativeMethod(equation, x0, epsilon, maxIter)

syms x;

f = equation;

df = diff(f, x);

x_prev = x0;

for i = 1:maxIter

x_new = x_prev - subs(f, x, x_prev) / subs(df, x, x_prev);

if abs(x_new - x_prev) < epsilon

x = x_new;

return;

end

x_prev = x_new;

end

error('Maximum iteration reached. No solution found.');

end

```

使用该函数时,需要传入四个参数:`equation`是方程的符号表达式,`x0`是初始猜测值,`epsilon`是停止迭代的相对误差阈值,`maxIter`是最大迭代次数。

例如,要求方程sin(x) - x^2 = 0的解,可以使用以下代码:

三种迭代法雅克比、高斯赛贝尔、超松弛求解方程组实验报告

三种迭代法雅克比、高斯赛贝尔、超松弛求解方程组实验报告

大连民族学院

数学实验报告

课程:数值分析与软件

实验题目: 分别用Jacobi、Gauss-Seidel、SOR迭代法求解线性方程组系别:理学院

专业:数学与应用数学

姓名:赵英翠

班级:数学101

指导教师:牛大田

完成学期:2012 年 4 月14 日

Jacobi迭代法 Gauss-Seidel迭代法

Jacobi迭代法 Gauss-Seidel迭代法

Matlab线性方程组的迭代解法(Jacobi迭代法Gauss-Seidel迭代法)实验报告2008年11月09日星期日12:49

1.熟悉Jacobi迭代法,并编写Matlab程序matlab程序

按照算法(Jacobi迭代法)编写Matlab程序(Jacobi.m)

function [x, k, index]=Jacobi(A, b, ep, it_max)

%求解线性方程组的Jacobi迭代法,其中

% A ---方程组的系数矩阵

% b ---方程组的右端项

% ep ---精度要求。省缺为1e-5

% it_max ---最大迭代次数,省缺为100

% x ---方程组的解

% k ---迭代次数

% index --- index=1表示迭代收敛到指定要求;

% index=0表示迭代失败

if nargin <4 it_max=100; end

if nargin <3 ep=1e-5; end

n=length(A); k=0;

x=zeros(n,1); y=zeros(n,1); index=1;

while 1

for i=1:n

y(i)=b(i);

for j=1:n

if j~=i

y(i)=y(i)-A(i,j)*x(j);

end

end

if abs(A(i,i))<1e-10 | k==it_max

index=0; return;

end

y(i)=y(i)/A(i,i);

end

if norm(y-x,inf)

break;

end

x=y; k=k+1;

end

用Jacobi迭代法求方程组

的解。

输入:

A=[4 3 0;3 3 -1;0 -1 4];

雅可比迭代法与高斯-塞德尔迭代法

雅可比迭代法与高斯-塞德尔迭代法

线性方程组的迭代法

一、实验目的及要求

掌握解线性方程组的雅可比迭代法,培养编程与上机调试能力。

二、相关理论知识

1、雅可比迭代

计算b Ax =,将系数矩阵分解U L D A --=,雅可比迭代格式为

f Jx x k k +=+)()1(

其中)(1U L D J +=-,b D f 1-=。

Matlab 相关函数:

D=diag (diag (A ))

n=norm(a,inf) 表示求向量a 的无穷范数。

2、高斯-塞德尔迭代法

计算b Ax =,将系数矩阵分解U L D A --=,雅可比迭代格式为

f Gx x k k +=+)()1(

其中U L D G 1)(--=,b L D f 1)(--=。

Matlab 相关函数:

tril (A ,-1) 表示输出矩阵为矩阵A 的下三角,主对角线元素为0.

triu (A ,1) 表示输出矩阵为矩阵A 的上三角,主对角线元素为0.

三、研究、解答以下问题

问题 1、用雅可比迭代法解线性方程组

⎪⎩⎪⎨⎧=++=++=++2010311102143210321

321321x x x x x x x x x , (1)取初始值)0,0,0(',分别保证当3)

()1(10-∞+<-k k x x 和

6)()1(10-∞+<-k k x x 时,迭代终止,要求输出对应的近似解。

(2)输出对应的迭代的次数。

(3)输出一个矩阵,每行表示每次迭代的向量。

1.程序:

function [x,i,G]=kb(A,b,max,eps)

A=[10 2 3;2 10 1;3 1 10];

雅可比迭代实验报告

雅可比迭代实验报告

雅可比迭代实验报告

一、实验目的

通过实验掌握雅可比迭代方法的基本原理及步骤,能够在Matlab软件平台上编写该迭代方法,进一步加深对线性方程组迭代算法的认识。

二、实验原理

雅可比迭代法是一种求解线性方程组解的迭代算法,它是最古老的、最基本的迭代算

法之一,常用于解决一些线性方程组的求解问题。

假设一个线性方程组为Ax=b,其中A为一个系数矩阵,b为一个已知项向量,x为一个未知向量,且A是对称正定矩阵。

由于方程组的解是未知的,我们先取一个近似的解向量,用它替换掉上式中的x,得到:

Ax(1)=b 或 Ax1=b

将式子改写为:

其中D是A的对角线构成的对角矩阵。

那么,我们就可以进行一次迭代,将上一步求得的解向量代入到式中,继续进行计算,如此类推。直到误差满足一定的条件时,则结束迭代。

三、实验步骤

本次实验的具体步骤如下:

1、输入待求解的线性方程组,其中系数矩阵A需是对称正定矩阵。

2、根据所求的系数矩阵A,求解对角矩阵D,以及矩阵A-D的逆矩阵。

3、根据输入的误差限和最大迭代次数,设定初始的近似解向量x0,并计算误差。

4、进行迭代,重复进行以下操作:

(1)代入上一步求得的解向量,计算新的解向量。

(3)如果误差小于所设定的误差限或者迭代次数已经达到了设定的最大迭代次数,则结束迭代。

5、输出求解结果及迭代次数。

四、实验结果

通过设计实验,我们在Matlab软件平台上实现了雅可比迭代的算法。

在进行MATLAB编程时,我们遵循上述步骤,利用所编写的Matlab程序求解了如下线性方程组:

1 1 1 x1 5

2 3 5 x2 6

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

要求:

下面分别使用雅克比迭代法和高斯-赛德尔迭代法求一个方程组的近似解用的线性方程组是按实验要求给的:

7*x1+x2+2*x3=10

x1+8*x2+2*x3=8

2*x1+2*x2+9*x3=6

雅克比迭代法的matlab代码:(老师写的)

A=[7,1,2;1,8,2;2,2,9];

b=[10;8;6];

if(any(diag(A))==0)

error('error,pause')

end

eps=input('误差限eps=');

N=input('迭代次数N=');

D=diag(diag(A));

B=inv(D)*(D-A);

f=inv(D)*b;

K=0;

x0=zeros(size(b));

while 1

x1=B*x0+f

K=K+1;

fprintf('第-次迭代的近似解为',K)

disp(x1');

if norm(x1-x0,inf)

fprintf('满足精度要求的解为\n')

disp(x1');

break

end

if K>N

fprintf('迭代超限')

end

x0=x1;

end

高斯-赛德尔迭代法matlab代码:(自己改的)

A=[7,1,2;1,8,2;2,2,9];

b=[10;8;6];

if(all(diag(A))==0)

error('error,pause')

end

eps=input('误差限eps=');

N=input('迭代次数N=');

D=diag(diag(A));

B=inv(D)*(D-A);

f=inv(D)*b;

K=0;

x0=zeros(size(b));

x00=x0;

while 1

x11=B*x0+f;

x00(1,1)=x11(1,1);

x12=B*x00+f;

x00(2,1)=x12(2,1);

x13=B*x00+f;

x00(3,1)=x13(3,1);

x1=x00

K=K+1;

fprintf('第-次迭代的近似解为',K)

disp(x1');

if norm(x1-x0,inf)

fprintf('满足精度要求的解为\n') disp(x1');

break

end

if K>N

fprintf('迭代超限')

end

x0=x1;

end

相关文档
最新文档