高斯迭代矩阵怎么写

1.怎样用高斯// 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 。
2.雅克比迭代法的迭代矩阵J是Bx+f中的B,那高斯迭代法写成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
3.有哪位高手可以帮忙用matlab编程:高斯迭代法求解矩阵的特征向量,刚好有个做好的迭代函数
%改函数可选用雅克比或高斯-赛德尔迭代法求特征向量
function [B,C,lo]=Diedai(A,Char)
I=length(A);
D=zeros(I);
for i=1:I
D(i,i)=A(i,i);
end
L=zeros(I);
for i=2:I
for j=1:I-1
if i&gt;j
L(i,j)=A(i,j);
【高斯迭代矩阵怎么写】end
end
end
U=A-D-L;
U=-U;
L=-L;
if Char==2
B=inv(D-L)*U;
C=inv(D-L);
elseif Char==1
B=inv(D)*(L+U);
C=inv(D);
end
lo=max(abs(eig(B)));
4.用matlab程序,编写出高斯塞德尔迭代法function [v,sN,vChain]=gaussSeidel(A,b,x0,errorBound,maxSp)
%Gauss-Seidel迭代法求解线性方程组
%A-系数矩阵 b-右端向量 x0-初始迭代点 errorBound-近似精度 maxSp-最大迭代次数
%v-近似解 sN-迭代次数 vChain-迭代过程的所有值
step=0;
error=inf;
s=size(A);
D=zeros(s(1));
vChain=zeros(15,3);%最多能记录15次迭代次数
k=1;
fx0=x0;
for i=1:s(1)
D(i,i)=A(i,i);
end;
L=-tril(A,-1);
U=-triu(A,1);
while error>=errorBound & stepx0=inv(D)*(L+U)*x0+inv(D)*b;
vChain(k,:)=x0';
k=k+1;
error=norm(x0-fx0);
fx0=x0;
step=step+1;
end
v=x0;
sN=step;
5.高斯消元法,救命1.
1 1 -2 3
y+5y 写错了吧