السلام عليكم اخواني
لدي مشكلة و اتمنى منكم المساعدة
اريد اعمل برنامج يستخدم jacobi method to solve linear system
انا عملته و شغال بس اريد احد يساعدني كيف اخلي البرنامج يقرأ المعادلات من ملف txt
void getInput( int numUnKnowns, double** mat )
{
int i, j;
printf
(
"\nEnter values for the specified row and column below ...\n"
"(The last column is the value for the RHS of the equation.)\n"
);
for( i = 0 ; i < numUnKnowns ; i++ )
{
mat = (double*) malloc( (numUnKnowns+1)*sizeof(double) );
puts("");
for( j = 0 ; j < numUnKnowns+1 ; j++ )
{
printf("matrix[%d][%d] : ", i, j);
if( scanf("%lf", &mat[j]) != 1 )
{
--j;
puts("Bad entry ... try again with a 'real' number.");
}
while( getchar() != '\n' ) ; /* flush stdin ... */
}
}
printf("\nThe matrix entered:\n\n");
for( i = 0 ; i < numUnKnowns ; i++ )
{
for( j = 0 ; j < numUnKnowns+1 ; j++ ) printf("%+9f ", mat[j]);
puts("");
}
printf("\nPress 'Enter' to start iteration ... ");
getchar();
}
/* Check if the matrix entered is strictly diagonally dominant */
int checkIfDD( int numUnKnowns, double** mat )
{
int m, n, dd = 0;
double* chkdd;
double* sumdd = (double*) malloc( numUnKnowns*sizeof(double) );
chkdd = (double*) malloc( numUnKnowns*sizeof(double) );
for( m = 0 ; m < numUnKnowns ; m++ )
chkdd[m] = sumdd[m] = 0; /* all set to zero ... */
printf("\nChecking if the matrix is (strictly) diagonally dominant...");
for( m = 0 ; m < numUnKnowns ; m++ )
{
for( n = 0 ; n < numUnKnowns ; n++ )
sumdd[m] += fabs(mat[m][n] );
sumdd[m] -= fabs(mat[m][m]);
chkdd[m] = fabs(mat[m][m]);
if(chkdd[m] > sumdd[m])
{
printf("\n%f > %f",chkdd[m],sumdd[m]);
dd++;
}
else printf("\n%f !> %f",chkdd[m],sumdd[m]);
}
if(dd == numUnKnowns)
{
printf
(
"\nYES ..."
"\nThe matrix is (strictly) diagonally dominant."
"\nPress 'Enter' to continue with 'Jacobi Iterative Method'...\n"
);
getchar();
}
else
{
printf
(
"\nNO ..."
"\nThe matrix is NOT (strictly) diagonally dominant ... so STOP!"
"\n(But ... consider exchanging rows in the matrix "
"and then to try again.)"
"\n\nPress 'Enter' to continue ... "
);
getchar();
free( sumdd );
free( chkdd );
return 0; /* false */
}
free( sumdd );
free( chkdd );
return 1; /* true */
}مثال ان الملف يحتوي على معادلات
4x-2y-1z=4
2x+9y+z=3
x-3y-5y=9

