高斯赛德尔迭代法_gauss seidel迭代法的介绍

高斯赛德尔迭代法_gauss seidel迭代法的介绍

我们在求解矩阵时,有很多种方法,其中当矩阵是大型稀疏矩阵(矩阵中有大部分素都为0)时,我们可以用迭代法求解。
关于该方法的思想和定义,请参考如下博客:
http://www.doc88.com/p-6953977164202.html
我编写的C++代码,也是根据上面的博客中的数学公式。
在这里我们使用的数据文件matrix.txt为
– 第一行表示矩阵的行数或者列数
– 接下来的三行,表示矩阵本体 A
– 最后一行表示 b,A*x=b
– 我们要计算的就是x

3 8 -3 2 4 11 -1 6 3 12 20 33 36

代码如下:

#include <iostream> #include <fstream> #include <vector> #include <opencv2/opencv.hpp> #include <opencv2/photo.hpp> using namespace std; using namespace cv; int main() { ifstream file("matrix.txt"); int rows; int cols; file >> rows; cols = rows; Mat A(rows, cols, CV_32FC1); /*我们假设输入的矩阵对角线素不为0*/ for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { file >> A.at<float>(i, j); } } Mat b(1, cols, CV_32FC1); for (int i = 0; i < cols; i++) { file >> b.at<float>(i); } file.close(); //迭代次数 iter = 10次 Mat x(1, cols, CV_32FC1); x.setTo(0); for (int iter = 0; iter < 10; iter++) { for (int i = 0; i < rows; i++) { float sum = 0; for (int j = 0; j < cols; j++) { if (i == j)continue; sum += A.at<float>(i, j)*x.at<float>(j); } x.at<float>(i) = (b.at<float>(i) -sum) / A.at<float>(i, i); } } cout << "最终的结果为:" << endl; for (int i = 0; i < cols; i++) { cout << "x" << i << "=" << x.at<float>(i) << "\t"; } return 0; }

最后输出的结果为

最终结果为 x0=3 x1=2 x2=1

和正确的结果一样。在这里我们迭代了10次,求出了最终的结果。关于数值分析,我并没有投入太多的精力,如果有问题和值得改进的地方,希望各位留言。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/162679.html

(0)
上一篇 2024年 7月 5日 下午1:12
下一篇 2024年 7月 5日 下午1:16

相关推荐

  • c语言中头文件stdlib.h_c++语言程序设计

    c语言中头文件stdlib.h_c++语言程序设计#include〈stdio.h〉有什么作用?c语言首先你要理解 C 语言的头文件(.h 结尾的文件)是什么。这里的后缀 h 就是 Header File(头文件)的首字母。一般在头文件中,会存有程序所需函数的函数原型(Prototype)、一些常量(Constant)、一些变量(Variab

    激活谷笔记 2024年 9月 3日
  • matlab矩阵移动_matlab矩阵移动平均

    matlab矩阵移动_matlab矩阵移动平均MATLAB移动平均法:原理、应用和实例移动平均法原理移动平均法(Moving Average,简称MA)是一种常见的时间序列分析方法,用于预测未来的趋势或波动。其基本原理是将一段时间内的观测值进行平均,然后以此作为未来观测值的预测值。

    2024年 6月 17日
  • html怎样设置文本框的高度和宽度

    html怎样设置文本框的高度和宽度自学前端课程的成果如何?来做一套前端基础测试题吧!(附答案)千锋教育推出web前端基础全套课堂,看过的小伙伴掌握情况如何?可以做一套前端基础测试题来测试一下!Web 前端基础全套教程1、以下是<!DOCTYPE>素作用的是( A )A、该素用来定义文档类型B、该素用

    激活谷笔记 2024年 7月 28日
  • setb全称_set简称

    setb全称_set简称【Redis实战】集合类型(Set)文章目录 1、增加/删除元素(SADD和SREM)2、获得集合中得到所有元素(SMEMBERS)3、判断元素是否在集合中(SISMEMBER&#x

    激活谷笔记 2024年 5月 28日
  • datedif函数计算天数

    datedif函数计算天数今天跟大家介绍一个Excel中的隐藏函数的时间函数:DATEDIF,它在Excel中的插入公式选项中是没有的意味着不能使用函数参数向导来输入公式,下面就让我带领大家一起认识它把DATEDIF函数以及参

    激活谷笔记 2024年 5月 18日
  • spider spider是什么意思_Spider是什么服装品牌

    spider spider是什么意思_Spider是什么服装品牌spiders的意思不雅是什么意思 桃花旗袍 “不雅”是汉语词汇,拼音是bù yǎ,释义:不正、不雅观、不好看。出处:1、《荀子·儒效》:“道过三代谓之荡,法贰后王谓之不雅。”2、清·俞正燮《癸巳存稿·法后王》:“法贰后王谓之不雅,以居下倍上,是邪说也。不雅者,不正也。”3、清·

    2024年 8月 5日
  • 分区表什么意思_固态硬盘如何分区

    分区表什么意思_固态硬盘如何分区分区表是做什么用 分区表的作用介绍【详解】分区表是运用硬盘,必须了解的最最基础的知识,你可能常听搞电脑的人说MBR、GPT这两个专业术语,指的就是硬盘分区表。分区表是做什么用的呢?简单的说,分区表的作用就是把一块单独的物理硬盘,划分成几个各自相对独立的区域,便于

    2024年 7月 27日
  • Rider2024.1.4激活码(PyCharm 2024 最新激活码 2024.04.11 更新)

    Rider2024.1.4激活码(PyCharm 2024 最新激活码 2024.04.11 更新)

    2024年 7月 1日
  • RubyMine激活2022.3(JetBrains RubyMine 2022 for Mac(Ruby代码编辑器))

    RubyMine激活2022.3(JetBrains RubyMine 2022 for Mac(Ruby代码编辑器))

    2024年 7月 31日
  • Rider2024.1.5激活码(Navicat 16、17激活激活成功教程永久教程(2024-5最新)(含windows+Mac激活))

    Rider2024.1.5激活码(Navicat 16、17激活激活成功教程永久教程(2024-5最新)(含windows+Mac激活))

    2024年 8月 14日
  • 分区表类型是什么_分区表类型是什么意思

    分区表类型是什么_分区表类型是什么意思大数据面试题(自己总结的)面试题linux:使用哪一个命令可以查看自己文件系统的磁盘空间配额呢?使用命令repquota 能够显示出一个文件系统的配额信息说一下ps和top命令的区别ps命令只能显示执行瞬间的进程状态 top命令实时跟进进程状态Hadooph

    激活谷笔记 2024年 6月 22日
  • cne是什么品牌的鞋子_cne鞋子是什么档次

    cne是什么品牌的鞋子_cne鞋子是什么档次广州市韦柏贸易有限公司旗下斯艾依(CnE)女鞋CnE 品牌故事国家:中国创建年代: 2001年产品类别:女款休闲鞋,女款时装鞋创始人:温达华公司总部:香港官方网址:http://www.cne-shoe.com.cn/品牌历史CnE自

    激活谷笔记 2024年 5月 30日
关注微信