高斯—赛德尔迭代法解线性方程组(C语言)

2023-11-11

/*-------------高斯—赛德尔迭代法解线性方程组---------

参考教材:《数值分析》李乃成,梅立泉,科学出版社
    《计算方法教程》第二版 凌永祥,陈明逵*/

#include<stdio.h>
#include<math.h>

int main(void)
{
 double A[5][5] = {{28,-3,0,0,0},
      {-3,38,-10,0,-5},
     {0,-10,25,-15,0},
     {0,0,-15,45,0},
     {0,-5,0,0,30}};
 double b[5] = {10,0,0,0,0};
 double x[5] = {0,0,0,0,0}; //第k+1次迭代的结果
 double xx[5] = {0,0,0,0,0}; //第k次迭代的结果
 int size = 5;
 int Max = 100;  //最大迭代次数
 double residual = 0.0;  //
 double sum = 0.0; 
 double dis = 0.0;
 double dif = 1.0;  //相邻迭代的结果差
 double eps = 1.0e-3; //迭代精度

 for(int k=1;(k<Max)&&(dif>eps);k++)
 {
  dif = 0.0;

  for(int i=0;i<size;i++)
  {
   
   for(int j=0;j<size;j++)
   {
    //与Jacobi迭代法唯一的区别就是sum的求法
    if(j<i)
    {
     sum +=A[i][j]*x[j];//本次的x[j]
    }
    if(j>i)
    {
     sum +=A[i][j]*xx[j];//上一次的x[j]
    }

   }
   x[i] = (b[i]-sum)/A[i][i];
   sum=0.0;

  } 
  residual=0.0;
  //计算相邻迭代的结果差
  for(int m=0;m<size;m++)
  {
   dis=fabs(x[m]-xx[m]);
   if(dis>residual)
    residual=dis;
  }
  dif=residual;

  //打印第k次的结果
  printf("\n第%d次迭代的结果:\n",k);
  for(i=0;i<size;i++)
  {
   printf("%12.8f ",x[i]);
   xx[i]=x[i];
  }
  printf("\n与上次计算结果的距离(无穷范数):%12.8f \n",dif);
 }
 printf("\n迭代计算的结果为:\n");
 for(k=0;k<size;k++)
 {
  printf("%12.8f ",xx[k]);
 }
 printf("\n");
 return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高斯—赛德尔迭代法解线性方程组(C语言) 的相关文章

  • 如何自定义 DataTable 列的排序

    我需要对数据表列的值进行排序 该列包含字符串 整数或混合文本 例如 数据表列包含如下值 23 18 12 store 23 store a1 1283 25 如果我使用对值进行排序Dataview sort 方法会按此顺序产生 12 128
  • 如何在 C# 事件中区分更改是由代码还是由用户进行?

    我有一个简单的TextBox一开始是空的 我有一个简单的事件 TextChanged 可以知道用户何时更改了其中的任何内容TextBox 但是 如果我自己在代码中对其执行任何操作 该事件就会触发 喜欢设置textbox Text Test
  • boost线程在中断时不打印退出消息

    我有这段代码用于执行三个线程 其中第二个线程应在按 Enter 时中断并打印退出消息 void input val DO STUFF return void process val DO STUFF try cout lt lt waiti
  • 有没有比这更快的方法来查找目录和所有子目录中的所有文件?

    我正在编写一个程序 需要在目录及其所有子目录中搜索具有特定扩展名的文件 这将在本地驱动器和网络驱动器上使用 因此性能是一个问题 这是我现在使用的递归方法 private void GetFileList string fileSearchP
  • Linq Where 本地计数器关闭在 VS watch 中的结果不同

    我尝试删除前 3 个元素array与 LinQWhere扩展功能 这是一个例子 var array new 1 2 3 4 5 6 7 8 9 var count 3 var deletedTest1 0 var test1 array W
  • 阅读 Stack Overflow RSS 源

    我正在尝试获取未回答问题的列表the feed https stackoverflow com feeds 但我在阅读时遇到困难 const string RECENT QUESTIONS https stackoverflow com f
  • 根据拦截和返回值自动重试客户端WCF调用

    是否可以拦截 WCF 调用的结果并重试该操作 例如 操作的返回值可能包含状态代码 指示我传递到原始调用的会话令牌已过期 在这种情况下 我可以检索新的会话令牌并使用新的会话令牌重试调用 是否可以通过使用 WCF 拦截返回值 检查它 然后以对操
  • 成员初始值设定项列表中的求值顺序是什么?

    我有一个带有一些参数的构造函数 我假设它们是按照列出的顺序初始化的 但在一种情况下 它们似乎是按相反的顺序初始化的 导致中止 当我反转参数时 程序停止中止 下面是我正在使用的语法的示例 a 之前需要初始化b 在这种情况下 你能保证这个初始化
  • 通过 mpi 发送 c++ std::vector

    我知道存储一个std vector
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • 当格式字符串包含“{”时,String.Format 异常

    我正在使用 VSTS 2008 C Net 2 0 执行以下语句时 String Format 语句抛出 FormatException 有什么想法是错误的吗 这是获取我正在使用的 template html 的位置 我想在 templat
  • 为什么以下代码不允许我使用 fgets 获取用户输入但可以使用 scanf?

    这是一个更大程序的简短摘录 但该程序的其余部分无关紧要 因为我认为我能够隔离该问题 我怀疑这与我使用 fgets 的方式有关 我读过 最好使用 fgets 而不是 scanf 但我似乎无法让它在这里正常工作 当我使用以下代码时 程序不会给我
  • C++ Primer 5th Edition 错误 bool 值没有指定最小大小?

    bool 的最小大小不应该是 1 个字节吗 这有点学术性的东西 尽管它们会转换为数字 并且 与其他所有事物一样 它们最终将基本上由计算机内存中的数字表示 但布尔值不是数字 你的bool可以取值true 或值false 即使您确实需要至少 1
  • OpenMP C 程序运行速度比顺序代码慢

    我是 OpenMP 的新手 正在尝试并行化 Jarvis 的算法 然而事实证明 与顺序代码相比 并行程序花费的时间要长 2 3 倍 难道问题本身就不能并行化吗 或者我并行化它的方式有问题 这是我针对该问题的 openMP 程序 其中有 2
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • 便携式终端

    有没有办法根据所使用的操作系统自动使用正确的 EOL 字符 我在想类似的事情std eol 我知道使用预处理器指令非常容易 但很好奇它是否已经可用 我感兴趣的是 我的应用程序中通常有一些消息 稍后我会将这些消息组合成一个字符串 并且我希望将
  • 局部静态变量初始化是线程安全的[重复]

    这个问题在这里已经有答案了 假设我有一个包含三个静态函数的类 如下所示 include
  • 从 C# 中的 .NET SecureString 读取单个字符?

    WPF 的PasswordBox 返回一个SecureString 它对窥探者隐藏密码 问题是你最终必须获得密码的值 而我在网上找到的建议都涉及将值复制到字符串中 这会让你回到窥探者的问题 IntPtr bstr Marshal Secur
  • 如何使复选框不可选择?

    我想知道你是怎么做的CheckBox在c 中无法选择 我认为这会是类似 SetSelectable false 之类的东西 但我似乎看不到该方法 I found CanSelect但这似乎是只读属性 您可以设置自动检查 http msdn
  • 最后从同一类中的其他构造函数调用构造函数

    我在这里读到可以调用另一个构造函数从同一类中的另一个构造函数调用构造函数 https stackoverflow com questions 829870 calling constructor from other constructor

随机推荐

  • 分享人工智能方向优质技术博客

    Machine learning Blogs 想要阅读更多关于人工智能技术博客 请关注微信公众号 人工智能大讲堂 专注人工智能底层数学原理和应用 专栏包括线性代数 概率统计 机器学习 深度学习 线性代数博客汇总 线性代数博客合集 线性代数本
  • 激光雷达Velodyne VLP16在ROS下的使用

    Velodyne VLP16在ROS下的使用 前置条件 Ubuntu 16 04 激光雷达VLP16 ROS kinetic 使用步骤 基础设置 安装驱动 sudo apt get install ros kinetic velodyne
  • 蓝桥杯国赛C++A组B组题解整理(第八、七、六、五、四届)

    写在前面的话19 04 04 今年省赛的结果出的意外得快 有很多小伙伴来和我分享他们进了省一的喜悦 并问我啥时候更新国赛题解 emmm 不是我不想更新 实在是抽不出时间 有缘再更 虽然不更新题解 但是我决定这次提前写一点注意事项吧 省得大家
  • java 24点游戏

    24点纸牌游戏 一 内容 二 步骤 1 算法分析 2 概要设计 3 测试 4 调试 5 心得体会 一 内容 24点游戏是经典的纸牌益智游戏 常见游戏规则 从扑克中每次取出4张牌 使用加减乘除 第一个能得出24者为赢 其中 J代表11 Q代表
  • 分享一个效果很好的ddos压力测试服务网站

    分享一个经测试效果好的ddos压力测试网站 打开网站 http www akddos com 免费注册一个账户即可测试 udp流量最高400G 支持SYN CC DNS等多种模式 套餐自由选择 效果很好 大家可以去试试 网站主要是用来测试自
  • 给定一个整数数组,判断是否存在重复元素。

    存在重复元素 给定一个整数数组 判断是否存在重复元素 如果存在一值在数组中出现至少两次 函数返回 true 如果数组中每个元素都不相同 则返回 false 示例 1 输入 1 2 3 1 输出 true 作者 力扣 LeetCode 链接
  • html动态爱心代码【三】(附源码)

    目录 前言 特效 内容修改 完整代码 总结 前言 七夕马上就要到了 为了帮助大家高效表白 下面再给大家带来了实用的HTML浪漫表白代码 附源码 背景音乐 可用于520 情人节 生日 表白等场景 可直接使用 特效 内容修改 文字区 div h
  • 反卷积层(转置卷积)

    反卷积 deconvolution 不是数字信号处理里面的意义 在深度学习里面应该叫做转置卷积 transposed convolution 又名微步卷积 fractionally strided convolutions 也有叫Backw
  • Qt5开发学习总结(三)——窗口部件的使用(QWidget和QDialog)

    窗口部件 QT提供的默认基类只有QMainWindow QWidget 和QDialog这三种 这三种窗体也是用的最多的 QMainWindow是带有菜单栏和工具栏的主窗口类 QDialog是各种对话框的基类 而他们全部继承自QWidget
  • 力扣简单题合集(带答案)

    1 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素不能使用两遍 class Solution publi
  • [leetcode 周赛 149] 1155 掷骰子的N种方法

    目录 1155 Number of Dice Rolls With Target Sum 掷骰子的N种方法 描述 思路 代码实现 1155 Number of Dice Rolls With Target Sum 掷骰子的N种方法 描述 这
  • Windows下安装MySQL(详解)

    Windows下安装MySQL MySQL8 0下载链接 https pan baidu com s 1w2TcLGel51jJwJerQneVjg pwd zzkt 提取码 zzkt 也可以选择在官网上下载 1 在百度 其他浏览器也可以
  • Windows环境下nacos的下载与安装

    一 nacos的下载地址 https github com alibaba nacos 根据自己项目配置的版本 下载对应的nacos客户端 windows下载zip安装包 linux下载tar gz包 二 下载解压成功后 修改配置文件D n
  • 达梦中Hibernate的Save问题

    业务逻辑 在原有数据源是mysql的基础上适配达梦时 使用Hibernate的save方法进行保存 save保存后会返回自增主键id的数值 再根据这个返回值来进行updateorsave更新操作 某字段为主键id值 固定字符组成 问题 返回
  • 钢条切割问题——(暴力法(Brute force), Top-down DP演算法,Bottom-up DP演算法)对比

    注意 以下是三合一的代码 如果只想要 暴力法 Brute force https blog csdn net qq 37486501 article details 84844197 Top down DP演算法 https blog cs
  • LeetCode 面试题 04.09. 二叉搜索树序列

    文章目录 一 题目 二 C 题解 一 题目 从左向右遍历一个数组 通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树 给定一个由不同节点组成的二叉搜索树 root 输出所有可能生成此树的数组 点击此处跳转题目 示例 1 输入 root
  • 金牌厨师Pandas:听说Excel处理数据分行快得很?

    作者简介 HeoiJin 立志透过数据看清世界的产品策划 专注爬虫 数据分析 产品策划领域 万物皆营销 资本永不眠 数据恒真理 CSDN https me csdn net weixin 40679090 目录 一 前言 最近收到一个小朋友
  • 【操作系统】王道考研 p58 磁盘调度算法

    磁盘调度算法 一些寻道的图来自 操作系统 磁盘调度算法 知识总览 一次磁盘读 写操作需要的时间 先来先服务算法 FCFS First Come First Service 很菜的算法 菜在它很容易来来回回 如 最短寻找时间优先算法 SSTF
  • Spring cloud项目搭建----Feign(七)

    开发的时候在想如果自己做项目经理 如何从零搭建一套框架呢 就着手实践和记录了一下 本篇开始介绍一下Feign的使用 1 创建一个maven项目 example api 这个项目是一个公用的feign接口module 会以jar包的形式引入其
  • 高斯—赛德尔迭代法解线性方程组(C语言)

    高斯 赛德尔迭代法解线性方程组 参考教材 数值分析 李乃成 梅立泉 科学出版社 计算方法教程 第二版 凌永祥 陈明逵 include