Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MU-Pascal.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
707 Кб
Скачать
☆

Практические задания

1. Изучить и запустить программу, вычисляющую сумму , n = 10. Определить максимальное значение n, при котором факториал (переменная f типа longint) вычисляется верно.

var f: longint;

i: integer;

s: real;

Begin

s:=0; f:=1;

for i:=1 to 10 do begin

f:=f*i;

s:=s+1/f

end;

writeln(’s=’,s:9:6); readln

End.

2. Составить программы, вычисляющие значения выражений:

а) б) в) г) ; д) е) ж) ; з) и) к) .

3. Составить программу, вычисляющую значение выражения f = n10!+(n–1)9!+...+(n–10)0!, где n – любое целое число.

var n,u,f: longint;

i, j: integer;

begin

writeln(’Введите число n’);

readln(n);

f:=0;

for i:=10 downto 0 do { цикл вычисления суммы}

begin

u:=1;

for j:=2 to i do u:=u*j; {цикл вычисления факториала}

f:=f+(n+i-10)*u; {добавление в сумму}

end;

writeln(’f=’, f:12);

end.

4. Вычислить с помощью рекуррентной формулы сумму ряда с заданной точностью  (использовать оператор цикла с постусловием):

.

Решение. Каждый член данного ряда требует вычисления только двух функций – степенной и факториала. Поэтому в рекуррентную формулу целесообразно включить весь член ряда

.

Итак, требуется получить формулу

un+1 = Rn un .

Определим множитель Rn

.

Таким образом, сумму указанного ряда можно найти по следующей схеме:

S = u0 + u1 + ... + un ,

где

u0 = 1, ,

суммирование заканчивается, когда

un – 1 > , un  < .

var s,u,x,eps: real;{s – сумма, u – член ряда, eps - точность}

n: integer; {x – аргумент функции, n – номер члена ряда}

begin

writeln(’Введите аргумент x и точность eps’);

readln(x, eps);

u:=1; s:=u; n:=0; { инициализация переменных}

repeat

u:=–u*x*x/(2*n+1)/(2*n+2); {рекуррентная формула}

s:=s+u; {суммирование ряда}

n:=n+1; {счетчик}

until abs(u)<eps;

writeln(’Сумма ряда равна ’, s:10:6);

writeln(’Для сравнения cos(x)=’, cos(x):10:6);

readln

end.

5. Вычислить суммы рядов с точностью  = 0,0001. Использовать, где это целесообразно, рекуррентные формулы. Использовать цикл с предусловием (а, в), с постусловием (б, г):

а) б)

в) г)

6. Изучить и запустить программу вычисления значений функции на интервале x1xx2 с шагом h и найти ее минимальное значение и среднее арифметическое:

Var X,y,a, x1, x2, h, xmin, ymin, sa: real;

n,i: integer;

begin

writeln(’Введите число a, начало и конец интервала и шаг h’);

readln(a, x1, x2, h);

if (x2>x1) and ((x2–x1)>2*h) then { если x2 > x1 и}

begin { на интервале не менее трех точек}

x:=x1; { инициализация }

n:=round((x2-x1)/h); {кол-во точек равно n+1 }

if(x>a) then y:= sqr(sin(abs(x)))

else y:= cos(x*x);

writeln(’x=’, x:7:3,’ y=’, y:9:4); {вывод x1 и y1}

xmin:=x; ymin:=y; SA:=y; { присваивание начальных }

{ значений перед циклом }

for i:=1 to n do begin { выполняется цикл }

x:=x1+i*h;

if(x>a) then y:= sqr(sin(abs(x)))

else y:=cos(x*x); {вычисление функции }

writeln(’x=’, x:7:3,’ y=’, y:9:4); {вывод x и y}

if y<ymin then begin

ymin:= y; xmin:= x; {корректируем уmin, xmin}

end;

SA:=SA+y; {накопление суммы значений функции}

end; { конец цикла }

writeln(’Минимальное значение y =’,ymin:9:4,’ при x=’, xmin:7:3);

writeln(’Среднее значений функции ’, SA/(n+1):9:4);

end

else writeln (’Неверно заданы x1 и x2’);

readln

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]