提示:仅供参考
前言
用于C语言学习交流,本代码使用vs2022实现,scanf函数请自行修改。
比较基础的一道题目
提示:以下是本篇文章正文内容,下面案例可供参考
一、问题描述
求解一般线性方程组Ax = b时, 如果A矩阵是严格对角占优矩阵,那么我们可以使用雅可比方法迭代求出他的最终解. 输入一个n * n的矩阵, 试着判断这个矩阵是不是严格对角占优矩阵。
满足以上条件的矩阵n * n矩阵被称为严格对角占优矩阵:
即对于该矩阵主对角线上的任意一个元素, 都满足其绝对值严格大于与它同行的其他元素绝对值之和。
输入格式为第一行输入n, 表示矩阵是n * n的,
接下来n行每行输入n个数字, 用空格隔开, 第i行第j个数字表示aij。
示例:
输入:
3
1 2 3
4 5 6
7 8 9
输出:NO
输入:
4
4 1 1 1
2 6 1 2
3 7 15 -2
-1 -2 4 -19
输出:YES
二、参考代码
代码如下:
#include<stdio.h>
#include<stdlib.h>
#define Q 15
int main()
{
int n, m = 0;
printf("请输入矩阵的阶数:");
scanf_s("%d", &n); //由用户自己输入函数的阶数
int a[Q][Q];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
scanf_s("%d", &a[i][j]); //输入矩阵的数据存放到数组中
if (a[i][j] < 0) a[i][j] = -a[i][j]; //如果数据小于0,则取绝对值
}
for (int i = 0; i < n; i++)
{
for (int j=0; j < n; j++)
{
if (i == j) continue; //将第i行除去对角线上的元素的和加到m中
m = m + a[i][j];
}
if (a[i][i] < m) //对第i行进行判断,如果有不符合条件的行即可退出判断
{
printf("NO");
break;
}
else if (i == n-1) //循环结束判断
printf("YES");
m = 0;
}
}
2.测试
测试样例(示例):这里只给出部分测试样例,具体请自行调试。文章来源:https://www.toymoban.com/news/detail-504407.html
文章来源地址https://www.toymoban.com/news/detail-504407.html
到了这里,关于判断N阶矩阵是否为严格对角占优矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!