gpt4 book ai didi

无法获得行列式的准确结果

转载 作者:行者123 更新时间:2023-11-30 17:43:31 25 4
gpt4 key购买 nike

首先,我是 c.i 的新手,尝试使用此代码获取 nxn 矩阵的行列式

double Determinant(double *A, int N){
int i;
int j;
int k;
double y[100][100];
double x[100][100];
int sign = 1;
double result = 0;
int arrayRow;
int arrayColumn;

for(i = 0 ; i < N ; i++){
for(j = 0; j < N ;j++){
x[i][j] = A[(N*i)+j];}}

if(N == 2){
result =x[0][0]*x[1][1] - x[0][1]*x[1][0];
}
else
{
for(i = 0; i < N ; i++){
arrayRow = 0;
arrayColumn = 0;
for(j = 1 ;j < N; j++){
for( k = 0; k < N ; k++){
if(k == i){
continue;}
y[arrayRow][arrayColumn] =x[j][k];
arrayColumn++;
}
arrayColumn = 0;
arrayRow++;
}



result += sign*x[0][i]*Determinant(*y,N-1);
sign = -sign;}
}
printf("%d",result);
return result;
} /* end-Determinant */

但它显示一些非常意外的数字,例如 -85899... 。这是测试代码,行列式没有返回正确的结果。

int main(){
double A[] = {5, 2, 4, 2, 4, 6, 1, 2, 8};
int a ;

if(Determinant(A, 3) == 80){
a = Determinant(A,3);
printf("%d",a);};
getchar();
} /* end-main */

最佳答案

printf 中的格式说明符错误。

尝试:printf("%f",a);printf("%f",result);

请参阅此处的 printf 格式说明符 http://www.cplusplus.com/reference/cstdio/printf/ (%d 表示整数而不是 double )。

关于无法获得行列式的准确结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20231176/

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