Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Примеры составления программ




Пример 14.1. Рассмотрим задачу вычисления функции y=cos(x) c погрешностью e, используя разложение косинуса в ряд:

.

Накопление суммы производим по рекуррентной формуле

.

Здесь общий вид слагаемого суммы может быть записан в следующей форме:

.

Для сокращения объема вычислений его целесообразно вычислять по формуле

.

Сомножитель jn(x), называемый переходным коэффициентом, можно определить из соотношения

Учитывая, что

,

получаем

.

Тогда текущий член ряда будет вычисляться по формуле

.

Начальное значение t0(x) находим подстановкой в формулу для общего члена tn(x) значения n=0:

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

На рис. 14.1 приведен алгоритм вычисления бесконечного ряда с заданной погрешностью еps .

Программа вычисления такой суммы имеет вид:

Program Serie;

{**************************************** }

{Цель - вычисление суммы с заданной }

{ погрешностью по итерационному }

{ алгоритму                }

{Переменные:                  }

{ x - аргумент функции;      }

{ n - переменная суммирования;  }

{ eps - погрешность вычисления суммы ; }

{ S – сумма;                    }

{ t – слагаемое.             }

{Программист – ст. гр. 573 Карлов К.К. }

{Проверил: доцент Цуканова Н.И.        }

{Дата написания - 16.01.06 г.    }

{*****************************************}

Var

eps, S, t, x:real;

n:integer;

Begin {Serie}

{Ввод исходных данных}

Write('x=');

Read(x);

Write('eps=');

 

 

 

Рис. 14.1. Алгоритм вычисления суммы бесконечного ряда

Read(eps);

{Эхо-печать}

Writeln('Для x=', x:6:2,' с погрешностью ', eps);

{Вычисление суммы}

t:=1;

S:=1;

n:=1;

while abs(t)>eps do {Условие продолжения цикла}

   begin

   t:=-t*x*x/(2*n*(2*n-1));

      S:=S+t;

      n:=n+1

   end;

Writeln('n=', n,' S=', S:12:9)

Writeln('Контрольное значение: '; cos(x):12:9)

End. {Serie}

Заметим, что переменной цикла является параметр n, однако он напрямую не участвует в управлении циклом.

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

с заданной погрешностью .

Здесь при накоплении суммы по формуле

общий член ряда имеет вид

и может быть вычислен непосредственно без определения переходного коэффициента . Принимая начальные значения суммы и члена ряда равными 1/2, алгоритм решения данной задачи можно представить в виде рис. 14.2.

 

Рис. 14.2. Схема алгоритма вычисления суммы ряда

Программа вычисления такой суммы простого ряда будет иметь следующий вид:

Program Serie_simple;

{**************************************** }

{Цель - вычисление суммы с заданной }

{ погрешностью по итерационному }

{ алгоритму             }

{Переменные:                  }

{ n - переменная суммирования; }

{ t – член ряда;              }

{ eps - погрешность вычисления суммы; }

{ S – сумма.                    }

{Программист – ст. гр. 575 Краснов Ф.Е. }

{Проверил: доцент Руделев С.А.         }

{Дата написания - 19.01.06 г.    }

{**************************************** }

Var

eps, S, t:real;

n:integer;

Begin {Serie_simple}

{Ввод исходных данных}

Write('eps=');

Read(eps);

{Эхо-печать}

Writeln('Сумма ряда с погрешностью ', eps);

{Вычисление суммы}

t:=1/2;

S:=t;

n:=2;

while t>eps do {Условие продолжения цикла}

   begin

      t:=1/(n*(n+1));

      S:=S+t;

      n:=n+1

   end;

Writeln('S=', S:12:9, ' за ', n-2, ' шагов')

End. {Serie_simple}

Пример 14.3. Рассмотрим пример вычисления суммы ряда, текущий член которого представляется в виде двух сомножителей, один из которых вычисляется по рекуррентному соотношению, а другой - непосредственно:

.

Здесь при накоплении суммы по формуле

общий член ряда может быть представлен в виде произведения

,

где сомножитель  целесообразно вычислить по рекуррентному соотношению

,

а сомножитель  - непосредственно по приведенной формуле.

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

 

Рис. 14.3. Схема алгоритма вычисления суммы комбинированного ряда

Программа же вычисления суммы комбинированного ряда будет иметь следующий вид:

Program Serie_complex;

{**************************************** }

{Цель - вычисление суммы с заданной }

{ погрешностью по итерационному }

{ алгоритму                }

{Переменные:                  }

{ n - переменная суммирования; }

{ t – член ряда ;        }

{ x – аргумент;                  }

{ v – сомножитель;       }

{ eps - погрешность вычисления суммы ; }

{ S – сумма.                       }

{Программист – ст. гр. 547 Сизов Б.М. }

{Проверил: доцент Шевяков А.Г.            }

{Дата написания - 21.01.06 г.    }

{**************************************** }

Var

eps, S, t, v:real;

n:integer;

Begin {Serie_complex}

{Ввод исходных данных}

Write('Погрешность eps=');

Read(eps);

Write('Аргумент x=');

Read(x);

{Эхо-печать}

WriteLn('Сумма ряда с погрешностью ', eps);

WriteLn('при x= ', x:6:3);

{Вычисление суммы}

v:=x;

t:=x;

S:=x;

n:=1;

while Abs(t)>eps do {Условие продолжения цикла}

   begin

      v:=x*x*v

      t:=v/(2*n+1);

      S:=S+t;

      n:=n+1

   end;

WriteLn('S=', S:12:9, ' за ', n-1, ' шагов')

End. {Serie_complex}




Задания

Разработать алгоритм и программу, определяющую сумму ряда с заданной погрешностью (ипсилон) для произвольно заданного аргумента x. Определить число повторений итерационного цикла.

Вариант Бесконечная сумма Диапазон изменения x Выражения для проверки
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

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

Вариант 1. Корень n-й степени

из числа x является пределом последовательности y0,y1,y2,...,yk,..., каждый член которой определяется итерацией

Определить с точностью до e=10-3 корень 2-й и 4-й степеней из числа p/3 и число итераций, необходимых при этом.

Вариант 2. Вычислить значение функции sin(z), используя разложение ее в степенной ряд:

Определить число итераций, необходимых для вычисления sin(0,3), с точностью до e=10-4.

Вариант 3. Вычислить значение функции sin(z), используя разложение ее в бесконечное произведение:

Определить число итераций, необходимых для вычисления sin(0,3), с точностью до e=10-4.

Вариант 4. Вычислить значение функции cosx, используя разложение ее в степенной ряд:

Определить число итераций, необходимых для вычисления cos(0,3), с точностью до e=10-4 .

Вариант 5. Для уравнения x2 - cosx = 0 уточнить корень методом итераций на интервале [0,2] для e = 10-4.

Вариант 6.Вычислить значение функции cosx, используя разложение ее в бесконечное произведение:

Определить число итераций, необходимых для вычисления cos(0,3), с точностью до e=10-4 .

Вариант 7. Вычислить значение гиперболического синуса, используя разложение его в степенной ряд

Задание выполнить для x=1,75 с погрешностью e=10-3.

Вариант 8. Вычислить значение гиперболического синуса по формуле

используя разложение функции ex в степенной ряд

Задание выполнить для x=1,75 с погрешностью e=10-3.

Вариант 9. Вычислить значение гиперболического косинуса по формуле

Задание выполнить для x=1,75 с погрешностью e=10-3.

Вариант 10. Вычислить значение интегрального косинуса

используя разложение

для аргумента x=3 с погрешностью e =10-3. Постоянную Эйлера-Маскерони принять равной С = 0,577216.

Вариант 11. По определению Эйлера гамма-функция

Составить рекуррентное соотношение и вычислить Г(2,5) с пог­решностью e=10-7.

Вариант 12. Вычислить интеграл Френеля для x=1,55 с погрешностью e=10-4 по формуле

Вариант 13. Вычислить интеграл Френеля для x=1,55 с погрешностью e=10-4 по формуле

Вариант 14. Вычислить значение функции arctg(x) с погрешностью e =10-3 и определить число требуемых для этого итераций при x=0,5; x=0,7.

Вариант 15. Вычислить значение функции arcsin(x) с погрешностью e =10-3 и определить число требуемых для этого итераций при x=0,5; x=0,7.

Вариант 16. Для уравнения, приведенного в задании № 5, и найденного интервала (a, b) уточнить корень x с погрешностью e=10-4 методом половинного деления.

Полученный корень x проверить путем подстановки его значения в уравнение f(x) = 0.

Вариант 17. Для уравнения, приведенного в задании № 5, и найденного интервала (a, b) уточнить корень x с погрешностью e=10-4 методом хорд (пропорциональных частей).

Через точки (a, f(a)) и (b, f(b)) проводим прямую и находим значение x точки пересечения данной прямой с осью OX по формуле

Если f(a)f(x)<0, то правую границу b переносят в точку x, т.е. выполняют присваивание b:=x, в противном случае уменьшают интервал за счет присвоения a:=x. Искомый корень x определяется с погрешностью, равной разности двух его соседних значений. Если полученная погрешность больше заданной, то вновь применяют вышеприведенную формулу.

Вариант 18. Выполнить задание № 5 для уравнения 1 - x2 + sinx = = 0 на интервале (0,p/2).

Вариант 19. Вычислить значение функции

с допустимой погрешностью e=10-4. Процесс суммирования прекращается как только выполнится неравенство |uk|<4e, где uk - текущий член ряда суммирования. Найти ln(5), ln(0,5) и определить число слагаемых, учитываемых в обоих случаях.

Вариант 20. Определить значение функции y = f(x) при x=2, если эта функция задана неявно в виде

(x-1)2 + (y-2)2 - 9 = 0.

Применить метод итераций, при котором уравнение F(x,y)=0 представляется следующей итерационной формулой

Начальное приближение задать y0=1. Процесс итерации продолжать до тех пор, пока два последовательных приближения yn+1 и yn не совпадут между собой с точностью до e=10-2.

Вариант 21. Вычислить значение функции  с погрешностью e =10-3 и определить число требуемых для этого итераций при x=0,5; x=0,7.

 .

Вариант 22. Для уравнения x2 - cosx = 0 уточнить корень методом половинного деления на интервале [0,2] для e = 10-4.

Вариант 23. Вычислить значение интеграла  с точностью до ε = 0,5∙10-4, используя его разложение в ряд:

 .

Вариант 24. Вычислить с погрешностью ε = 10-5 ряд Фурье для функции , имеющий вид:

,

для .

Вариант 25. Вычислить с погрешностью ε = 10-5 ряд Фурье для функции , имеющий вид:

,

для .


 


СОДЕРЖАНИЕ

Тема 5ТАБУЛИРОВАНИЕ ФУНКЦИЙ С ИСПОЛЬЗОВАНИЕМ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ С ПОСТУСЛОВИЕМ 3

Тема 6 ПРОЕКТИРОВАНИЕ АЛГОРИТМОВ И ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ ЦИКЛА С ПРЕДУСЛОВИЕМ. ОБРАБОТКА ФУНКЦИЙ.. 11

Тема 7 ОБРАБОТКА ЧИСЛОВЫХ ДАННЫХ.. 16

Тема 8 ВЫЧИСЛЕНИЕ ЧИСЛОВЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ С ПОМОЩЬЮ ЦИКЛА С ПАРАМЕТРОМ 19

Тема 9 ВЫЧИСЛЕНИЕ КОНЕЧНЫХ СУММ И ПРОИЗВЕДЕНИЙ.. 23

Тема 10 ВЫЧИСЛЕНИЕ СУММ ПРОСТЕЙШИХ ЧИСЛОВЫХ РЯДОВ.. 29

Тема 11 ТАБУЛИРОВАНИЕ ФУНКЦИИ С ПОМОЩЬЮ ОПЕРАТОРА ЦИКЛА С ПАРАМЕТРОМ 33

Тема 12 ИТЕРАЦИОННЫЕ ЦИКЛЫ. УТОЧНЕНИЕ КОРНЕЙ УРАВНЕНИЙ МЕТОДОМ ПОЛОВИННОГО ДЕЛЕНИЯ 38

Тема 13 ИТЕРАЦИОННЫЕ ЦИКЛЫ. УТОЧНЕНИЕ КОРНЕЙ УРАВНЕНИЙ МЕТОДОМ ИТЕРАЦИЙ 41

Тема 14 ИТЕРАЦИОННЫЕ ЦИКЛЫ. ВЫЧИСЛЕНИЕ СУММЫ БЕСКОНЕЧНОГО РЯДА 43

 

Алгоритмические языки и программирование

Составители: Москвитина Оксана Александровна

Новичков Валентин Семенович

                       Пылькин Александр Николаевич

 

Редактор Н.А. Орлова

Корректор С.В. Макушина

Подписано в печать                   Формат бумаги 60´84 1/16.

Бумага газетная. Печать трафаретная. Усл. печ. л. 3,5.

Уч.-изд. л. 3,5. Тираж 300 экз. Заказ ____

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

390005, Рязань, ул. Гагарина, 59/1.

Редакционно-издательский центр РГРТА.










Последнее изменение этой страницы: 2018-05-10; просмотров: 268.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...