【数值计算方法】雅可比解线性方程

2024-05-29 13:20

本文主要是介绍【数值计算方法】雅可比解线性方程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

废话少说,直接上干货。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MaxSize 100
double A[MaxSize][MaxSize]; //系数矩阵
double B[MaxSize];          //系数矩阵
double C[MaxSize][MaxSize]; //去对角线矩阵
double D[MaxSize][MaxSize]; //储存D逆
double E[MaxSize][MaxSize]; //储存-(D-1)*(L+U)
double F[MaxSize];          //(D-1)*B
double X[MaxSize];
double X1[MaxSize];
double Y[MaxSize];
#define e 1e-6 //10的负6次方
int n;        //矩阵尺寸大小// 初始化矩阵
void InitMatrix()
{int i, j;for (i = 0; i < n; i++){for (j = 0; j < n; j++){if (i == j)D[i][j] = A[i][j];elseC[i][j] = A[i][j];}}
}// 雅可比迭代求解线性方程组
int Jacobi()
{int k;double sum, max_diff;for (k = 0; ; k++) {max_diff = 0.0;for (int i = 0; i < n; i++){sum = 0.0;for (int j = 0; j < n; j++){if (j != i)sum += A[i][j] * X[j];}X1[i] = (B[i] - sum) / A[i][i];double diff = fabs(X1[i] - X[i]);if (diff > max_diff)max_diff = diff;}for (int i = 0; i < n; i++)X[i] = X1[i];if (max_diff < e) // 满足精度要求退出循环break;}return k; // 返回迭代次数
}// 输入系数矩阵和向量
void input()
{int i, j;printf("请输入系数矩阵A:\n");for (i = 0; i < n; i++)for (j = 0; j < n; j++)scanf_s("%lf", &A[i][j]);printf("请输入向量B:\n");for (i = 0; i < n; i++)scanf_s("%lf", &B[i]);printf("请输入初始向量X:\n");for (i = 0; i < n; i++)scanf_s("%lf", &X[i]);
}// 打印方程组的近似解
void print()
{int i;printf("方程组的近似解:\n");for (i = 0; i < n; i++)printf("%lf\n", X[i]);
}int main()
{printf("请输入矩阵行数:\n");scanf_s("%d", &n);printf("\n");input();InitMatrix();int N =Jacobi();print();printf("迭代次数为:%d",N);return 0;
}

这篇关于【数值计算方法】雅可比解线性方程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1013743

相关文章

ES数值类型慢查询优化

现象 某个查询ES接口慢调用告警,如图,接口P999的耗时都在2500ms: 基本耗时都在查询ES阶段: 场景与ES设定 慢调用接口为输入多个条件分页查询,慢调用接口调用的ES索引为 express_order_info,该索引通过DTS(数据同步服务)聚合了 订单服务的一张MySQL表 和 分班服务的一张MySQL表 的相关数据: 一个subClazzNumber (用户查询必填

WPF文本绑定显示格式StringFormat设置-数值类型处理

绑定显示格式设置 在Textblock等文本控件中,我们经常要绑定一些数据类型,但是我们希望显示的时候能够按照我们想要的格式去显示,比如增加文本前缀,后面加单位,显示百分号等等,这种就需要对绑定格式进行处理 <TextBlock HorizontalAlignment="Left" Margin="119,42,0,0" TextWrapping="Wrap" Text="{Binding V

【考研408计算机组成原理】数值表示和运算之快速数值转换

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家 另外,利用了工作之余的一点点时间,整理了一套考研408的知识图谱, 我根据这一套知识图谱打造了这样一个408知识图谱问答系统 里面的每一个回

多分类问题中评价指标F1-Score 加权平均权重的计算方法

多分类问题中评价指标F1-Score 加权平均权重的计算方法     众所周知,F1分数(F1-score)是分类问题的一个衡量指标。在分类问题中,常常将F1-score作为评价分类结果好坏的指标。它是精确率和召回率的调和平均数,值域为[0,1]。 F 1 = 2 ∗ P ∗ R P + R F_1=2*\frac{P*R}{P+R} F1​=2∗P+RP∗R​     其中,P代表着准确率(

数值自乘(递归与非递归解)

如果m和n是正整数,那么m^n就是把m连乘n次,这是一个很没效率的方法。其实用分置+递归可以更有效地解决该问题! 首先来看看我最初写的程序吧~ int R_POWER(int m,int n) {     if(n==0)     return 1;     else if(n==1)     return m;     return R_POWER(m,n/2)*R_POWER(m,n-n/

redis从入门到进阶——数据类型、 操作、数值操作、发布订阅、消息队列、布隆过滤器、事务

文章目录 基础数据类型操作数值操作 进阶发布订阅消息队列布隆过滤器事务 基础 数据类型 string,set, hash, list, zset 操作 string符串类型: 保存一个字符串:set key value [EX seconds|PX milliseconds...] [NX|XX]EX:设置存活时间,秒为单位PX:设置存活时间,毫秒为单位NX:如果key

掌握BigDecimal:Java中的精确数值比较技巧与实战解析

引言 在Java编程中,处理精确数值计算对于金融、科学和电子商务等领域来说至关重要。但由于浮点数在计算机内部表示的局限性,直接使用基本数据类型如float和double进行数值计算往往会引入舍入误差,造成精度降低。为了进行精确的数值计算,Java提供了BigDecimal类,它使用任意精度的十进制数进行算术运算。本文将深入探讨BigDecimal在精确数值比较中的应用,并结合具体的行业实践和热

复活节的计算方法

复活节(Easter),是纪念耶稣基督复活的节日,在西方教会传统里,春分之后第一次满月之后的第一个星期日即为复活节。 下面是一个简单的计算复活节的算法,仅供参考! 1、设要求的那一年是Y年,从Y减去1900,其差记为N。 2、用19作除数去除N,余数记为A。 3、用4作除数去除N,不管余数,把商记为Q。 4、用19去除7A+1,把商记为B,不管余数。 5、用29去除11A+4-B,余数

acwing 5575. 改变数值 | c++题解及解释

acwing 5575. 改变数值 题目 代码及解释 #include <iostream>#include <cstring>#include <algorithm>#include <unordered_map>using namespace std;const int N=305;int a[N],b[N];unordered_map<int,int>f[N];

Python数据清洗(选择特征中数据类型为数值型的特征)

当我们拿到一个数据的时候,首先要看下它的大小是什么?数据类型有什么? import pandas as pdpath = "xxx.csv"data = pd.read_csv(path)print(data.shape)print(data.dtypes) 然后我们把这个数据的名字及对应的特征放到了一个单独的文件里面 pd.DataFrame(data.dtypes).to_cs