Помогите переделать грамму на Pascal. Написать программу решения по методу Гаусса системы линейных уравнений
а11 х1+а1n xn=b1
. . . . .
аn1 x1+ ann xn=b n
Квадратная матрица [aij] ij=1,..,n и вектор b1,..,bn-исходные данные задачи (предпологается, что система совместна и имеет единственное решение) Применить программу для решения следующих систем:
#include <stdio.h>
int main(int argc, char* argv[]) {
const int n = 3;
double A[n][n] = {{10, 1, 1}, {2, 10, 1}, {2, 2, 10}};
double B[n] = {12, 13, 14};
double X[n] = {0};
printf("Linear system of equations:\n\n");
for(int i=0; i<n; i++) {
for(int j=0; j<n-1; j++)
printf("(%.2f) * x%d + ", A[i][j], j);
printf("(%.2f) * x%d = %.2f\n", A[i][n-1], n-1, B[i]);
}
for(int i=0; i<n-1; i++) {
for(int j=i+1; j<n; j++) {
double multiplier = A[j][i] / A[i][i];
for(int k=0; k<n; k++)
A[j][k] -= A[i][k] * multiplier;
B[j] -= B[i] * multiplier;
}
}
for(int i=n-1; i>=0; i--) {
X[i] = B[i];
for(int j=n-1; j>i; j--)
X[i] -= A[i][j] * X[j];
X[i] /= A[i][i];
}
printf("\nResult vector X:\n");
for(int i=0; i<n; i++)
printf("X[%d] = %.2f\n", i, X[i]);
return 0;
}
Accer
Никогда не слышал о конверторах программ с одного языка программирования на другой? С Си на Паскаль (по крайней мере такие простые программы) они переводят "на ура" - остается только немного подкорректировать результат:
const
n = 3;
A: array[0 .. pred(n), 0 .. pred(n)] of double = (
(10, 1, 1), (2, 10, 1), (2, 2, 10)
);
B: array[0 .. pred(n)] of double = (
12, 13, 14
);
var
X: array[0 .. pred(n)] of double;
i, j, k: integer;
multiplier: double;
begin
writeln('Linear system of equations:');
writeln;
for i := 0 to pred(n) do begin
for j := 0 to pred(n-1) do
write('(', A[i][j]:0:2, ') * x', j, ' + ');
writeln('(', A[i][n-1]:0:2, ') * x', pred(n), ' = ', B[i]:0:2);
end;
for i := 0 to pred(n-1) do begin
for j := i+1 to pred(n) do begin
multiplier := A[j][i] / A[i][i];
for k := 0 to pred(n) do
A[j][k] := A[j][k] - A[i][k] * multiplier;
B[j] := B[j] - B[i] * multiplier;
end;
end;
for i := n-1 downto 0 do begin
X[i] := B[i];
for j := n-1 downto succ(i) do
X[i] := X[i] - A[i][j] * X[j];
X[i] := X[i] / A[i][i];
end;
writeln;
writeln('Result vector X:');
for i := 0 to pred(n) do begin
writeln('X[', i, '] = ', X[i]:0:2);
end;
end.
Спасибо большое! А где можно взять эту программу??? Подскажите?
У Гугла спроси, называется C2PAS32.