Hiện nay em cóp nhặt được 1 đoạn code giải hệ phương trình theo phương pháp Gauss bằng lập trình C. Nhưng em không biết về lập trình C nên em đọc không hiểu gì cả, em đưa lên muốn nhờ các anh chị chuyển thể qua VB hoặc VBA và nếu được thì chú thích thêm các đoạn trong code. Em xin cảm ơn nhiều nhiều..................!!!!!!!
Đoạn code viết bằng C như sau:
[FONT="]
#include <stdio.h>
#include <math.h>
#define MAX 10
double A[MAX][MAX], B[MAX][MAX], X[MAX][MAX];
void gauss_jordan(int n, int p)
{
int i=0, j, done=0, m, k;
double max, c;
printf("\nTinh nghiem cua he phuong trinh");
while (!done)
{
if (A == 0)
{
max = 0;
m = i;
for (k=i+1; k<n; k++)
if (max < fabs(A[k]))
{
m = k;
max = fabs(A[k]);
}
if (m != i)
{
for (j=i; j<n; j++)
{
c = A[j];
A[j] = A[m][j];
A[m][j] = c;
}
for (j=0; j<p; j++)
{
c = B[j];
B[j] = B[m][j];
B[m][j] = c;
}
}
if (m == i)
done = 1;
}
if (A != 0)
{
c = 1/A;
for (j=i; j<n; j++)
A[j] = A[j] * c;
for (j=0; j<p; j++)
B[j] = B[j] * c;
for (k=0; k<n; k++)
if (k != i)
{
c= A[k];
for (j=i; j<n; j++)
A[k][j] = A[k][j] - A[j]*c;
for (j=0; j<p; j++)
B[k][j] = B[k][j] - B[j] * c;
}
}
printf("\nLan khu hang %d", i);
for (k=0; k<n; k++)
{
printf("\n");
for (j=0; j<n; j++)
printf("%10.5lf", A[k][j]);
for (j=0; j<p; j++)
printf(" = %10.5lf", B[k][j]);
}
i++;
if (i>=n)
done = 1;
}
if (i >= n)
for (j=0; j<n; j++)
for (k=0; k<p; k++)
X[j][k] = B[j][k];
}
void in_A(int n)
{
int i, j;
printf("\nMa tran A :");
for (i=0; i<n; i++)
{
printf("\n");
for (j=0; j<n; j++)
printf("%10.5lf", A[j]);
}
}
void in_B(int n, int p)
{
int i, j;
printf("\nMa tran B :\n");
for (i=0; i<n; i++)
{
printf("\n");
for (j=0; j<p; j++)
printf("%10.5lf", B[j]);
}
}
void in_X(int n, int p)
{
int i, j;
printf("\nMa tran nghiem X :\n");
for (i=0; i<n; i++)
{
printf("\n");
for (j=0; j<p; j++)
printf("%10.5lf", X[j]);
}
}
void main()
{
int n, i, j, p;
printf("Giai he phuong trinh tuyen tinh AX = B.");
printf("\nbang phuong phap khu GAUSS.");
printf("\nCho biet cap ma tran : ");
scanf("%d%*c", &n);
printf("\nCho biet cap ma tran B : ");
scanf("%d%*c", &p);
printf("\nNhap ma tran A :\n");
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
printf("A[%d][%d] = ", i, j);
scanf("%lf", &A[j]);
}
printf("\nNhap ma tran B :\n");
for (i=0; i<n; i++)
for (j=0; j<p; j++)
{
printf("B[%d][%d] = ", i, j);
scanf("%lf", &B[j]);
}
in_A(n);
in_B(n, p);
gauss_jordan(n, p);
in_X(n, p);
getch();
}[/FONT]
Đoạn code viết bằng C như sau:
[FONT="]
#include <stdio.h>
#include <math.h>
#define MAX 10
double A[MAX][MAX], B[MAX][MAX], X[MAX][MAX];
void gauss_jordan(int n, int p)
{
int i=0, j, done=0, m, k;
double max, c;
printf("\nTinh nghiem cua he phuong trinh");
while (!done)
{
if (A == 0)
{
max = 0;
m = i;
for (k=i+1; k<n; k++)
if (max < fabs(A[k]))
{
m = k;
max = fabs(A[k]);
}
if (m != i)
{
for (j=i; j<n; j++)
{
c = A[j];
A[j] = A[m][j];
A[m][j] = c;
}
for (j=0; j<p; j++)
{
c = B[j];
B[j] = B[m][j];
B[m][j] = c;
}
}
if (m == i)
done = 1;
}
if (A != 0)
{
c = 1/A;
for (j=i; j<n; j++)
A[j] = A[j] * c;
for (j=0; j<p; j++)
B[j] = B[j] * c;
for (k=0; k<n; k++)
if (k != i)
{
c= A[k];
for (j=i; j<n; j++)
A[k][j] = A[k][j] - A[j]*c;
for (j=0; j<p; j++)
B[k][j] = B[k][j] - B[j] * c;
}
}
printf("\nLan khu hang %d", i);
for (k=0; k<n; k++)
{
printf("\n");
for (j=0; j<n; j++)
printf("%10.5lf", A[k][j]);
for (j=0; j<p; j++)
printf(" = %10.5lf", B[k][j]);
}
i++;
if (i>=n)
done = 1;
}
if (i >= n)
for (j=0; j<n; j++)
for (k=0; k<p; k++)
X[j][k] = B[j][k];
}
void in_A(int n)
{
int i, j;
printf("\nMa tran A :");
for (i=0; i<n; i++)
{
printf("\n");
for (j=0; j<n; j++)
printf("%10.5lf", A[j]);
}
}
void in_B(int n, int p)
{
int i, j;
printf("\nMa tran B :\n");
for (i=0; i<n; i++)
{
printf("\n");
for (j=0; j<p; j++)
printf("%10.5lf", B[j]);
}
}
void in_X(int n, int p)
{
int i, j;
printf("\nMa tran nghiem X :\n");
for (i=0; i<n; i++)
{
printf("\n");
for (j=0; j<p; j++)
printf("%10.5lf", X[j]);
}
}
void main()
{
int n, i, j, p;
printf("Giai he phuong trinh tuyen tinh AX = B.");
printf("\nbang phuong phap khu GAUSS.");
printf("\nCho biet cap ma tran : ");
scanf("%d%*c", &n);
printf("\nCho biet cap ma tran B : ");
scanf("%d%*c", &p);
printf("\nNhap ma tran A :\n");
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
printf("A[%d][%d] = ", i, j);
scanf("%lf", &A[j]);
}
printf("\nNhap ma tran B :\n");
for (i=0; i<n; i++)
for (j=0; j<p; j++)
{
printf("B[%d][%d] = ", i, j);
scanf("%lf", &B[j]);
}
in_A(n);
in_B(n, p);
gauss_jordan(n, p);
in_X(n, p);
getch();
}[/FONT]