📄 sedial.cpp
字号:
#include <iostream.h>
#include <math.h>
#include <stdio.h>
void xishu(float s[][10],float c[10][10],float d[10],int n) //迭代系数转换
{int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ if(i==j) c[i][j]=0;
else c[i][j]=-s[i][j]/s[i][i];
}
for(i=0;i<n;i++)
d[i]=s[i][n]/s[i][i];
}
void diedai(float c[][10],float d[10],float x[10],int n) //迭代
{int i,j,N,k=0;
float p,s;
double flag1=0,flag2=0,ep;
cout<< "请输入误差:";
cin>>ep;
cout<<endl;
cout<<"请输入执行最大次数:";
cin>>N;
cout<<endl;
do
{ k++;
for(i=0;i<n;i++)
{ p=x[i];
s=d[i];
for(j=0;j<n;j++)
s=s+c[i][j]*x[j];
x[i]=s;
flag2=fabs(x[i]-p);
if(flag1<flag2)
flag1=flag2;
}
if(flag1<ep)
break;
} while(k<N);
cout<<k<<endl;
cout<<"此题的结果为:"<<endl;
for(i=0;i<n;i++)
cout<<"x"<<i+1<<"="<<x[i]<<endl;
}
void main()
{float s[10][10],c[10][10],d[10]; //ep为精度
float x[10]={0};
int i,j,n; // 记录次数
cout<<"请输入方程个数:";
cin>>n;
cout<<endl;
cout<<"请输入方程组的增广矩阵:"<<endl;
for(i=0;i<n;i++) //输入
for(j=0;j<=n;j++)
cin>>s[i][j];
cout<<endl;
xishu(s,c,d,n); //转换系数
diedai(c,d,x,n); //迭代求值
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -