1 / 11
文档名称:

病态线性方程的求解 (2).docx

格式:docx   大小:349KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

病态线性方程的求解 (2).docx

上传人:taoapp 2022/2/6 文件大小:349 KB

下载得到文件列表

病态线性方程的求解 (2).docx

相关文档

文档介绍

文档介绍:科学与工程计算
实验报告

学号: 姓名:

1004111202 王巧
l;
cin>>s;
for(k=1;; k++)
{
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
sum=a[i][j]*x0[j]+sum;
}
x[i]=x0[i]+((b[i]-sum)/a[i][i]);//雅克比迭代方法计算方式
c[i]=fabs(x[i]-x0[i]);//求差值的绝对值
x0[i]=x[i];
sum=0;
}
r=max(c);
if(r<s)//输出迭代次数
{
for(i=0; i<n; i++)
cout<<"x"<<i<<" = "<<x[i]<<setprecision(10)<<endl;
cout<<"迭代次数:"<<k<<endl;
return 0;
}
}
return 0;
}
GS迭代法
#include<iostream>
#include<>
#include <iomanip>
#include <>
using namespace std;
int n;
double max(double array[100])//求最大值函数
{
double a=array[0];
inti;
for(i=1;i<n;i++)
{
if(a<array[i])
a=array[i];
}
return a;
}
main() {
double s=0;
double max(double array[100]);
double c[100]={};
double x[100]={};//第k+1次迭代结果,储存解数组
double x0[100]={};//初始向量
inti,k,j;
doubler,sum=0;
double a[100][100];
double b[100]= {};
cout<<"请输入维数:"<<endl;
cin>>n;
cout<<"输出a数组:"<<endl;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
a[i][j]=/(i+j+1);
printf("% ",a[i][j]);//矩阵中的数精确到六位
}
cout<<endl;
}
cout<<"输出b数组:"<<endl;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
b[i]+=a[i][j];//矩阵每行的和
}
cout<<b[i]<<" ";
}
cout<<endl;
cout<<"输入精度:"<<endl;
cin>>s;
for(k=1;;k++)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
sum=a[i][j]*x0[j]+sum;
}
x[i]=x0[i]+((b[i]-sum)/a[i][i]);//gs迭代方法计算方式
c[i]=fabs(x[i]-x0[i]);//求差值的绝对值
x0[i]=x[i];
sum=0;
}
r=max(c);
if(r<s)//输出迭代次数
{for(i=0;i<n;i++)
cout<<"x"<<i<<" = "<<x[i]<<setprecision(10)<<endl;
cout<<"迭代次数:"<<k<<endl;
return 0;
}
}
}
SOR迭代法
#include<iostream>
#include<>
#include <iomanip>
#include <>
using namespace std;
int n;
double max(double array[100])
{
double a=array[0];
inti;
for(i=1;i<n;i++)