gpt4 book ai didi

c++ - Gauss-Seidel 函数中的类型无效

转载 作者:行者123 更新时间:2023-11-28 05:30:20 25 4
gpt4 key购买 nike

我正在制作一个将使用高斯赛德尔法求解 A*x=b 的函数。当我运行该函数时,我收到以下错误消息:

main.cpp:28:40: 错误:数组下标的类型 'double[int]' 无效

总和[i] = ( 1/A[i][j] ) * x[j] ) ;

--------------------^(指向这里的小箭头)

main.cpp:31:32: 错误:数组下标的无效类型 'double[int]'

x[i] = ( 1/A[i][i] ) * ( b[i] - sum[i] ) ;

--------------------^(指向这里的小箭头)

#include <cmath>
#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;

void Gauss(int n, double * A, double * b, double * x)
{
double sum[20];

for (int i = 0 ; i < 20 ; i++)
{
sum[i] = 0;
}


for (int iter = 0 ; iter < n ; iter++)
{

for ( int i = 0 ; i < 20 ; i++ )
{

for ( int j = 0; j < 20 ; j++ )
{
if ( i != j )
sum[i] = ( 1/A[i][j] ) * x[j] ) ;
}

x[i] = ( 1 / A[i][i] ) * ( b[i] - sum[i] ) ;
}

}

return;
}


int main()
{
//defining matrix A
double A[20][20];
//defining vectors x and b
double x[20];
double b[20];
int i;

//for Matrix A

for (i = 0 ; i<20 ; ++i)
{
A[i][i]= 2.0;
A[i][i+1] = -1.0;
A[i+1][i] = -1.0;
}

//for vector x
for ( i = 0 ; i < 20 ; ++i)
{
x[i]=0;
}

//for vector b
for ( i = 0 ; i < 20 ; i++)
{
if (i == 1 || i == 19)
b[i]=1.0;
else
b[i]=0;
}


return 0;
}

这是什么意思?

最佳答案

您尝试将二维数组传递给采用double* 的函数,但二维数组不会衰减 为指针(甚至不是指向指针的指针)。正确的方法是将 double (*A) [20] 作为参数,即 pointer-to-array-20-of-doubles。

关于c++ - Gauss-Seidel 函数中的类型无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39694143/

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