高斯-赛德尔迭代公式的矩阵形式为

高斯赛德尔矩阵怎么写

1.高斯赛德尔迭代法的迭代矩阵

^迭代法写成x<-Bx+f之后迭代矩阵当然是B

不过问题在于不同的迭代法产生的B和f是不同的

在Jacobi迭代中A=D-L-U,Ax=b Dx=(L+U)x+b x=D^{-1}(L+U)x+D^{-1}b

所以B=D^{-1}(L+U)

在Gauss-Seidel迭代中同样A=D-L-U,但是Ax=b (D-L)x=Ux+b x=(D-L)^{-1}Ux+(D-L)^{-1}b

所以B=(D-L)^{-1}U

2.用c++写一个万能的高斯

这是 C 程序,你把头文件换成 c++,把 printf 改 cout 就可以了。

无论是几维数组 ?-- 数组大小还是维数?

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define N 100

float *GauseSeidel(float *a,int n)

{

int i,j,nu=0;

float *x,dx;

x=(float *)malloc(n*sizeof(float));

for(i=0;i<=n-1;i++)

x[i]=0.0;

do {

for(i=0;i<=n-1;i++) {

float d=0.0;

for(j=0;j<=n-1;j++)

d+=*(a+i*(n+1)+j)*x[j];

dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i));

x[i]+=dx;

}

if(nu>=N)

{

printf("iter divergence\n");

exit(1);

}

nu++;

}

while(fabs(dx)>1e-6);

return x;

}

void main()

{

int i;

float *x;

float c[12]={5,2,1,8,2,8,-3,21,1,-3,-6,1};

float *GauseSeidel(float *,int);

x=GauseSeidel(c,3);

for(i=0;i<=2;i++)

printf("x[%d]=%f\n",i,x[i]);

getch();

}

3.雅可比迭代法和高斯赛德尔迭代法的迭代矩阵怎么求

1. 用雅克比迭代法和高斯--赛德尔迭代法求解下列方程组,取迭代初值[0;0;0]。

(1) 编程求解,并与用数学软件求解的结果对比。(2) 考察迭代法的收敛性,若均收敛,对比两种方法的收敛速度。

解:源程序:①雅克比迭代法:建立函数文件jacobi.m function [n,x]=jacobi(A,b,X,nm,w)%用雅克比迭代法求解方程组Ax=b%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为最大迭代次数,w为误差精度%输出:x为求得的方程组的解构成的列向量,n为迭代次数 n=1; m=length(A); D=diag(diag(A)); %令A=D-L-U,计算矩阵D L=tril(-A)+D; %令A=D-L-U,计算矩阵L U=triu(-A)+D; %令A=D-L-U,计算矩阵U M=inv(D)*(L+U); %计算迭代矩阵 g=inv(D)*b; %计算迭代格式中的常数项%下面是迭代过程 while n<=nm x=M*X+g; %用迭代格式进行迭代 if norm(x-X,2)> A=[10,3,1;2,-11,3;1,3,12]; b=[2;-5;4]; X=[0;0;0]; nm=50; w=10^-6;>> jacobi(A,b,X,nm,w) 迭代次数为 n = 14 方程组的解为 x = 0.0254 0.5144 0.2026 ②高斯赛德尔迭代法的运行过程及结果为:>> A=[10,3,1;2,-11,3;1,3,12]; b=[2;-5;4]; X=[0;0;0]; nm=50; w=10^-6;>> gaussseidel(A,b,X,nm,w) 迭代次数为 n = 6 方程组的解为 x = 0.0254 0.5144 0.2026 ③用matlab中的A\b命令的运行过程及结果如下:>> A=[10,3,1;2,-11,3;1,3,12]; b=[2;-5;4];>> A\b ans = 0.0254 0.5144 0.2026(1)由运行结果可知,编程得到的方程组的解为[0.0254;0.5144;0.2026]。而用matlab中的A\b命令求出的方程组的解为[0.0254;0.5144;0.2026],完全一致。

(2)由运行过程可知,两种方法均收敛,雅克比迭代次数为14,高斯赛德尔迭代次数为6,说明后者的迭代速度比前者快。2.用超松弛迭代法求解方程组,分别取松弛因子 ,取迭代初值[0;0;0],迭代30次或满足 时停止计算。

(1) 编程求解,并与用数学软件求解的结果对比。(2) 考察迭代是否收敛,若收敛,松弛因子取何值时收敛最快,与有关定理的结论对照,看结果是否一致。

解:源程序:①超松弛迭代法:建立函数文件sor22.m function [n,x]=sor22(A,b,X,nm,w,ww)%用超松弛迭代法求解方程组Ax=b%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为最大迭代次数,w为误差精度,ww为松弛因子%输出:x为求得的方程组的解构成的列向量,n为迭代次数 n=1; m=length(A); D=diag(diag(A)); %令A=D-L-U,计算矩阵D L=tril(-A)+D; %令A=D-L-U,计算矩阵L U=triu(-A)+D; %令A=D-L-U,计算矩阵U M=inv(D-ww*L)*((1-ww)*D+ww*U); %计算迭代矩阵 g=ww*inv(D-ww*L)*b; %计算迭代格式中的常数项%下面是迭代过程 while n<=nm x=M*X+g; %用迭代格式进行迭代 if norm(x-X,'inf')

4.怎样用高斯

// Seidel.h:interface for the CSeidel class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_SEIDEL_H__35754D65_C3B8_4814_B9D7_8DE3BA72EFF3__INCLUDED_)#define AFX_SEIDEL_H__35754D65_C3B8_4814_B9D7_8DE3BA72EFF3__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000//Seidel算法//方法取自《计算方法引论》(第二版)徐萃薇、孙绳武著 高等教育出版社 第187页//Matrix--系数矩阵,Y--常数项,X0--初始值,dimension--方程的阶数,error--误差;//count--计算次数,达到次数即使不满足精度也返回积分值//计算结果在X0中.class CSeidel {public:static bool Seidel(double *Matrix,double *Y,double *X0,int dimension,double error,int count);CSeidel();virtual CSeidel();};#endif // !defined(AFX_SEIDEL_H__35754D65_C3B8_4814_B9D7_8DE3BA72EFF3__INCLUDED_)// Seidel.cpp:implementation of the CSeidel class.////////////////////////////////////////////////////////////////////////#include "stdafx.h"//#include "NumericalMethods.h"#include "Seidel.h"#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////CSeidel::CSeidel(){}CSeidel::CSeidel(){}//Seidel算法//方法取自《计算方法引论》(第二版)徐萃薇、孙绳武著 高等教育出版社 第187页//Matrix--系数矩阵,Y--常数项,X0--初始值,dimension--方程的阶数,error--误差;//count--计算次数,达到次数即使不满足精度也返回积分值//计算结果在X0中.#define Matrix(row,col) (*(Matrix+(row)*dimension+col))bool CSeidel::Seidel(double *Matrix,double *Y,double *X0,int dimension,double error,int count){int i,j,k=1;double *X=new double[dimension];double sum;do{sum=0.0f;for(i=1;i。

5.高斯赛德尔迭代法matlab编程

去百度文库,查看完整内容>

内容来自用户:w___w000

‍function[x,k]=GaussSeidel(A,b,x0,eps,M)

%高斯赛德尔迭代法求方程组的解(矩阵公式求解)

%A为方程组的系数矩阵;b为方程组的右端项

%x为线性方程组的解了;x0为迭代初值

%eps为误差限;M为迭代的最大次数

if nargin==3

eps= 1.0e-6;%默认精度

M = 10000;%参数不足时默认后两个条件

elseif nargin ==4

M = 10000;%参数的默认值

elseif nargin<3

error('参数不足');

return

end

[n,m]=size(A);

nb=length(b);

%当方程组行与列的维数不相等时,停止计算,并输出出错信息

if n~=m

error('矩阵A行数和列数必须相等!');

return;

end

%当方程组与右端项的维数不匹配时,停止计算,并输出出错信息

if n~=nb

error('矩阵A的行数必须和b的长度相等!');

return;

end

L =zeros(n,n);

U =zeros(n,n);

D =zeros(n,n);

for i=2:n

for j=1:i-1

L(i,j)=-A(i,j);

end

end

for i=1:n-1

for j=i+1:n

U(i,j)=-A(i,j);

end

end

for i=1:n

D(i,i)=A(i,i);

end

B=inv(D-L)*U; %B为迭代矩阵

g=inv(D-L)*b; %g为右端项

pr=max(abs(eig(B))); %求迭代矩阵谱半径

if pr>=1

error('迭代矩阵谱半径大于1迭代法不收敛');

return;

end

k=0;

tol=1;

while tol>=eps

x = B*x0+g;

k = k+1; %迭代步数

tol = norm(x-x0);%前后

6.求助在matlab中如何实现高斯赛德尔迭代法

%Gauss-Seidel迭代法解线性方程组的Gauss-Seidel函数

%A为未知数的系数矩阵;b为方程组右边常值列向量;x0取ones(m,1)m为未知数个数;eps为精度,如果不输入eps,默认为1.0e-6

function [x,n]=GaussSeidel(A,b,x0,eps)

if nargin==3

eps=1.0e-6;

elseif narginerror;

return;

end

D=diag(diag(A));

L=-tril(A,-1);

U=-triu(A,1);

G=(D-L)\U;

f=(D-L)\b;

x=G*x0+f;

n=1;

while norm(x-x0)>=eps

x0=x;

x=G*x0+f;

n=n+1;

end

7.Matlab 高斯

A=diag(ones(1,50)*12);

A=A+[[zeros(49,1) -2*diag(ones(1,49))];zeros(1,50)];

A=A+[[zeros(1,49); -2*diag(ones(1,49))] zeros(50,1)];

A=A+[[zeros(48,2) diag(ones(1,48))];zeros(2,50)];

A=A+[[zeros(2,48); diag(ones(1,48))] zeros(50,2)];

b=ones(50,1)*5;

x=gseid(A,b,zeros(50,1),0.001,1000)

高斯赛德尔矩阵怎么写

转载请注明出处育才学习网 » 高斯-赛德尔迭代公式的矩阵形式为

知识

罗梅芬用日文怎么写(罗钰潇日语怎么写)

阅读(21425)

本文主要为您介绍罗梅芬用日文怎么写,内容包括伊蕾娜日语怎么写,王雪菲用日文怎么说,张佳怡在日语中怎么写啊怎么读啊。罗 ら ラ ra钰 ぎょく ギョク gyoku潇 しょう シヨウ shou第一列:日语汉字,写法同汉字,都要用繁体,这三个都挺难写的,看

知识

邓先生的英文怎么写(1~40的英文怎么说)

阅读(10440)

本文主要为您介绍邓先生的英文怎么写,内容包括“邓先生”用英语怎么写,1~40的英文怎么说,漂亮英文beautiful缩写怎么写。1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 8 nine 10 te

知识

一个人布满皱纹怎么写(描写人物皱纹的句子)

阅读(9514)

本文主要为您介绍一个人布满皱纹怎么写,内容包括描写人物皱纹的句子,描写人物皱纹的句子,皱纹怎么描写。、老人脸上布满了皱纹,那一条条曲折不均的像是墙上斑驳的印迹,爬满了面容,留下了岁月的痕迹。2、外祖父是一位年过六旬的白发老人。在他

知识

登录接口怎么写(php登录的接口怎么写)

阅读(7759)

本文主要为您介绍登录接口怎么写,内容包括php登录的接口怎么写,网页登陆接口怎么做,网站登录接口程序怎么做。PHP 接口 接口 使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。我们可以通过int

知识

档案奖惩情况怎么写(奖惩情况怎么写)

阅读(9600)

本文主要为您介绍档案奖惩情况怎么写,内容包括奖惩情况怎么写,个人简历及奖惩情况怎么填写,个人简历里面奖惩情况怎么写。在简历里的“奖励”部分,列出与你所获得的并与你的求职目标相关的荣誉、奖励和奖金。你既可以按时间顺序排列,也可以按

知识

头孢克肟拼音怎么写(头孢克肟的肟念什么)

阅读(8001)

本文主要为您介绍头孢克肟拼音怎么写,内容包括头孢克肟片全名拼音,头孢克肟片全名拼音,头孢克肟的肟念什么。肟[wò] :是含有羰基的醛、酮类化合物与羟胺作用而生成的有机化合物,可以参与许多有机化学反应,例如经典的Beckmann重排就是肟为底

知识

一库搜用日语怎么写(日语一库是什么意思)

阅读(7989)

本文主要为您介绍一库搜用日语怎么写,内容包括日语大神来,看动漫里的主人公说一句:恰,一库搜这是什么意思,一库一库;一搜库这两个日语是什么意思怎么写,看片都有“一库”(日语)是什么意。一库的意思就是“出发,出去”的意思。日语「行く」的音译

知识

外租无人机广告怎么写(植保无人机广告语)

阅读(6999)

本文主要为您介绍外租无人机广告怎么写,内容包括求一个无人机创意广告词谢谢巨友们了,求一关于无人机的广告标语,求一关于无人机的广告标语我们公司是做无人机的,新成立的公司,求。DJI大疆创新研发的的MG-1农业植保机专为农村作业环境设计,

知识

河南话que怎么写(河南话的nenna怎么写)

阅读(6531)

本文主要为您介绍河南话que怎么写,内容包括que怎么写,河南话的nenna怎么写,que怎么写。尿一壶(niào yī hú)关系密切,观点一致。例:“他俩今天尿一壶啦。”●尿(niào)⑴、从尿道排泄的液体。⑵、排泄小便。⑶、不放

知识

国学经文的论文怎么写(国学征文该怎么写)

阅读(7113)

本文主要为您介绍国学经文的论文怎么写,内容包括国学征文该怎么写,弟子规的400论文,关于国学经典的征文怎么写。“子曰:“温故而知新,可以为师”……小时,总是觉得国学就是没用的,古人写的话,我们还需要背,每次老师教给我们时,我总是会让思想开一

知识

化学实验总结怎么写(化学实验报告小结怎么写)

阅读(5397)

本文主要为您介绍化学实验总结怎么写,内容包括化学实验总结怎么写,化学实验报告小结怎么写,化学实验小结怎么写。化学实验报告的书写: 一般情况下化学实验报告是根据实验步骤和顺序从七方面展开来写的: 1.实验目的:即本次实验所要达到的目标或

知识

蝴蝶豌豆拼音怎么写(豌豆的拼音是什么)

阅读(5826)

本文主要为您介绍蝴蝶豌豆拼音怎么写,内容包括蝴蝶怎么拼音的,豌豆的拼音是什么,蝴蝶的拼音是什么。豌豆的拼音是[wān dòu]。豌豆是豆科一年生攀援草本,高0.5-2米。全株绿色,光滑无毛,被粉霜。叶具小叶4-6片,托叶心形,下缘具

知识

海绵宝宝用英文怎么说(海绵宝宝用英文怎么说)

阅读(6510)

本文主要为您介绍海绵宝宝用英文怎么说,内容包括海绵宝宝用英语怎么说,海绵宝宝用英文怎么说,海绵宝宝英文名是什么。1. SPONGEBOB SQUAREPANTS 近期很夯的一步卡通影片《海绵宝宝》(SpongeBob SquarePants)是一系

知识

茶盏怎么用(茶盏在茶道中干嘛用)

阅读(5422)

本文主要为您介绍茶盏怎么用,内容包括茶盏怎么用我要写一篇200字左右的茶盏的使用说明,求指教,茶盏在茶道中干嘛用,问一下斗笠盏如何使用现在是不是很少有人使用它,它的意义。苏东坡的名句"从来佳茗似佳人",典型地代表了唐宋及以后的文人墨客,

知识

thinkpad小红点怎么用(怎么学习使用thinkpad小红点)

阅读(7582)

本文主要为您介绍thinkpad小红点怎么用,内容包括怎么学习使用thinkpad小红点,thinkpad小红点怎么用,求教:THINKPAD的小红点使用方法。Thinkpad 小红点最高效的使用方法为:左手拇指按左键,无操作时在左键待命2、右手拇指按右键,同时兼按空格键及