📄 jaccobi.cpp
字号:
#include<iostream.h>
#include<math.h>
float sum(float *a,float *t,int n)
{
int j;
float m=0.0;
for(j=0;j<n;j++)
m+=a[j]*t[j];
return m;
}
float vec_norm(float *x,float*XO,int n)
{
float* t;
float max;
int i;
t=new float[n];
for(i=0;i<n;i++)
t[i]=fabs(x[i]-XO[i]);
max=t[0];
for(i=1;i<n;i++)
if(t[i]>max) max=t[i];
return max;
}
void jaccobi()
{
int n,N;//N is the maximum number of iteration
float **A,*b,*XO,*x;
float TOL;//TOL is tolerance
int i,j,k;
cout<<"inout the tolerance TOL=";
cin>>TOL;
cout<<"input the intial value of XO:\n";
for(i=0;i<n;i++)
cin>>XO[i];
for(k=0;k<N;k++)
for(i=0;i<n;i++)
x[i]=(b[i]-sum(A[i],XO,n))/A[i][i];//sum(A[i],XO,n) A[i][j]+XO[j],where j=0,1,……,n-1
if(vec_norm(x,XO,n)<TOL)
{
for(i=0;i<n;i++)
cout<<"x["<<i<<"]="<<x[i];
return;
}
for(i=0;i<n;i++)
XO[i]=x[i];
cout<<"the maxmum number of iterations exceeded is"<<k<<endl;
}
void main()
{
jaccobi();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -