Народ у меня расчетно-графическая робота, решение системы линейных уравнени методом Монте-Карло!
Может кто знает или у кого-то есть код решения этой задачи, принимается код на С++!
Заранее благодарен!
uses crt;
function SGN(a: real): integer;
begin
if a > 0 then
SGN := 1;
if a = 0 then
SGN := 0;
if a < 0 then
SGN := -1;
end;
var
a: array[1..20, 1..21] of real;
b: array[1..20, 1..20] of real;
w: array[1..20] of real;
n, d, m, t, s: byte;
i, j: word;
x, c, v, y: real;
label
label1, label2, label3;
begin
v := 0;
writeln('vvedite poradok system');
readln(n);
writeln('vvedite coeffs');
for I := 1 to N do
begin
readln(A[I, I]);
B[I, I] := ABS(A[I, I]);
for J := 2 to N do
begin
readln(A[I, J]);
B[I, J] := B[I, J - I] + ABS(A[I, J]);
end;
readln(A[I, N + 1]);
end;
readln;
for I := 1 to N do
W[i] := A[I, N + 1] / (1 - B[I, N]);
writeln('vvedite nomer uravnenia');
readln(d, m);
T := 1;
Y := 0;
label2:
S := d;
Y := 1;
if T > M then
goto label1;
label3:
C := random(1);
for J := N downto 1 do
begin
if C <= B[S, J] then
continue;
if J = N then
begin
T := T + 1;
Y := Y + V * W[S];
goto label2;
end
else
begin
V := V * SGN(A[S, J + 1]);
S := J + 1;
goto label3;
end;
end;
V := V * SGN(A[S, 1]);
S := 1;
goto label2;
label1:
X := Y / M;
writeln('coren ', d, ' - go uravnenia X=', X);
readln;
end.