Как предложено pmg
: «Вам нужно сбросить элементы Tx на ноль в начале (или конце) каждого il oop». Для каждой итерации i вам необходимо повторно инициализировать Tx. Если вы go превышаете 2 итерации (fori = 0; i <2; i ++), формула начинает давать неверный результат, поскольку, начиная со второй итерации, Tx по-прежнему не равно {0, 0, 0} </p>
#include <stdio.h>
int main(void) {
double T[3][3] = {{0.0,-0.5,-0.75},
{0.6,0.0,0.4},
{0.25,-0.375,0.0}};
double C[3] = {2.0,2.8,3.375};
double x_n[3] = {0.0,0.0,0.0};
double x_n_plus_1[3] = {0.0,0.0,0.0};
int i, row, col, ctr;
for(i=0;i<3;i++) {
double Tx[3] = {0.0, 0.0, 0.0};
for(row=0;row<3;row++) {
for(col=0;col<3;col++){
Tx[row] += T[row][col] * x_n[col]; //Tx_n = T*x_n
}
}
for(ctr=0;ctr<3;ctr++) {
x_n_plus_1[ctr] = Tx[ctr] + C[ctr];//x_n+1 = Tx_n + C
}
for(ctr=0;ctr<3;ctr++) {
x_n[ctr] = x_n_plus_1[ctr];
}
}
for(ctr=0;ctr<3;ctr++) {
printf("%lf\n",x_n[ctr]);
}
return 0;
}