作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想更正此代码以计算 nxn 矩阵的行列式。下面的代码是我到目前为止所做的。但它给出了最多 3x3 矩阵的正确答案,大于它给出了错误的值。我还分别检查了从主矩阵形成次要矩阵的部分,它工作得很好。我仍然不知道为什么它会为 4x4 和更大的矩阵返回错误的值?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
int dete(int, int (*)[]);
int main()
{
int a[3][3]=
{
1,4,3,
2,1,5,
3,2,1
};
int b[4][4]=
{
5,3,-2,-6,
1,2,7,4,
-10,3,5,-3,
-4,2,6,1
};
int ans1,ans2;
ans1=dete(3,a);//ans1 = 46 and this is correct
ans2=dete(4,b);//ans2 = 174 but it is giving 5169 which is wrong
printf("%d, %d", ans1, ans2);
getch();
}
int dete(int row, int arr[][row])
{
int col_main_mark,col_main,row_main,col_minor,cof,x,y;
int minor[row-1][row-1];
static int det=0;
if(row==2)//condition to stop recursion
{
det = arr[0][0] * arr[1][1] - arr[0][1] * arr[1][0];
return det;
}
for(col_main_mark=0; col_main_mark<row; col_main_mark++)//for specific col value of main matrix (arr[row][row])
{
cof=arr[0][col_main_mark];
//following two loop will make the minor matrix (minor[row-1][row-1]) from the main marix
for(row_main=0; row_main<row; row_main++)
{
for(col_main=0,col_minor=0; col_main<row; col_main++)
{
if(col_main==col_main_mark)
continue;
minor[row_main][col_minor]=arr[row_main+1][col_main]; col_minor++;
}
}
det = det + cof * pow(-1,col_main_mark) * dete(row-1, minor);
}
return det;
}
最佳答案
解决方案是移除static
。变量 det
只会在函数第一次运行时为零。下一次它将具有与上次调用结束时相同的值。
您可以尝试连续使用两个或多个 3x3 矩阵。只有第一次调用 dete
才会产生正确的结果。
关于c - c编程中具有函数递归的nxn矩阵的行列式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58883662/
我试图找到这 3 个函数的 Wronskian 行列式,但代码有“TypeError: No loop matching the specified signature and casting was
我需要编写一个在编译时计算行列式的 constexpr 函数。最明显的解决方案是使用拉普拉斯展开。支持 C++14。 #include #include constexpr int get_cof
是否有任何类似 A * A-1 = I 的数学性质可用于测试类似格式的单元测试中行列式的计算? 最佳答案 手动计算一个(或多个)已知数组的行列式,并将您的结果与该数字进行比较。 尝试不同大小、排列方式
我有一个大的 numpy 数组 arr,形状为 (N, D, M, D) 其中 D 是两个或三。该数组可以被认为是 (D,D) 矩阵 block ,这些矩阵在 N 和 M 维度中被阻塞在一起。我想取这
我是一名优秀的程序员,十分优秀!