Function Intg(p, b: real; n: integer; eps: real): real; {Метод прямоугольников, рекурсия} var a, x, h, s: real; i: integer; begin a := 0; h := (b - a) / n; x := a; s := 0; for i := 1 to n do begin s := s + sin(x); x := x + h; end; if abs(s * h - p) > eps then Intg := Intg(s * h, b, 2 * n, eps) else Intg := s * h; end;
var b, eps: real;
begin write('Задайте верхний предел интегрирования и точность: '); Readln(b, eps); writeln('Значение интеграла: ', Intg(0, b, 2, eps):0:7); end.
Тестовое решение:
Задайте верхний предел интегрирования и точность: 2 0.000001 Значение интеграла: 1.4161460
Точное значение интеграла равно 1-cos(2) ≈1.416146836, т.е. заданная точность обеспечивается.
Рекомендуется использовать формулу мальтуса, изменения числа рыб n= k*n-q*n*n если за начальное количество рыб принять n0,то через год рыб в пруду будет n1=n0+k*n0-q*n0*n0,через два года n2=n1+k*n1-q*n1*n1 в таблице excel в ячейку a1 введите значение к=1,в ячейку b1 значение q=0,01,в ячейку с1 значение n0=100, в ячейку в2 формулу =c1+a1*c1-b1*c1*c1 (это количество рыб за 1 год) , в ячейку в3 формулу =b2+$a$1*b2-$b$1*b2*b2(количество рыб за 2 год) , скопируйте формулу с ячейки в3 до ячейки в11. изменяйте значение ячейки а1, например, поставьте значение 1,908, и получите 2000 рыб через 10 лет.
// Внимание! Если программа не работает, обновите версию!
begin
Range(10,75).Println
end.
Результат
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75