0
Gauss Seidelメソッドを使用してA * x = bを解く関数を作成しています。私は、関数を実行すると、私は次のエラーメッセージが出ます:Gauss-Seidel関数の型が無効です
main.cppに:40:28エラー:無効なタイプ '[INT] double' の配列の添字のため
合計[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;
}
これは何を意味するのでしょうか?
'A'配列は1次元または2次元ですか? –
これをC++とタグ付けしたので、配列ではなく 'std :: vector'を使うべきです。 –
Aは2D配列です。 – STHB