版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yyywww666/article/details/42805071

算法介绍(迭代法介绍):

代码C语言实现;

  1. # include<stdio.h>
  2. # include<math.h>
  3. # define N 6
  4. /*
  5. *使用雅可比迭代法和高斯-赛德尔迭代法 求解线性方程组
  6. */
  7. main(){
  8. float NF2(float *x,float *y);
  9. float A[N][N],b[N],sum=0;
  10. float x[N],y[N]={0},x0[N];
  11. int i,j,n=0;
  12. //输入系数矩阵
  13. for(i=0;i<N;i++){
  14. for(j=0;j<N;j++){
  15. scanf(”%f”,&A[i][j]);
  16. }
  17. }
  18. //输入常数矩阵
  19. for(i=0;i<N;i++){
  20. scanf(”%f”,&b[i]);
  21. }
  22. //输入解的初值
  23. for(i=0;i<N;i++){
  24. scanf(”%f”,&x0[i]);
  25. }
  26. //输出系数矩阵
  27. printf(”输出该方程组的系数矩阵:\n”);
  28. for(i=0;i<N;i++){
  29. for(j=0;j<N;j++){
  30. printf(”%3.1f “,A[i][j]);
  31. }
  32. printf(”\n”);
  33. }
  34. //输出成数矩阵
  35. printf(”输出该方程组的常数矩阵:\n”);
  36. for(i=0;i<N;i++){
  37. printf(”%3.1f\n”,b[i]);
  38. }
  39. //输出解的迭代初值
  40. printf(”解该方程组的的迭代初值是:\n”);
  41. for(i=0;i<N;i++)
  42. {
  43. printf(”%3.1f\n”,x0[i]);
  44. }
  45. /*
  46. *利用雅可比迭代法求解线性方程组
  47. */
  48. for(i=0;i<N;i++)
  49. {
  50. x[i]=x0[i];
  51. }
  52. for(n=0;;n++){
  53. //计算下一个值
  54. for(i=0;i<N;i++){
  55. sum=0;
  56. for(j=0;j<N;j++){
  57. if(j!=i){
  58. sum=sum+A[i][j]*x[j];
  59. }
  60. }
  61. y[i]=(1/A[i][i])*(b[i]-sum);
  62. //sum=0;
  63. }
  64. //判断误差大小
  65. if(NF2(x,y)>0.01){
  66. for(i=0;i<N;i++){
  67. x[i]=y[i];
  68. }
  69. }
  70. else
  71. break;
  72. }
  73. printf(”经过%d次雅可比迭代解出方程组的解:\n”,n+1);
  74. for(i=0;i<N;i++){
  75. printf(”%f “,y[i]);
  76. }
  77. /*
  78. *利用高斯-赛德尔迭代法求解线性方程组
  79. */
  80. for(i=0;i<N;i++)
  81. {
  82. x[i]=x0[i];
  83. y[i]=0;
  84. }
  85. for(n=0;;n++){
  86. //计算下一个值
  87. for(i=0;i<N;i++){
  88. sum=0;
  89. for(j=0;j<i;j++){
  90. sum=sum+A[i][j]*y[j];
  91. }
  92. for(j=i+1;j<N;j++){
  93. sum=sum+A[i][j]*x[j];
  94. }
  95. y[i]=(1/A[i][i])*(b[i]-sum);
  96. //sum=0;
  97. }
  98. //判断误差大小
  99. if(NF2(x,y)>0.01){
  100. for(i=0;i<N;i++){
  101. x[i]=y[i];
  102. }
  103. }
  104. else
  105. break;
  106. }
  107. printf(”\n经过%d次高斯-赛德尔迭代解出方程组的解:\n”,n+1);
  108. for(i=0;i<N;i++){
  109. printf(”%f “,y[i]);
  110. }
  111. }
  112. //求两个向量差的二范数函数
  113. float NF2(float *x,float *y){
  114. int i;
  115. float z,sum1=0;
  116. for(i=0;i<N;i++){
  117. sum1=sum1+pow(y[i]-x[i],2);
  118. }
  119. z=sqrt(sum1);
  120. return z;
  121. }

代码运行输入输出结果;

转载自:https://blog.csdn.net/yyywww666/article/details/42805071


http://www.taodudu.cc/news/show-1217210.html

相关文章:

  • 超松弛迭代法(C语言实现)
  • 单目相机提高标定精度的经验(转载)
  • 计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换(转载)
  • 彻底搞懂四元数(转载)
  • OpenCV--solvePnp
  • 计算机视觉、机器学习相关领域论文和源代码大集合--持续更新……(转载)
  • OpenCV--罗德里格斯(Rodrigues)变换
  • 摄影测量--相对定向-绝对定向(C++实现)
  • 摄影测量--内外方位元素
  • 摄影测量--相对定向元素与绝对定向元素
  • 张正友相机标定程序实现
  • Eigen部分基本使用方法
  • FFMPEG针对视频操作的基本命令
  • 三维重建中旋转矩阵与平移矩阵思想误区(转载)
  • setw()(转载)
  • 外方位角元素解析
  • OpenCV--卡尔曼滤波(KalmanFilter)详解【转载】
  • OpenCV--矩阵操作总结
  • Procrustes Analysis(普氏分析)
  • C++ 标准文件的写入读出(ifstream,ofstream)
  • 利用制表位快速居中对齐公式,同时公式编号靠右对齐
  • FFmpeg命令的几种应用
  • 截取视频段转换为GIF动图
  • 世界坐标与像素坐标的相互转换
  • 由左右像点坐标反求世界坐标点
  • Opencv透视变换——cv::getPerspectiveTransform()与cv::warpPerspective()详解
  • QR矩阵分解
  • 无人驾驶汽车系统入门系列
  • OpenCV--读取图像中任意点的像素值,并显示坐标
  • OpenCV--求取图像多轮廓质心,并于图像上绘制显示质心及其坐标

分别用雅可比(Jacobi)迭代法和高斯—塞德尔(Gauss—Seidel)迭代法求解线性方程组(转载)相关推荐

  1. 雅可比(Jacobi)及高斯-塞德尔(Gauss_Seidel)迭代法求解线性方程组的matlab现实

    雅可比迭代法的实现代码: function X=Jacobi(A,B,P,delta,max1) %Input -A is a X*N nosingular matrix % -B is a N*1 ...

  2. 高斯—赛德尔(Gauss - Seidel)迭代法解线性方程组(Matlab程序)

    %---高斯-赛德尔迭代法----- %---Gauss - Seidel iteration method clear;clc; % A=[10,-1,-2;-1,10,-2;-1,-1,5]; % ...

  3. 分别用雅可比(Jacobi)迭代法和高斯—塞德尔(Gauss—Seidel)迭代法求解线性方程组

    算法介绍(迭代法介绍): 代码C语言实现; # include<stdio.h> # include<math.h> # define N 6 /* *使用雅可比迭代法和高斯- ...

  4. MATLAB实现雅可比与高斯塞德尔迭代

    概述 用MATLAB编程实现,形成m函数文件.输入A,b矩阵,无返回值,解得x向量直接显示在命令行窗口,同时绘制出x向量的收敛曲线. A = [ 2 − 1 1 1 1 1 1 1 − 2 ] b = ...

  5. 计算方法:列主元消去法,LU分解法, 雅可比迭代法,高斯塞德尔迭代法 解线性方程(C++)

    Matrix.h包括矩阵类Matrix的定义,Matrix.cpp包括该类成员函数的实现,LinearEqu.h包括线性方程类LinearEqu的定义,继承自Matrix类,其中solve()方法为列 ...

  6. [计算机数值分析]高斯-塞德尔迭代公式解线性方程组

    在雅可比迭代公式的基础上,对于收敛的迭代过程,所求出的"新值"常比"老值"更准确些,因此可以用它替代老值作进一步的计算,这样的思想就是著名的高斯-塞德尔迭代公式 ...

  7. 基于高斯塞德尔方法的超松弛迭代法MATLAB实现

    概述 用MATLAB编程实现,形成m函数文件.输入A,b矩阵,与松弛因子 ω \omega ω,无返回值.设置精度要求 ε = 1 0 − 4 \varepsilon=10^{-4} ε=10−4.所 ...

  8. 方程组求解matlab实现(朴素高斯求解、LU分解、雅可比迭代方法、高斯-塞德尔方法、连续过松弛(SOR))

    朴素高斯求解 function x= oridinarygauss(a,b) n=length(b); for j=1:n-1for i=j+1:nmult=a(i,j)/a(j,j);for k=j ...

  9. 高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现

    高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现 代码 运行 手算例题 迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的 ...

最新文章

  1. GridView 类型公开的所有成员(公共属性、公共方法、私有属性.......)
  2. 分布式系统监视 开源解决方案 zabbix与nagios对比
  3. C语言dijkstra最短距离的算法(附完整源码)
  4. matlab课程设计图像处理,MATLAB课程设计--GUI图像处理
  5. 设计素材|手机UI界面模板psd源文件格式!
  6. 计算机网络class1(概念、组成、功能和分类)
  7. 【转】VB中NEW的用法(申请内存空间)
  8. 车牌识别:HyperLPR车牌识别代码解析
  9. 利用Python和正则表达式验证hotmail邮箱的格式
  10. JRebel安装、使用
  11. 跨平台第三方平台登录和单点登录
  12. 面试过程中经常会问到的职业规划,该如何作答
  13. 对参考文献格式的一些举例
  14. 国际惯例,个人流程分享
  15. AllWinner T113 DDR验证
  16. Altium Designer 实用操作笔记
  17. 解决不同逻辑电平的兼容问题
  18. 全民k歌导出音乐方法(包含未发布,已发布歌曲导的两种方法)
  19. 一个有趣的免费资源:snap shots
  20. 纳芯微全新驱动器NSi66x1A/NSi6601M发布

热门文章

  1. leaflet-webpack 入门开发系列二加载不同在线地图切换显示(附源码下载)
  2. C#LeetCode刷题之#48-旋转图像(Rotate Image)
  3. pdm vault 使用_如何使用Key Vault连接器更好地保护Logic Apps中的秘密
  4. 项目使用ts辅助_我如何建立辅助项目并在第一周获得31,000名用户
  5. axure 小程序 lib_【kboneui】打通 H5/微信小程序,多端UI库
  6. vscode设置go-lint警告提示
  7. Oracle(二):查询、函数、集合运算
  8. kali修改root密码
  9. 曾经采集朋友圈难倒多少Python大佬,今天手把手教你如何实现!
  10. Python Turtle画分形树理解递归