Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 40095.doc
Скачиваний:
8
Добавлен:
30.04.2022
Размер:
514.56 Кб
Скачать

6.3. Примеры решения типовых задач

1. Вычислить значения квадратного корня из числа Х по итерационной формуле Ньютона Yi+1 = (Yi + X / Y i ) / 2 с точностью |Yi+1 Yi| ε . Начальное приближение Y0 = A является параметром.

program Example_6_3_1;

uses

WinCrt;

var

X : Real; { аргумент }

A : Real; { начальное приближение }

Y0 : Real; { предыдущее приближение }

Y1 : Real; { очередное приближение }

Eps : Real; { точность вычисления }

begin

WriteLn(' Введите значения A, Eps, X ');

ReadLn(A, Eps, X);

if X > 0 then

begin

Y1 := A;

repeat

Y0 := Y1;

Y1 := (Y0 + X / Y0) / 2;

until Abs (Y1 – Y0) < Eps;

WriteLn (' Y1= ', Y1:7:5 , ' при X= ', X:5:2);

end

else WriteLn (' Число ', X:5:2, ' меньше нуля ');

end.

2. Для заданного x проверить справедливость следующего разложения:

и оценить скорость сходимости, найдя число слагаемых, необходимое для достижения заданной погрешности ε.

(Здесь , n! = 1. 2. 3 .... n ).

program Example_6_3_2;

uses

WinCrt;

const

Limit = 100; {ограничение на число шагов}

var

x, Eps, y, s, u : Real;

n : Integer;

begin

WriteLn (' Задай аргумент x и погрешность 0<Eps<=1 ');

ReadLn (x, eps);

y := Ехр(– х); { левая часть }

u := 1; { первое слагаемое }

s := u; { частичная сумма }

n := 0; { число шагов }

repeat

u := – x / (n + 1) * u; { очередное слагаемое }

s := s + u;

n := n + 1;

until (Abs (y – s) <= Eps) or (n >= Limit);

if n >= Limit then

WriteLn (n, ' шагов не хватило для достижения точности ', Eps)

else

begin

WriteLn (' Левая часть: ', y:15:12);

WriteLn (' Правая часть: ', s:15:12);

WriteLn (' Погрешность ' , Eps:10:6, ' достигнута за ', n, ' шагов');

end;

end.

6.4. Контрольные задания

1. Найти как предел последовательности , где , а каждое следующее получается из предыдущего по формуле:

2. При некоторых заданных x, N и E, определяемых вводом, вычислите сумму N слагаемых заданного вида, а также сумму тех слагаемых, которые по абсолютной величине больше E. Для второго случая выполните суммирование для двух значений E, отличающихся на порядок, и при этом определите количество слагаемых, включенных в сумму. Сравните результаты с точным значением функции, для которой данная сумма определяет приближенное значение при x, лежащем в интервале (–R, R).

  1. .

3. Пусть дано натуральное число n. Найдите наименьшее среди чисел

4. Пусть дано натуральное число n. Найдите , где ,

5. Проверить численно замечательные пределы:

a) первый: , задавая значения до тех пор, пока исследуемое выражение будет отличаться от 1 менее, чем на заданную величину погрешности .

b) второй: , задавая значения При каком n исследуемое выражение будет отличаться от е менее, чем на заданную величину погрешности ?

Лабораторная работа № 7

Одномерные массивы

7.1. Цели работы

Научиться правильно описывать одномерные массивы, уметь инициализировать массивы, распечатывать содержимое массива. Научиться решать задачи на использование одномерных массивов.

7.2. Краткие теоретические сведения

Массив – это структурированный тип данных, который используется для описания упорядоченной совокупности фиксированного числа элементов одного типа, имеющих общее имя. Для обозначения элементов массива используются имя переменной-массива и индекс.

Перед выполнением работы необходимо изучить правила описания и использования переменных типа массив, типизированных констант типа массив.

7.3. Примеры решения типовых задач

1. Дан массив X(N), Получить новый массив Y(N) такой, что в нем сначала идут положительные числа, затем нулевые, и затем отрицательные из X.

program Example_7_3_1;

uses

WinCrt;

var

N, i, k : Integer;

X, Y: array [1 .. 20] of Real;

begin

Write (' Введите N = ');

ReadLn (N);

for i := 1 to N do

begin

Write (' X [ ', i, ' ] = ');

ReadLn (X [i])

end;

k := 0;

for i := 1 to N do

if X [i] > 0 then

begin

k := k + 1;

Y [k] := X [i]

end;

for i := 1 to N do

if X [i] = 0 then

begin

k := k + 1;

Y [k] := X [i]

end;

for i := 1 to N do

if X [i] < 0 then

begin

k := k + 1;

Y [k] := X [i]

end;

Write (' О т в е т : полученный массив ');

for i := 1 to N do

Write (Y [i] : 5 : 1, ' ':1);

end.

2. Найти наибольший элемент числового массива A = (a1, a2 , ... , aN ), и его номер.

program Example_7_3_2;

uses

WinCrt;

type

Mas = array [1 .. 20] of Real;

var

A: Mas;

i, N, imax: Integer;

Amax : Real;

begin

Write (' Введите N = ');

ReadLn (N); { ввод количества элементов массива А }

Write (' Введите элементы массива A ');

for i := 1 to N do

begin

Write (' A [ ', i , ' ] = ');

ReadLn (A [i]) { ввод значений элементов массива А }

end;

{ Поиск максимального элемента }

Amax := A [1];

imax := 1; { номер элемента с максимальным значением }

for i := 2 to N do

if A [i] > Amax then

begin

Amax := A [i];

imax := i

end;

WriteLn;

{ Вывод результата }

WriteLn (' Наибольший элемент ' , imax , ' -й ');

WriteLn (' Его значение ', Amax : 5 : 1);

end.

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