您的位置:首页 » 实验报告答案 » 计算机数值方法 第三版 实验报告及答案 (施吉林 刘淑珍)

计算机数值方法 第三版 实验报告及答案 (施吉林 刘淑珍)

计算机数值方法 第三版 实验报告及答案 (施吉林 刘淑珍) - 封面

实验报告配套教材:

书名:计算机数值方法 第三版
作者:施吉林 刘淑珍 陈桂芝
出版社:高等教育出版社

实验报告概述:

、实验目的 通过本实验学习线性方程组各种直接数值解法的原理。掌握高斯消去法、三角分解法等直接解法的编程。 二、实验内容 1. 高斯列主元素消去法的编程实现。 2. 杜力特尔三角分解法的编程实现。 3. 平方根法的编程实现。* 三、实验步骤 1. 高斯列主元素消去法的编程实现 用高斯主元素消去法解线性方程组: 解:(1) 高斯列主元素消去法的流程图如下: 定义并初始化变量,定义并初始化数组a[n][n+1],n = 3 for(k = 0; k < n-2; k++) i0 = k 确定行号i0 for(i = k+1; i<n; i++) 若 |a[i][k]|>|a[i0][k]| 真 i0 = i p = a[i0][k] 若 |p|<=e 真 ext=1;退出循环 若 i0 != k 真 for (j = k; j <= n; j++ ) 换行 u = a[k][j] a[k][j] = a[i0][j] a[i0][j] = u for(i = k+1; i<n; i++) 消元 a[i][k] = a[i][k]/ a[k][k] for(j = k+1; j<=n; j++) a[i][j] = a[i][j]- a[i][k]* a[k][j] 若 |a[n-1][n-1]|<e 真 ext=1 假 a[n-1][n] = a[n-1][n] / a[n-1][n-1] 回代 for( k = n-2; k>=0;k--) s = 0 for(j=k+1; j<n; j++) s = s + a[k][j]* a[j][n] a[k][n] = (a[k][n] – s)/ a[k][k] 若 ext = 1 真 无解 假 输出解 (2) 依据流程图,写出代码如下: #include <iostream.h> #include <math.h> void main() { const int n=3; int i, i0, ext = 0; double e, s, u, p; double a[n][n+1]={{0.00000001,2,3,1},{-1,3.712,4.623,2},{-2,1.072,5.643,3}}; e=0.000001; for(int k=0;k<n-1;k++) { i0 = k; // 确定行号 for(i=k+1;i<n;i++) if(fabs(a[i][k])>fabs(a[i0][k])) i0=i; p=a[i0][k]; if(fabs(p)<e) { ext=1; break; } if(i0!=k) for(int j=k;j<=n;j++) // 换行 { u=a[k][j]; a[k][j]=a[i0][j]; a[i0][j]=u; } for(i=k+1;i<n;i++) // 消元 { a[i][k]=a[i][k]/a[k][k]; for(int j=k+1;j<=n;j++) a[i][j]=a[i][j]-a[i][k]*a[k][j]; } } if(fabs(a[n-1][n-1])<e) ext=1; else { // 回代 a[n-1][n]=a[n-1][n]/a[n-1][n-1]; for(int k=n-2; k>=0; k--) { s=0; for(int j=k+1; j<n; j++) s=s+a[k][j]*a[j][n]; a[k][n]=(a[k][n]-s)/a[k][k]; } } if(ext == 1) cout<<"方程组无解"<<endl; else { cout<<"方程的根X=("; // 输出解 for(int i=0;i<n;i++) cout<<a[i][n] <<","; cout<<")"<<endl; } } (3) 输入上述代码,调试并运行。 (4) 修改代码求解作业中的线性方程组。