雅可比迭代法MATLAB程序

合集下载

MATLAB块雅克比迭代法求线性方程组Ax=b的解块高斯-赛德尔迭代法求线性方程组Ax=b的解

MATLAB块雅克比迭代法求线性方程组Ax=b的解块高斯-赛德尔迭代法求线性方程组Ax=b的解

MATLAB块雅克比迭代法求线性方程组Ax=b的解块高斯-赛德尔迭代法求线性方程组Ax=b的解function [x,N]= BJ(A,b,x0,d,eps,M) %块雅克比迭代法求线性方程组Ax=b的解if nargin==4eps= 1.0e-6;M = 10000;elseif nargin<4errorreturnelseif nargin ==5M = 10000; %参数的默认值endNS = size(A);n = NS(1,1);if(sum(d) ~= n)disp('分块错误!');return;endbnum = length(d);bs = ones(bnum,1);for i=1:(bnum-1)bs(i+1,1)=sum(d(1:i))+1;%获得对角线上每个分块矩阵元素索引的起始值endDB = zeros(n,n);for i=1:bnumendb = bs(i,1)+d(i,1)-1;DB(bs(i,1):endb,bs(i,1):endb)=A(bs(i,1):endb,bs(i,1):endb );%求A的对角分块矩阵endfor i=1:bnumendb = bs(i,1)+d(i,1)-1;invDB(bs(i,1):endb,bs(i,1):endb)=inv(DB(bs(i,1):endb,bs(i ,1): endb));%求A的对角分块矩阵的逆矩阵endN = 0;tol = 1;while tol>=epsx = invDB*(DB-A)*x0+invDB*b; %由于LB+DB=DB-AN = N+1; %迭代步数tol = norm(x-x0); %前后两步迭代结果的误差x0 = x;if(N>=M)disp('Warning: 迭代次数太多,可能不收敛!');return;endendfunction [x,N]= BGS(A,b,x0,d,eps,M) %块高斯-赛德尔迭代法求线性方程组Ax=b的解if nargin==4eps= 1.0e-6;M = 10000;elseif nargin<4errorreturnelseif nargin ==5M = 10000;endNS = size(A);n = NS(1,1);bnum = length(d);bs = ones(bnum,1);for i=1:(bnum-1)bs(i+1,1)=sum(d(1:i))+1;%获得对角线上每个分块矩阵元素索引的起始值endDB = zeros(n,n);for i=1:bnumendb = bs(i,1)+d(i,1)-1;DB(bs(i,1):endb,bs(i,1):endb)=A(bs(i,1):endb,bs(i,1):endb ); %求A的对角分块矩阵endLB = -tril(A-DB); %求A的下三角分块阵UB = -triu(A-DB); %求A的上三角分块阵N = 0;tol = 1;while tol>=epsinvDL = inv(DB-LB);x = invDL*UB*x0+invDL*b; %块迭代公式N = N+1;tol = norm(x-x0);x0 = x;if(N>=M)disp('Warning: 迭代次数太多,可能不收敛!');return;endend类别:matlab 编程 | | 添加到搜藏 | 分享到i贴吧 | 浏览(168) | 评论 (0)上一篇:MATLAB 共轭梯度法求线性方程组A...。

matlab求解二元一次方程组的数值解

matlab求解二元一次方程组的数值解

matlab求解二元一次方程组的数值解摘要:一、引言二、Matlab中求解二元一次方程组的常用方法1.直接法2.迭代法3.数值方法三、数值方法的原理及应用1.雅可比迭代法2.托马斯迭代法3.平方根法四、实例演示1.编写Matlab程序2.输出结果及分析五、结论与展望正文:一、引言二元一次方程组是数学中的一种基本问题,而在工程、科学等领域中也广泛存在。

求解二元一次方程组的数值解是Matlab编程中的常见任务,本文将介绍在Matlab中求解二元一次方程组的常用方法及实例演示。

二、Matlab中求解二元一次方程组的常用方法直接法是通过高斯消元法求解二元一次方程组。

在Matlab中,可以使用`gesdd`函数直接求解。

例如:```matlabA = [1, 2; 3, 4];b = [5; 6];x = gesdd(A, b);```2.迭代法迭代法是通过不断更新变量来求解方程组。

在Matlab中,可以使用`fsolve`函数进行迭代求解。

例如:```matlabA = [1, 1; 1, 1];b = [2; 3];x0 = [1; 1];x = fsolve(@(x) A*x == b, x0);```3.数值方法数值方法包括雅可比迭代法、托马斯迭代法、平方根法等。

在Matlab 中,可以使用`fsolve`函数结合数值方法求解。

例如:```matlabA = [1, 1; 1, 1];x0 = [1; 1];options = optimoptions("fsolve", "Display", "on", "Tolerance", 1e-6);x = fsolve(@(x) A*x == b, x0, options);```三、数值方法的原理及应用1.雅可比迭代法雅可比迭代法是基于雅可比矩阵的迭代公式进行求解。

在Matlab中,可以使用自定义函数实现。

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)。

3. 迭代计算利用迭代公式x(k+1)=(D+L)^(-1)(b-Ux(k))来逐步计算出方程组的解。

4. 判断收敛条件在迭代计算过程中,需要实时判断迭代计算是否满足收敛条件,如果满足则停止迭代计算,得到方程组的解。

四、实例分析假设有如下方程组:2x1 + x2 + 4x3 = 103x1 + 4x2 - x3 = 10x1 + 2x2 + 3x3 = 0可以利用jacobi迭代法来求解该方程组,在Matlab中可以通过编程实现迭代计算过程。

matlab中的迭代算法

matlab中的迭代算法

matlab中的迭代算法Matlab中的迭代算法迭代算法是一种通过重复应用某个过程或规则来解决问题的方法。

在Matlab中,迭代算法广泛应用于数值计算、优化问题、图像处理等领域。

本文将介绍几种常见的迭代算法,并通过实例来演示其应用。

一、二分法二分法是一种简单而有效的迭代算法,用于求解函数的根。

其基本思想是通过将区间逐渐缩小,不断逼近根的位置。

具体步骤如下:1. 选择一个初始区间[a, b],使得f(a)和f(b)异号;2. 计算区间的中点c=(a+b)/2;3. 判断f(c)的符号,并更新区间的边界;4. 重复步骤2和3,直到满足精度要求。

二分法的优点是简单易懂,但收敛速度相对较慢。

以下是一个使用二分法求解方程x^2-2=0的示例代码:```matlaba = 1;b = 2;tol = 1e-6;while abs(b-a) > tolc = (a + b) / 2;if (c^2 - 2) * (a^2 - 2) < 0b = c;elsea = c;endendroot = (a + b) / 2;disp(root);```二、牛顿法牛顿法是一种迭代算法,用于求解非线性方程和最优化问题。

其基本思想是通过利用函数的局部线性近似,逐步逼近根或最优解。

具体步骤如下:1. 选择一个初始点x0;2. 计算函数f在点x0处的导数f'(x0);3. 计算切线方程的解,即x1 = x0 - f(x0)/f'(x0);4. 重复步骤2和3,直到满足精度要求。

牛顿法的优点是收敛速度快,但对初始点的选择较为敏感。

以下是一个使用牛顿法求解方程x^2-2=0的示例代码:```matlabx0 = 1;tol = 1e-6;while abs(x1 - x0) > tolx1 = x0 - (x0^2 - 2) / (2 * x0);x0 = x1;endroot = x1;disp(root);```三、迭代法求解线性方程组迭代法也可以用于求解线性方程组Ax=b。

matlab 迭代法求特征值和特征向量

matlab 迭代法求特征值和特征向量

在MATLAB中,使用迭代法求解特征值和特征向量,一般需要用到eig函数,以及Jacobi方法或QR方法等迭代方法。

下面是一个使用Jacobi方法在MATLAB中求解特征值和特征向量的示例:```matlabfunction [V, D] = jacobi(A, tol, maxiter)% A: nxn matrix% tol: error tolerance% maxiter: maximum number of iterationsn = size(A, 1);V = eye(n);D = A;for k = 1:maxiterw = D * V(:, k);alpha = (w' * w) / (w' * A * w);V(:, k+1) = w - alpha * V(:, k);D = D - alpha * V(:, k) * V(:, k+1)';endif norm(D - eig(A), 'fro') < tolbreak;endend```这个函数使用Jacobi方法来迭代求解矩阵的特征值和特征向量。

输入参数A是待求解的特征值和特征向量的矩阵,tol是误差容忍度,maxiter是最大迭代次数。

输出参数V是特征向量矩阵,D是对角线元素为特征值的矩阵。

使用这个函数时,只需要将待求解的矩阵A,误差容忍度和最大迭代次数作为输入参数传入即可。

例如:```matlabA = [3 -1; -1 3];[V, D] = jacobi(A, 1e-6, 1000);disp(['Eigenvalues: ', num2str(diag(D))]);disp('Eigenvectors:');disp(V);```这个例子中,我们要求解矩阵A的特征值和特征向量,并将结果输出到控制台。

Jacobi迭代法和Gauss-Seidel迭代法解线性方程组

Jacobi迭代法和Gauss-Seidel迭代法解线性方程组

实验四线性方程组的迭代解法一、实验目的(1) 学会用Jacobi迭代法、Gauss- Seidel迭代法和超松弛迭代法求线性方程组解(2) 学会对各种迭代法作收敛性分析,研究求方程组解的最优迭代方法.(3) 按照题目要求完成实验内容,写出相应的Matlab程序,给出实验结果.(4) 对实验结果进行分析讨论.(5) 写出相应的实验报告.二、实验内容1.熟悉Jacobi迭代法,并编写Matlab程序matlab程序按照算法(Jacobi迭代法)编写Matlab程序(Jacobi.m)function [x,k,index]=Jacobi(A,b,ep,it_max)if nargin<4it_max=100;endif nargin<3ep=1e-5;endn=length(A);k=0;x=zeros(n,1);y=x;index=1;while 1for i=1:ny(i)=b(i);for j=1:nif j~=iy(i)=y(i)-A(i,j)*x(j);endendif abs(A(i,i))<1e-10||k==it_maxindex=0;return;endy(i)=y(i)/A(i,i);endif norm(y-x,inf)<ep;break;endx=y;k=k+1;end2. 熟悉Gauss-Seidel 迭代法,并编写Matlab 程序3.练习练习题1. 用Jacobi 迭代法求方程组123430243313001424x x x ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥-=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥--⎣⎦⎣⎦⎣⎦的解。

练习题2. 用Gauss-Seidel 迭代法求解上题的线性方程组,取(0)5(0,0,0),10T x ε-==。

function [x,k,index]=Gauss_Seidel(A,b,ep,it_max) if nargin<4it_max=100;endif nargin<3ep=1e-5;endn=length(A);k=0;x=zeros(n,1);y=x;y1=y;index=1;while 1for i=1:ny(i)=b(i);for j=1:nif j>iy(i)=y(i)-A(i,j)*y1(j);endif j<iy(i)=y(i)-A(i,j)*x(j);endendif abs(A(i,i))<1e-10||k==it_maxindex=0;return ;endy(i)=y(i)/A(i,i);y1(i)=y(i);endif norm(y-x,inf)<ep;break ;endx=y;k=k+1;end三、实验要求要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。

matlab用jacobi迭代求解隐式差分的richards方程

matlab用jacobi迭代求解隐式差分的richards方程

在MATLAB中,使用Jacobi迭代法求解隐式差分的Richards方程需要以下步骤:1. 定义Richards方程:Richards方程是一个描述土壤水分运动的偏微分方程,形式如下:d(θ)/dt = (1/α) [k_r(θ - θ_r) + k_s(θ_s - θ)]其中,θ 是土壤含水率,k_r 和k_s 是降雨入渗和蒸散发系数,θ_r 和θ_s 是残余含水率和饱和含水率,α 是时间系数。

2. 定义Jacobi迭代法:Jacobi迭代法是一种求解线性方程组的迭代方法,形式如下:x^(n+1) = (b - Ax^n) / D其中,A 是系数矩阵,b 是常数项向量,x^n 是第n 次迭代的解向量,D 是A 的对角线元素构成的向量。

3. 编写MATLAB代码:根据Richards方程和Jacobi迭代法,编写MATLAB代码。

下面是一个示例代码:matlab参数定义N = 100; 网格点数T = 100; 时间步数alpha = 0.1; 时间系数kr = 0.5; 降雨入渗系数ks = 0.2; 蒸散发系数theta_r = 0.01; 残余含水率theta_s = 0.35; 饱和含水率初始化变量time = linspace(0, T, T+1); 时间向量moisture = zeros(N+1, T+1); 含水率矩阵moisture(:, 1) = theta_r; 初始含水率Jacobi迭代for n = 1:T计算扩散项和源项D = (1/alpha)*(kr*(moisture(2:end, n) - moisture(1:end-1, n)) + ks*(moisture(1:end-1, n) - moisture(2:end, n)));b = (1/alpha)*(kr*(moisture(1, n) - theta_r) + ks*(theta_s - moisture(N+1, n)));Jacobi迭代计算含水率moisture(:, n+1) = (b - D*moisture(:, n)) ./ D;end。

雅可比迭代法的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<4it_max=100;endif nargin<3ep=le-5;endn=length(A);k=0;x=zeros(n,1);y=zeros(n,1);index=1;while k<=it_maxfor i=1:nif abs (A(i,i))<le-10index=0;return;endy(i)=(b(i)-A(i,1:n)*x(1:n)+A(i,i)*x(i))/A(i,i);endif norm(y-x,inf)<epbreak;endk=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<4it_max=100;endif nargin<3ep=le-5;endn=length(A);k=0;x=zeros(n,1);y=zeros(n,1);index=1; while k<=it_maxfor i=1:nif abs (A(i,i))<le-10index=0;return;Endif i==1y(i)=(b(i)-A(i,i+1:n)*x(i+1:n)/A(i,i);elseif i==ny(i)=(b(i)-A(i,1:i-1)*y(1:i-1)/A(i,i);elsey(i)=(b(i)-A(i,1:i-1)*y(1:i-1)-A(i,i+1:n)*x(i+1:n)/A(i,i); endendif norm(y-x,inf)<epbreak;endk=k+1; x=y; endTHANKS !!!致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考。

迭代法求解方程matlab

迭代法求解方程matlab

迭代法求解方程的MATLAB实现1.引言迭代法是一种求解方程的常用方法,尤其适用于大规模矩阵和高维问题。

在迭代法中,我们通过不断迭代来逐步逼近方程的解。

本篇文章将介绍如何使用MATLAB实现迭代法求解方程。

2.收敛性判断在使用迭代法求解方程时,我们需要判断迭代是否收敛。

通常,我们使用以下两种方法进行收敛性判断:2.1 判断迭代公式是否收敛对于许多迭代公式,我们可以根据其结构来判断其是否收敛。

例如,Jacobi迭代法和Gauss-Seidel方法通常适用于对角占优的矩阵,而SOR方法适用于对角占优或松弛型的矩阵。

2.2 判断迭代误差是否收敛我们还可以通过判断迭代误差是否收敛来判断迭代是否收敛。

迭代误差通常定义为实际解与迭代解之间的范数。

如果迭代误差逐渐减小并趋于零,则说明迭代收敛。

3.迭代公式下面我们以Jacobi迭代法为例,介绍迭代公式的实现。

Jacobi迭代法的迭代公式如下:x{n+1}=(\frac{1}{a{ii}})(b i-A{ii,1:i-1}x1-A{ii,i+1:n}x_n)其中,A是系数矩阵,b是右侧向量,x是解向量,a_{ii}是矩阵A的主对角线元素。

4.误差计算为了判断迭代是否收敛,我们需要计算迭代误差。

通常,我们使用实际解与迭代解之间的相对误差或范数误差来衡量误差大小。

例如,相对误差可以按下式计算:||x^-x_n||_2/(||x^||_2)其中,x^*是实际解向量,x_n是第n次迭代的解向量。

5.MATLAB实现下面是一个使用MATLAB实现Jacobi迭代法的示例代码:function x = jacobi(A, b, x0, tol, max_iter)% 输入参数:系数矩阵A、右侧向量b、初始解向量x0、容许误差tol和最大迭代次数max_iter% 输出参数:方程的解向量xn = length(b); % 方程的未知数个数x = zeros(n, 1); % 初始化解向量xx(:) = x0; % 将初始解向量赋值给xerr = tol + 1; % 初始化误差大于容许误差,表示未收敛k = 0; % 初始化迭代次数k=0while err > tol && k < max_iterk = k + 1; % 更新迭代次数k=k+1for i = 1:n % 对每个未知数进行更新x(i) = (b(i) - A(i, 1:i-1)*x(1:i-1) - A(i, i+1:n)*x(i+1:n)) / A(i, i); % 更新解向量x的第i个元素x(i)的公式为x(i)=[b(i)-A(i,1:i-1)*x(1:i-1)-A(i,i+1:n)*x(i+1:n)]/A(i,i)endforendwhileif k < max_itererr = norm(x - x_prev, 'fro') / norm(x_prev, 'fro'); % 计算相对误差endendendfunction```。

matlab迭代计算方程组

matlab迭代计算方程组

matlab迭代计算方程组
在MATLAB中,迭代计算方程组通常涉及使用循环结构来逐步逼近方程组的解。

这种方法通常用于无法直接求解的复杂方程组或者大规模方程组的情况。

下面我将从几个方面介绍在MATLAB中进行迭代计算方程组的方法。

首先,最常见的迭代方法之一是雅可比迭代法。

在MATLAB中,可以通过编写一个循环来实现雅可比迭代。

具体步骤包括初始化一个解向量、编写迭代循环以更新解向量,并设置一个收敛准则来判断迭代是否结束。

其次,另一个常用的迭代方法是高斯-赛德尔迭代法。

这种方法在雅可比迭代的基础上进行了改进,每次更新解向量时都使用最新的已知解。

在MATLAB中,可以使用类似的循环结构来实现高斯-赛德尔迭代。

此外,MATLAB还提供了一些内置函数来进行迭代计算方程组,比如`fsolve`函数可以用于求解非线性方程组,`linsolve`函数可以用于求解线性方程组。

这些函数通常会在迭代过程中自动选择合适的算法,并提供了一些参数用于控制迭代的精度和收敛性。

总的来说,在MATLAB中进行迭代计算方程组可以通过编写循环结构来逐步逼近解,也可以利用内置函数来简化计算过程。

需要根据具体的方程组和求解精度来选择合适的方法,并注意迭代过程中的收敛性和稳定性。

希望这些信息能够帮助你更好地理解在MATLAB 中进行迭代计算方程组的方法。

matlab实现雅克比法,SOR法

matlab实现雅克比法,SOR法

设有方程组123123123104413410811481025x x x x x x x x x ++=⎧⎪++=⎨⎪++=⎩ 写出雅克比迭代、赛德尔迭代、w=1.2的SOR 迭代的算式。

(1)雅克比迭代:cleare1=1;e2=1;e3=1;k=1;x(1,1)=0;x(2,1)=0;x(3,1)=0;while (e1>0.01&e2>0.01&e3>0.01)x(1,k+1)=(13-4*x(2,k)-x(3,k))/10;x(2,k+1)=(11-4*x(1,k)-8*x(3,k))/10;x(3,k+1)=(25-4*x(1,k)-8*x(2,k))/10;e1=abs(x(1,k+1)-x(1,k));e2=abs(x(2,k+1)-x(2,k));e3=abs(x(3,k+1)-x(3,k));if (k>500)disp('Warning:迭代次数太多,可能不收敛!');break ;endk=k+1;endx(1,k-1)x(2,k-1)x(3,k-1)结果:Warning: 迭代次数太多,可能不收敛!(2)赛德尔迭代:cleare1=1;e2=1;e3=1;k=1;x(1,1)=0;x(2,1)=0;x(3,1)=0;while(e1>0.01&e2>0.01&e3>0.01)x(1,k+1)=(13-4*x(2,k)-x(3,k))/10;x(2,k+1)=(11-4*x(1,k+1)-8*x(3,k))/10;x(3,k+1)=(25-4*x(1,k+1)-8*x(2,k+1))/10;e1=abs(x(1,k+1)-x(1,k));e2=abs(x(2,k+1)-x(2,k));e3=abs(x(3,k+1)-x(3,k));if(k>500)disp('Warning: 迭代次数太多,可能不收敛!');break;endk=k+1;endx(1,k-1)x(2,k-1)结果:ans =2.0577ans =-2.9219ans =4.0144SOR迭代:cleare1=1;e2=1;e3=1;k=1;w=1.2;x(1,1)=0;x(2,1)=0;x(3,1)=0;while(e1>0.01&e2>0.01&e3>0.01)x(1,k+1)=w*(13-4*x(2,k)-x(3,k))/10+(1-w)*x(1,k);x(2,k+1)=w*(11-4*x(1,k+1)-8*x(3,k))/10+(1-w)*x(2,k);x(3,k+1)=w*(25-4*x(1,k+1)-8*x(2,k+1))/10+(1-w)*x(3,k);e1=abs(x(1,k+1)-x(1,k));e2=abs(x(2,k+1)-x(2,k));e3=abs(x(3,k+1)-x(3,k));if(k>500)disp('Warning: 迭代次数太多,可能不收敛!');break;k=k+1;endx(1,k-1)x(2,k-1)x(3,k-1)结果:ans =2.0292ans = -2.9429ans =4.05158、设有方程组1231231231.25 3.6912.370.5810.019.050.12 1.431.22 4.33 2.76 3.22x x x x x x x x x --=⎧⎪-++=⎨⎪-+=⎩写出收敛的迭代格式(1)雅克比迭代:cleare1=1;e2=1;e3=1;k=1;x(1,1)=0;x(2,1)=0;x(3,1)=0;while (e1>0.01&e2>0.01&e3>0.01)x(1,k+1)=(1.43-9.05*x(2,k)-0.12*x(3,k))/(-10.01);x(2,k+1)=(3.22-1.22*x(1,k)-2.76*x(3,k))/(-4.33);x(3,k+1)=(0.58-1.25*x(1,k)+3.69*x(2,k))/(-12.37);e1=abs(x(1,k+1)-x(1,k));e2=abs(x(2,k+1)-x(2,k));e3=abs(x(3,k+1)-x(3,k));if(k>200)disp('Warning:迭代次数太多,可能不收敛!');break;endk=k+1;endx(1,k-1)x(2,k-1)x(3,k-1)结果:ans =-0.9291ans =-0.9184ans =0.1244SOR迭代:cleare1=1;e2=1;e3=1;k=1;x(1,1)=0;x(2,1)=0;x(3,1)=0;w=0.8;while(e1>0.0001&e2>0.0001&e3>0.0001)x(1,k+1)=w*(1.43-9.05*x(2,k)-0.12*x(3,k))/(-10.01)+(1-w)*x(1,k);x(2,k+1)=(3.22-1.22*x(1,k)-2.76*x(3,k))/(-4.33)+(1-w)*x(2,k);x(3,k+1)=(0.58-1.25*x(1,k)+3.69*x(2,k))/(-12.37)+(1-w)*x(3,k);e1=abs(x(1,k+1)-x(1,k));e2=abs(x(2,k+1)-x(2,k));e3=abs(x(3,k+1)-x(3,k));if(k>500)disp('Warning:迭代次数太多,可能不收敛!');break;endk=k+1;endx(1,k-1)x(2,k-1)x(3,k-1)结果:ans =-0.8431ans =-0.7733ans =0.0835。

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