Cześć, mam w kodzie taki błąd incompatible types in assignment of ‘double’ to ‘double [1000]’ który pojawia się przy przekazywaniu tablicy do funkcji.
Kod:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <chrono>
#define N 1000
double thomasAlgorithm(double A[N][N], double G[N])
{
double b, y, B[N], Y[N], U[N];
b = -1.0 * (A[1][0] / A[0][0]);
B[0] = b;
y = G[0] / A[0][0];
Y[0] = y;
for (int i = 1; i < N - 1; i++)
{
b = -1.0 * ((A[2][i]) / ((A[0][i]) * B[i - 1] + A[1][i]));
B[i] = b;
y = (G[i] - A[0][i] * Y[i - 1]) / (A[0][i] * B[i - 1] + A[1][i]);
Y[i] = y;
}
B[N - 1] = 0;
Y[N - 1] = 0;
U[N - 1] = Y[N - 1];
for (int j = N - 2; j > 0; --j)
{
U[j] = B[j] * U[j + 1] + Y[j];
}
return *U;
}
int main()
{
double A[3][N];
double X[N], D[N]; // wektor 'x', wektor 'd'
double h = 2.0 / N; // wzor na h
/* WPROWADZENIE WARTOŚCI DO MACIERZY Ax=d */
for (int n = 0; n < N; n++)
{
A[0][n] = 1.0;
A[1][n] = 4.0;
A[2][n] = 1.0;
}
for (int n = 0; n < N - 1; n++)
{
D[n] = (6.0 / h * h) * (f(-1.0 + n * h) - 2 * (f(-1.0 + (n + 1) * h)) + f(-1.0 + (n + 2.0) * h));
}
/* WPROWADZENIE WARTOŚCI DO MACIERZY Bu=v*/
double B[3][N];
double U[N], V[N]; // wektor 'u', wektor 'v'
double y=1;
for(int p=0;p<N;p++)
{
B[0][p]=0;
B[1][p]=0;
B[2][p]=0;
U[p]=0;
V[p]=0;
}
B[0][0]=A[1][0]-y;//wyjątek
B[1][0]=A[2][0];
for (int n = 1; n < N-1; n++)
{
B[0][n] = A[0][n];
B[1][n] = A[1][n];
B[2][n] = A[2][n];
}
B[0][N]=A[0][N];//wyjątek
B[1][N]=A[1][N]-((A[2][N]*A[0][0])/y);
U[0]=y;
U[N]=A[2][N];
V[0]=1;
V[N]=A[0][0]/y;
double Y[N], Q[N];
Y=thomasAlgorithm(B, D);//error: incompatible types in assignment of ‘double’ to ‘double [1000]’
Q=thomasAlgorithm(B, U);//error: incompatible types in assignment of ‘double’ to ‘double [1000]’
}
Może ktoś mi podpowiedzieć co robię źle i co zmienić żeby całość działała poprawnie ?