gpt4 book ai didi

C : recursively defined program to calculate determinant of a matrix

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:57 26 4
gpt4 key购买 nike

我不明白为什么这个程序会产生错误的矩阵行列式值。该程序使用对函数 func() 的递归调用,该函数将参数矩阵转换为其次要矩阵,然后最终将其简化为单个元素。请帮助,此代码中的错误是什么..??

#include<stdio.h>
#include<math.h>
void display_(int arr[][4])
{
int i,j;
putchar('\n');
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
printf("%d\t",arr[i][j]);
printf("\n");
}
}
int func(int arr[][4],int i,int j,int order)
{
if(order==1)
return arr[0][0];
return(pow(-1,i+j)*arr[i][j]*func(arr,i+1,j+1,order-1));
}
int main()
{
int i,j,matrix[4][4];
printf("\nEnter the elements to the matrix : ");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&matrix[i][j]);
display_(matrix);
printf("\nDeterminant : %d",func(matrix,0,0,4));
}

最佳答案

这不是正确的公式。参见 here .

你想实现拉普拉斯公式吗?在这种情况下,您需要对所有行求和,然后递归计算未成年人。这是通过删除第 i 行和第 j 列从 A 得出的矩阵的行列式。这就是递归使用函数的地方。

或者你想实现莱布尼茨公式?在这种情况下,您需要求和并迭代所有可能的排列,然后迭代行数(或列数)的乘积。但是你不需要在那里递归。

请注意,这里有很多关于 SO 的类似问题,例如herehere .

关于C : recursively defined program to calculate determinant of a matrix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19425145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com