好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

数值计算雅可比迭代.docx

4页
  • 卖家[上传人]:大米
  • 文档编号:521953058
  • 上传时间:2022-11-16
  • 文档格式:DOCX
  • 文档大小:49.06KB
  • / 4 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 实验报告一、 实验目的 了解并学习线性方程组的解法,运用雅可比迭代法求解给定的线性方程组掌握如何求解线性方程组二、实验方法(要求用自己的语言描述算法)雅可比迭代法:运用雅可比迭代法求解线性方程组时,必须要考虑迭代过程的收敛性,接下来,先证明给定的线性方程组收敛:4-10-100-14-10-100-14-10-1-10-14-100-10-14-100-10-14x1x2x3x4x5x6=05-25-26由上式可得雅可比迭代矩阵:Bj=0140140014014014001401401414014014001401401400140140可以得到:Bj∞=max12,34,34,34,34,12=34<1故原线性方程迭代过程必收敛由线性方程组可以得到迭代方程如下x1=x2+x4∕4x2=x1+x3+x5+5∕4x3=x2+x4+x6-2∕4x4=x1+x3+x5+5∕4x5=x2+x4+x6-2∕4x6=x3+x5+6∕4 依次迭代,直至满足条件 Xk+1-Xk2≤0.0001 结束迭代三、实验代码#include #include #include #include #include #include using namespace std;//雅可比迭代法int main(){ double x[2][6] = {0};//数据标记 int time = 0; double sum1 ;//求和计数 ofstream fout("output.txt");//打开只写文件 double number[6][7] = { 4, -1, 0, -1, 0, 0, 0, -1, 4, -1, 0, -1, 0, 5, 0, -1, 4, -1, 0, -1, -2, -1, 0, -1, 4, -1, 0, 5, 0, -1, 0, -1, 4, -1, -2, 0, 0, -1, 0, -1, 4, 6 };//存储数据 cout << "原线性方程组为:" << endl; fout << "原线性方程组为:" << endl; for (int i = 0; i < 6; i++){ for (int j = 0; j < 7; j++)//输出线性方程组 { cout << ' ' << right << setw(4) << number[i][j]; fout << ' ' << right << setw(4) << number[i][j];//对齐单元格 } cout << endl; fout << endl; } while (1){ sum1 = 0; x[1][0] = (x[0][1] + x[0][3]) / 4; x[1][1] = (x[0][0] + x[0][2] + x[0][4] + 5) / 4; x[1][2] = (x[0][1] + x[0][3] + x[0][5] - 2) / 4; x[1][3] = (x[0][0] + x[0][2] + x[0][4] + 5) / 4; x[1][4] = (x[0][1] + x[0][3] + x[0][5] - 2) / 4; x[1][5] = (x[0][2] + x[0][4] + 6) / 4;//迭代公式 for (int i = 0; i < 6; i++){ sum1 += (x[0][i] - x[1][i])*(x[0][i] - x[1][i]);//计算求和,用于判断是否结束循环 } time++; for (int i = 0; i < 6; i++) x[0][i] = x[1][i];//存储计算值 sum1 = sqrt(sum1); fout << "第" << time << "步计算结果为:" << endl; fout << fixed << setprecision(5) << "‖X^((k+1) )-X^((k) ) ‖_2 = " << sum1 << endl;//输出数据结果到文件 if (fabs(sum1) <= 0.0001) break;//满足条件,退出循环 } cout << "迭代次数为:" << time << endl; cout << "计算结束后,获得的结果为:" << endl; fout << "计算结束后,获得的结果为:" << endl; for (int i = 0; i < 6; i++){ cout << fixed << setprecision(4) << 'x' << i + 1 << '=' << x[0][i] << endl;//输出数据结果到控制台 fout << fixed << setprecision(4) << 'x' << i + 1 << '=' << x[0][i] << endl;//输出数据结果到文件 } system("pause");}四、实验结果及其讨论雅可比迭代法实验结果如图3-1所示图3-1 雅可比迭代法实验结果迭代中间过程的matlab图如图3-2所示图3-2 迭代中间过程的matlab图五、总结 通过这次实验,初步掌握了雅可比迭代法在代码上的实现与应用。

      进一步提高了自我求解给定的线性方程组,运用计算机进行科学计算的能力,有极大的收获。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.