解方程组之Jacobi法

迭代过程
首先将 方程组中的 系数矩阵 A分解成三部分,即: A = L+D+U,如图1所示,其中 D为对角阵, L为下 三角矩阵, U为上三角矩阵。
之后确定迭代格式,X^(k+1) = B*X^(k) + f ,(这里^表示的是上标,括号内数字即迭代次数),如图2所示,其中 B称为迭代矩阵,雅克比迭代法中一般记为 J。(k = 0,1,......)
再选取初始迭代 向量X^(0),开始逐次迭代。
核心部分,迭代实现:
public void Calcu5(){int count1 = 0, count2 = 0;while(true){for(int i=0;i<n;i++){double sum = 0;for(int j=0;j<n;j++){if(j!=i){sum += a[i, j] * x[j];}}x2[i] = (a[i, n] - sum) / a[i, i];if (Math.Abs(x2[i] - x[i]) < e)count2++;}count1++;if(count1>10000){ Console.WriteLine("迭代发散!!!");break; }if(count2==n){ Console.WriteLine("迭代次数:{0}", count2);break; }for(int i=0;i<n;i++){ x[i] = x2[i]; }}}
完整:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Jacobi迭代
{class Jacobi{int n;public int N{get { return n; }set { n = value; }}double[,] a;public double[,] A{get { return a; }set { a = value; }}double[] x;public double[] X{get { return x; }set { x = value; }}double e = 0.00001;public double E{get { return e; }set { e = value; }}private double[] x2;public double[] X2{get { return x2; }set { x2 = value; }}public void Input(){Console.WriteLine("请输入阶数:");n = Convert.ToInt32(Console.ReadLine());a = new double[n, n + 1];x = new double[n];x2 = new double[N + 1];for (int i = 0; i < N; i++){X[i] = 0;}Console.WriteLine("请输入各行系数(','或' '隔开):");for (int i = 0; i < n; i++){string s = Console.ReadLine();string[] ss = s.Split(' ', ',');for (int j = 0; j < n + 1; j++){a[i, j] = Convert.ToDouble(ss[j]);}}}public void Calcu5(){int count1 = 0, count2 = 0;while(true){for(int i=0;i<n;i++){double sum = 0;for(int j=0;j<n;j++){if(j!=i){sum += a[i, j] * x[j];}}x2[i] = (a[i, n] - sum) / a[i, i];if (Math.Abs(x2[i] - x[i]) < e)count2++;}count1++;if(count1>10000){ Console.WriteLine("迭代发散!!!");break; }if(count2==n){ Console.WriteLine("迭代次数:{0}", count2);break; }for(int i=0;i<n;i++){ x[i] = x2[i]; }}}public void Output(){Console.WriteLine("方程系数为:");for (int i = 0; i < n; i++){string s = null;for (int j = 0; j < n + 1; j++){s += string.Format("{0,8:f2}", a[i, j]);}Console.WriteLine(s);}}public void OutputX(){Console.WriteLine("\n方程组的解是:");for (int i = 0; i < n; i++){Console.WriteLine("x{0}={1}", i + 1, x[i]);}}}class Program{static void Main(string[] args){Jacobi abc = new Jacobi();abc.Input();abc.Output();abc.Calcu5();abc.OutputX();}}
}
运行结果:
请输入阶数:
4
请输入各行系数(','或' '隔开):
10 -1 2 0 6
-1 11 -1 3 25
2 -1 10 -1 -11
0 3 -1 8 15
方程系数为:
   10.00   -1.00    2.00    0.00    6.00
   -1.00   11.00   -1.00    3.00   25.00
    2.00   -1.00   10.00   -1.00  -11.00
    0.00    3.00   -1.00    8.00   15.00
迭代发散!!!
方程组的解是:
x1=1
x2=2
x3=-1
x4=1
请按任意键继续. . .

C#--解方程组之Jacobi迭代法相关推荐

  1. Jacobi迭代法分量形式matlab,解线性方程组的Jacobi迭代法.pdf

    1 Jacobi 迭代法迭代法 若A为非奇异矩阵且0 ii a 1 2 in 11121 21222 12 n n nnnn aaa aaa A aaa 将原方程组等价变形为 1 n iijj jj ...

  2. 迭代法解方程:牛顿迭代法、Jacobi迭代法

    牛顿迭代公式 设已知方程f(x)=0的近似根x0 ,则在x0附近f(x)可用一阶泰勒多项式 近似代替.因此, 方程f(x)=0可近似地表示为p(x)=0.用x1表示p(x)=0的根,它与f(x)=0的 ...

  3. 数值分析】迭代法解方程:牛顿迭代法、Jacobi迭代法

    转自:http://blog.csdn.net/xiaowei_cqu     博主写的很好 ps:最近在学数值分析,本来打算自己写这博文,呀呀呀,看到博主这篇博文这么棒,就转载了.方程组高斯消去法和 ...

  4. c语言jacobi迭代法,迭代法解方程:牛顿迭代法、Jacobi迭代法

    利用迭代算法处理问题,需要做好以下三个方面的工做: 一.确定迭代变量.在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 二.建立迭代关系式.所谓 ...

  5. matlab编jacobi方法,jacobi迭代法matlab

    h Matlab 线性方程组的迭代解法(Jacobi 迭代法 Gauss-Seidel 迭代法)实验报告 2008年11月09日 星期日 12:49 1.熟悉 Jacobi 迭代法,并编写 Matla ...

  6. Jacobi迭代法的matlab程序(《数值分析原理》)

    文章目录 Jacobi迭代法matlab程序(<数值分析原理>) 1.Jacobi迭代格式 2.Jacobi迭代法的例子 Jacobi迭代法matlab程序(<数值分析原理>) ...

  7. MATLAB 五对角矩阵 Jacobi迭代法 SOR迭代法 解方程组

    % ----------------------------------------------------------------------------------------------- % ...

  8. c语言编程雅可比解方程,求雅可比迭代法解方程组的C\C++程序,急需一个运用雅可比迭代法求线性方程组的C/C++程序!...

    问题标题 求雅可比迭代法解方程组的C\C++程序,急需一个运用雅可比迭代法求线性方程组的C/C++程序! 2019-7-8来自ip:14.137.150.56的网友咨询 浏览量:218 手机版 问题补 ...

  9. jacobi迭代法matlab_解线性方程组的经典迭代法(1)-理论

    本文复习求解线性方程组的经典迭代法的理论部分,且主要是单步迭代法. 下一节将会是MATLAB编程实现,并大概比较下各算法的优劣. 我们考虑的问题是求解线性方程组 ,其中 是n阶实方阵, 是n维列向量. ...

最新文章

  1. win32 打印机api
  2. Galaxy 生信平台(四):邮件与管理员配置
  3. 信息化建设工程的有效成本及定价分析(1)
  4. 极富创意的404错误个性页面设计欣赏
  5. Python Json存储与读取
  6. 发布一个WTL实现的QQ2009登录窗口源码
  7. Android Activity标签属性
  8. Asp.net如何截屏
  9. Dom4j完整教程~字符串与XML的转换
  10. Snabbdom(虚拟dom)
  11. MOSS架构和共享服务(Shared Service)
  12. LeetCode之两个数组的交集
  13. 详细介绍如何在ubuntu20.04中安装ROS系统,超快完成安装(最新版教程)
  14. 新浪微博从 Kafka 到 Pulsar 的演变
  15. 全志 起家产品 A31S四核:昂达V819mini平板试玩
  16. windows强制删除文件或者程序
  17. FPGA之旅设计99例之第十九例----OV5640上电及初始化
  18. Visio里如何画树状图?
  19. 常见web中间件及其漏洞概述
  20. 矩形法_加工难题:双头深矩形螺旋槽

热门文章

  1. 企业级大数据、数分资料免费下载(附百度云破解神器)
  2. 手机用久了耗电快?华为手机的后备隐藏能源,开启后续航强如新机
  3. 1-ubuntu基础——换源第一步
  4. bind9 dlz mysql_bind-9.4.2+mysql dlz安装
  5. 基于MatlabSimulin的微电网模型及光伏电池建模仿真分析
  6. 计算机缓存加速网络,教你win7怎么清理缓存为电脑提速
  7. 用tensorflow实现一个分形图制作
  8. 关于ubuntu 下载后没有网的情况
  9. 服务器ssd硬盘接笔记本,M.2固态硬盘怎么安装 台式机与笔记本电脑安装M.2 SSD方法图解...
  10. 抖音直播用什么手机效果最好 抖音直播手机哪款好2023