Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Вычисление многомерных интегралов

.PAS
Скачиваний:
13
Добавлен:
02.05.2014
Размер:
2 Кб
Скачать
Program Kursovaya;
Uses crt;
var
  x: real; {znachenie peremennoy funktsii}
  a, b, k: array [1..10] of real; {znachenie granits integrirovaniya}
  c2, st, z: integer;
  i, ii, j: integer; {indeksi elementov massivov}
  y: real; {znachenie funktsii}
  da, net: integer; {schetchiki popadaniy}
  sl1, sl2: real; {koordinati sluchaynoy tochki}
  max, pl: real;
  c: array [1..10,1..10] of integer;


{-----------------------------------------------------------------}

Begin
 clrscr;
 write('Vvedite mernost integrala:');
 readln(z);
 writeln;
 for i:=1 to z do
   begin
     writeln('Vvedite znacheniya ',i,'-y granitsi integrirovaniya');
     write('a',i,': ');
     readln(a[i]);
     k[i]:=a[i];
     write('b',i,': ');
     readln(b[i]);
     c2:=1;
   end;
   writeln;

 {-----Vvod-podintegralnoy-funktsii----------------------}
 clrscr;
 for i:=1 to z do
   begin
 write('Vvedite max stepen ',i,'-go mnogochlena: ');
 readln(st);
 writeln('Vvedite znacheniya koeffitsientov:');
 for j:=1 to st+1 do
   begin
     write('C',i,j-1,'=');
     readln(c[i][j]);
   end;
   writeln;
   end;

 {-----Vichislenie-maksimalnogo-nacheniya-funktsii-------}

 max:=0;
  for i:=1 to z do
   begin
 while a[i]<b[i] do
   begin
     y:=0;
     for j:=1 to st+1 do
       begin
         if a[i]=0 then
           a[i]:=0.01;
         y:=y+c[i][j]*exp(ln(a[i])*(j-1));
       end;
     if y>max then
       max:=y;
     a[i]:=a[i]+0.001;
   end;
   end;

 {-----Vichislenie integrala-----------------------------}

 da:=0;
 net:=0;
 randomize;
  for i:=1 to z do
   begin
 for j:=1 to 10000 do
   begin
     sl1:=random(c2*10000);
     sl1:=k[i]+sl1/10000;
     sl2:=random(round(max)*10000);
     sl2:=sl2/10000;
     y:=0;
     for ii:=1 to st+1 do
       begin
         y:=y+c[i][ii]*exp(ln(sl1)*(ii-1));
       end;
     if sl2<y then
       inc(da)
     else
       inc(net);
   end;
   end;
  pl:=1;
  for i:=1 to z do
   begin
     k[i]:=b[i]-k[i];
     pl:=pl*k[i];
   end;
 pl:=max*pl;
 y:=(da*pl)/10000;
 writeln;
 writeln('Iskomoe znachenie integrala: ',y:8:6);

{----------------------------------}

readln;
End.