#include #include #include #include #include #define epsilon 0.000001 #define n 3 #define debug using namespace std; long double przedzialy[3][3],J[3][3], F[3], F_transponowane[3], J_transponowane[3][3], X[3], J_F[3], X_nowe[3]; //___________________funkcje jakobianu:__________________________ long double Jacobian_x0(long double y, long double z) { return (y*y*y*y + z*z); } long double Jacobian_x1(long double x) { return (1.0); } long double Jacobian_x2(long double x) { return (0.0); } long double Jacobian_y0(long double x,long double y) { return (4*x*y*y*y); } long double Jacobian_y1(long double y) { if(y==-4.0) { cout<<"Dzielenie przez 0! -1/z+5. STOP"<= 0; --k) Temp[i][k] /= Temp[i][i]; for (j = 0; j < n; ++j) { wsp_1 = -Temp[j][i]; for (k = i; k < n+n; ++k) if (j != i) Temp[j][k] += wsp_1 * Temp[i][k]; } } // przepisanie odwroconej macierzy do wejsciowej tablicy for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) { wynik[i][j] = Temp[i][n+j]; } } return 1; } //______________________________koniec odwracania macierzy__________________________________ long double norma_1(long double X[n][n]) // sumowanie wyrazow w kolumnach { long double max_norma=0; long double temp; temp = 0.0; for (int i=0; imax_norma) max_norma = temp; temp=0; } return max_norma; // zwroc max. sume wyrazow } long double norma_1_J_F(long double X[n]) // sumowanie wyrazow w kolumnach { long double max_norma=0; long double temp; temp = 0.0; for (int i=0; imax_norma) max_norma = temp; temp=0; } return max_norma; // zwroc max. sume wyrazow } void wypelnij_F(long double X[n]) { F[0]=funkcja_0(X[0],X[1],X[2]); F[1]=funkcja_1(X[0],X[1],X[2]); F[2]=funkcja_2(X[0],X[1],X[2]); } void wypelnij_J(long double X[n]) { J[0][0]=Jacobian_x0(X[1],X[2]); J[0][1]=Jacobian_y0(X[0],X[2]); J[0][2]=Jacobian_z0(X[2],X[0]); J[1][0]=1.0;//Jacobian_x1(X[0]); J[1][1]=Jacobian_y1(X[1]); J[1][2]=Jacobian_z1(X[2]); J[2][0]=0.0;//Jacobian_x2(X[0]); J[2][1]=Jacobian_y2(X[1]); J[2][2]=-1.0;//Jacobian_z2(X[2]); } void mnozenie_J_F(void) { for (int i=0; i<3; i++) { for (int j=0; j<3; j++) { for (int k=0; k<3; k++) { J_F[i]+=J[i][k]*F[k]; } } } } void pomnozMacierz33(long double A[n][n], long double B[n][n],long double Wyn[n][n]) { //Wyn = A*B Macierze 3x3 * 3x3 int i,j,k; for(i=0;imax)max = roznica[i]; printf("\n\n|X(k)-X(k+1)|: "); cout<< max << "\n\n"; for(i=0;i