Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практикум ИНФОРМАТИКА 2 семестр.pdf
Скачиваний:
14
Добавлен:
02.06.2015
Размер:
986.78 Кб
Скачать

34

2.Сформировать массив из 15 элементов, разность между элементами которого случайная величина, меньшая А=10 и переставить в начало все элементы меньшие В=5.

3.Сформировать массив из 20 элементов и удалить все отрицательные эле-

менты.

4.Сформировать массив случайных чисел из 20 элементов меньших В=100

иотсортировать в порядке возрастания.

5.Сформировать массив из 10 элементов, и переставить в начало все положительные элементы.

6.Сформировать массив из 30 случайных элементов, и переставить в начало все элементы меньшие В=45.

7.Сформировать массив из 15 элементов, разность между элементами которого меньше А=35 и переставить в начало все элементы меньшие В=30.

8.Организовать ввод из файла массива20 вещественных чисел и удалить из него все элементы большие В=25.

9.Организовать ввод из файла массива30 вещественных чисел и удалить из него всех элементы меньшие В=-5.

10.Организовать ввод из файла массива10 целых чисел и удалить из него все элементы большие В=15.

11.Организовать ввод из файла массива18 вещественных чисел и удалить из него все элементы большие В=-10.

12.Организовать ввод из файла массива15 целых чисел и удалить из него все элементы большие В=-15.

ЗАДАНИЕ 8 Вычисление определенного интеграла

Цель задания

1.Получение навыков в написании процедур, имеющих в заголовке параметрыфункции.

2.Знакомство с алгоритмами численных методов интегрирования.

Постановка задачи

Задана функция. Требуется найти с точностью до10-4 определенный интеграл в заданных пределах тремя методами: прямоугольников, трапеций и по формуле Симпсона.

Содержание отчета

1.Постановка задачи.

2.Описание численных методов интегрирования.

3.Текст программы и результаты ее выполнения.

Методические указания

Вычисление интеграла каждым из методов оформить процедурой с параметромфункцией, а вычисление значений подынтегральной функции– функцией с директивой дальнего вызова.

35

Пример программы, которая вычисляет интеграл от функции y = 3- x +1 sin( x ×p / 3 ) ;

для вводимых с клавиатуры пределов интегрирования: program Opr_int;

uses Crt; type

Ft=function(X:real):real; {$F+}

var

H,E,A,B,S: real;

function Func1(X:real):real; begin

Func1:=exp((-X+1)*ln(3))*Sin(X*3.14/3); end;

procedure Int(A,B:real;Func:Ft); {Метод прямоугольников} label 1;

const N:integer=4;

var I:integer; S1,X: real; begin

for I:=1 to 10 do begin

S1:=0.; H:=(B-A)/N; X:=A+H/2.; while (X<B) do begin

S1:=S1+H*Func(X);

X:=X+H;

end;

N:=N*2;

S:=0.; H:=(B-A)/N; X:=A+H/2.; while (X<B) do begin

S:=S+H*Func(X);

X:=X+H;

end;

Writeln(S:10:5,N:6); if (abs(S1-S))<E then goto 1;

end;

36

Writeln('Требуемая точность не достигнута при числе шагов равном ', N);

1:

end;

procedure Int1(A,B:real;Func:Ft); {Метод трапеций } label 1;

const N:integer=4;

var J,Nn,I:integer; S1,X: real; begin

for I:=1 to 10 do begin

S1:=0.; H:=(B-A)/N; X:=A; Nn:=N-1;

S1:=Func(A)+Func(B); for J:=2 to Nn do begin

X:=X+H;

S1:=S1+2*Func(X);

end;

S1:=S1*H/2;

N:=N*2;

S:=0.; H:=(B-A)/N; X:=A; Nn:=N-1;

S:=Func(A)+Func(B); for J:=2 to Nn do begin

X:=X+H;

S:=S+2*Func(X);

end;

S:=S*H/2;

Writeln(S:10:5,N:6); if (abs(S1-S))<E then goto 1;

end;

Writeln('Требуемая точность не достигнута при числе шагов равном ', N);

1:

end;

37

procedure Int2(A,B:real;Func:Ft); {Метод Cимпсона } label 1;

const N:integer=4;{четное}

var C,J,Nn,I:integer; S1,X: real; begin

for I:=1 to 10 do begin

S1:=0.; H:=(B-A)/N; X:=A; C:=1; Nn:=N-1;

S1:=Func(A)+Func(B); for J:=2 to Nn do begin

X:=X+H;

S1:=S1+(3+C)*Func(X); C:=-C;

end;

S1:=S1*H/3;

N:=N*2;

S:=0.; H:=(B-A)/N; X:=A; C:=1; Nn:=N-1;

S:=Func(A)+Func(B); for J:=2 to Nn do begin

X:=X+H;

S:=S+(C+3)*Func(X); C:=-C;

end;

S:=S*H/3;

Writeln(S:10:5,N:6); if (abs(S1-S))<E then goto 1;

end;

Writeln('Требуемая точность не достигнута при числе шагов равном ', N);

1:

end;

38

begin ClrScr;

Write('Введите пределы интегрирования: '); Readln(A,B);

Write(' Введите величину погрешности: '); Readln(E);

Writeln;

writeln(' Метод прямоугольников'); Int(A,B,Func1);

Writeln(' шаг интегрирования равен ',H); Writeln(' Интеграл от функции на участке от ', A:4:2,' до ',B:4:2,' равен ',S:8:4);

Writeln;

Writeln( 'Метод трапеций'); Int1(A,B,Func1);

Writeln(' шаг интегрирования равен ',H); Writeln(' Интеграл от функции на участке от ', A:4:2,' до ',B:4:2,' равен ',S:8:4);

Writeln;

Writeln( 'Метод Симпсона'); Int2(A,B,Func1);

Writeln(' шаг интегрирования равен ',H);

Writeln(' Интеграл от функции на участке от ', A:4:2,' до ',B:4:2,' равен

',S:8:4);

end.