logo资料库

数值分析 C++程序.doc

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
课题一 解线性方程组的直接解法
实验目标:
Gauss消去法:
Gauss列主元消去法:
课题三 解线性方程组的迭代法
实验目标:
Gauss-Seidel迭代法:
SOR迭代法:
课题六 函数插值方法
实验目标:
课题八 曲线拟合的最小二乘法
实验目标:
实验遗留问题:
课题一 解线性方程组的直接解法 实验目标: 2 -3 -1 6 -5 -3 2 -2 -1 给定几个不同的线性方程组,请用适当的直接法求解。 (1) 4 2 8 6 4 3 0 -2 5 -1 -4 2 6 8 7 17 0 2 16 10 -11 9 17 34 4 9 0 0 1 0 0 5 0 0 1 2 -1 3 0 3 -1 9 1 7 -3 3 2 6 -3 2 5 3 0 2 -1 2 0 12 2 8 -3 -24 -8 6 0 0 1 4 3 5 1 2 4 3 -1 1 6 -1 5 3 -4 6 -8 2 -1 6 2 -7 13 0 -1 右端项= 5 12 3 2 3 46 13 38 19 -21 Gauss 消去法: #include #include using namespace std; int i,j,k; int Array(double ***Arr, int n){ double **p; int i; p=(double **)malloc(n*sizeof(double *)); if(!p)return 0; for(i=0;i>n; p[i]=(double *)malloc(n*sizeof(double)); for(i=0;i>matrix[i][j]; } } cout<<"请输入右端项:"<>B[i]; } double *X; X= new double[n]; for( k = 0; k < n-1 ;k++) { for(i = k+1; i
double T = matrix[i][k]/matrix[k][k]; double Temp = 0; B[i] = B[i] - T * B[k]; for (int j = i+1; j=0 ; i--) { Gauss 列主元消去法: #include #include using namespace std; int i,j,k; cout << "线性方程组的解(X1,X2,X3......Xn) 为:"<>n; if(!Array(&matrix,n)) cout<<"内存分配失败!"; else cout<<"请输入矩阵"<>matrix[i][j]; } } cout<<"请输入右端项:"<>B[i]; } double *X; X= new double[n]; { } *Arr=p; return 1; } void main(){ double **matrix; int n; int index = k; for(i = k; i< n ;i++) { if(matrix[index][k]
temp = matrix[index][i]; } matrix[index][i] = matrix[k][i]; X[n-1] = B[n-1]/matrix[n-1][n-1]; matrix[k][i] = temp; for (i = n-2; i >=0 ; i--) } temp = B[index]; B[index] = B[k]; B[k] = temp; for(i = k+1; i #include using namespace std; int i,j,k; //计数器 int M = 2000; int Array(double ***Arr, int n){
double **p; int i; B = new double[n]; for(i=0;i>B[i]; p[i]=(double *)malloc(n*sizeof(double)); if (fabs(matrix[i][i]) < eps) if(!p[i])return 0; if(!p)return 0; for(i=0;i>eps; double **matrix; int n; cout<<"矩阵大小为:"; cin>>n; double *X; X= new double[n]; double *Y; Y= new double[n]; double *G; G= new double[n]; for(i=0;i>matrix[i][j]; } } cout<<"请输入右端项:"<
for( i = 0; i < n ;i++) 方程组的解(X1,X2,X3......Xn)为:"< #include using namespace std; int i,j,k; //计数器 int M = 2000; int Array(double ***Arr, int n){ double **p; int i; p=(double **)malloc(n*sizeof(double *)); if(!p)return 0; for(i=0;i>eps; double **matrix; int n; cout<<"矩阵大小为:"; cin>>n; double *X; X= new double[n]; double *Y; { } *Arr=p; return 1; } void main() p[i]=(double *)malloc(n*sizeof(double)); Y= new double[n]; if(!p[i])return 0; double *G; G= new double[n]; for(i=0;i
//迭̨¹代䨲 for (i = 0;i < n; i++) { } double temp = 0; for (j = 0;j>matrix[i][j]; } } cout<<"请输入右端项:"<>B[i]; } for (i = 0 ;i< n;i++) { } { } matrix[i][i] = 0; G[i] = B[i]/T; int counter = 0; while (counter < M) {
SOR 迭代法: #include #include using namespace std; int i,j,k; //计数器 int M = 2000; int Array(double ***Arr, int n){ double **p; int i; cin>>n; double *X; X= new double[n]; double *Y; Y= new double[n]; double *G; G= new double[n]; p=(double **)malloc(n*sizeof(double *)); for(i=0;i>matrix[i][j]; } } cout<<"默认最多迭代次数为2000次"<>eps; double **matrix; int n; cout<<"矩阵大小为:"; double *B; B = new double[n]; for(i=0;i>B[i]; }
for (i = 0 ;i< n;i++) if (fabs(matrix[i][i]) < eps) for (i = 0 ;i< n ; i++) { } { } cout <<"打印失败"<
分享到:
收藏