Error in function - C (СИ)
Формулировка задачи:
Если Progonka(...) в окремой функции - не работает. Если код из функции скопировать в main() все работает.
Код ->
#include <stdio.h> #include <stdlib.h> #include <math.h> void Progonka(int N,double **A, double* B , double* X); int main(int argc, char *argv[]) { int N = 4; //double A[N][N]; double** A = malloc(N * sizeof *A); for (int i = 0; i < N; i++) { A[i] = malloc(N * sizeof *A[i]); } // double B[N]; //double X[N]; double* B = malloc(N * sizeof *B); double* X = malloc(N * sizeof *X); A[0][0] = 1; A[0][1] = 2; A[1][0] = 1; A[1][1] = 10; A[1][2] = -5; A[2][1] = 1; A[2][2] = -5; A[2][3] = 2; A[3][2] = 1; A[3][3] = 4; B[0] = -5; B[1] = -9; B[2] = -20; B[3] = -27; puts("A matrix\n"); for(int i = 0;i < N;i++){ for(int j = 0; j < N;j++){ printf("%lf ",A[i][j]); } putchar('\n'); } Progonka(N, A, B, X); putchar('\n'); puts("X vector...."); for(int i = 0;i < N;i++) printf("%lf ", X[i]); for (int i = 0; i < N; i++) { free(A[i]); } free(A); free(B); free(X); return 0; } void Progonka(int N, double **A, double* B , double* X){ double Alp[N]; double Bet[N]; int i = 0; Alp[0] = -A[0][ 1] / A[0][0]; Bet[0] = B[0] / A[0][0]; for (i = 1; i < N; i++) { Alp[i] = -A[i][ i + 1] /(A[i][ i] + Alp[i - 1] * A[i][i - 1]) ; Bet[i] = (B[i] - A[i][i - 1] * Bet[i - 1]) / (A[i][ i] + Alp[i - 1] * A[i][i - 1]); } X[N] = (B[N] - A[N][ N - 1] * Bet[N - 1]) / (A[N][N] + Alp[N - 1] * A[N][N - 1]); for (i = N - 1; i >= 0; i--) { X[i] = Alp[i] * X[i + 1] + Bet[i]; } }
Решение задачи: «Error in function»
textual
Листинг программы
for (i = 1; i < N; i++) { Alp[i] = -A[i][ i + 1] /(A[i][ i] + Alp[i - 1] * A[i][i - 1]) ; Bet[i] = (B[i] - A[i][i - 1] * Bet[i - 1]) / (A[i][ i] + Alp[i - 1] * A[i][i - 1]); }
Объяснение кода листинга программы
- Проходим циклом по элементам массива от 1 до N-1
- Вычисляем значение Alp[i] по формуле: Alp[i] = -A[i][ i + 1] /(A[i][ i] + Alp[i - 1] * A[i][i - 1])
- Вычисляем значение Bet[i] по формуле: Bet[i] = (B[i] — A[i][i — 1] Bet[i — 1]) / (A[i][ i] + Alp[i — 1] A[i][i — 1])
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д