русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Рекуррентные вычисления


Дата добавления: 2014-09-29; просмотров: 3444; Нарушение авторских прав


 

Цель лабораторной работы: изучение концепций и освоение технологии структурного программирования, приобретение навыков структурного программирования на языке Турбо Паскаль рекуррентных вычислений.

 

Задание на программирование: используя технологию структурного программирования, разработать программу решения индивидуальной задачи, содержащей 3 вида циклических управляющих структур: Цикл - Пока (с предусловием), Цикл - До (с постусловием), Цикл - Для (с параметром). Реализовать интерфейс, обеспечивающий заданное расположение и назначение окон на экране при выполнении программы в соответствии с индивидуальным заданием (вид интерфейса сохраняется из задания на предыдущую лабораторную работу).

 

Порядок выполнения работы:

 

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

2) Разработать математическую модель.

3) Построить схему алгоритма, используя для решения задачи все три циклические управляющие структуры (операторы while, repeat…until, for).

4) Составить программу на языке Турбо Паскаль.

5) Входные данныевводить с клавиатуры по запросу.

6) Выходные данные выводить на экран в развернутой форме с пояснениями.

7) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов, в том числе с ошибочными входными данными.

8) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, контрольные примеры.

 


Варианты индивидуальных заданий

 

Пользуясь рекуррентной формулой, для заданного с клавиатуры значения m вычислить . Значения Y0, Y1, Y2 вводятся с клавиатуры, а Yi вычисляется по формуле:

 

Пользуясь рекуррентной формулой, для заданного с клавиатуры значения m вычислить Ym. Значения Y0, Y1,Y2 вводятся с клавиатуры, а Yi вычисляется по формуле:



Yi – tg2(Yi-3) + Yi-2; i = 3,4,5,…, m

 

Пользуясь рекуррентной формулой, для заданного с клавиатуры значения m вычислить . Значения Y0, Y1, Y2 вводятся с клавиатуры, а Yi вычисляется по формуле:

, m

 

Пользуясь рекуррентной формулой, для заданного с клавиатуры значения m вычислить Ym. Значения Y0, Y1 вводятся с клавиатуры, а Yi вычисляется по формуле:

, m

 

Пользуясь рекуррентной формулой, для заданного с клавиатуры значения m вычислить Ym. Значения Y0 ,Y1,Y2 вводятся с клавиатуры, а Yi вычисляется по формуле:

Yi= sin2 (Yi-1) + cos2 (Yi-3); i=3,4,5, …, m

 

Пользуясь рекуррентной формулой, для заданного с клавиатуры значения m вычислить . Значения Y0, Y1, Y2 вводятся с клавиатуры, а Yi вычисляется по формуле:

Yi = sin(Yi-1) + cos(Yi-3); i=3,4,5,…, m

 

Пользуясь рекуррентной формулой, для заданного с клавиатуры значения m вычислить . Значения Y0 ,Y1 вводятся с клавиатуры, а Yi вычисляется по формуле:

i=2,3,4,…, m

 

Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

Yn = 0.25sin(Yn-1) + sin(Yn-2); n=2,3,4,…

Значения Y0, Y1 вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn - Yn-1ï<e.

 

Вычислить предел последовательности {Yn} при n ® ∞, где Yn вычисляется по формуле:

Yn = 0.2 + 0.1 sin(Yn-1); n=1,2,3...

Значение Y0 вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.

 

Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

Yn=0.1 tg (Yn-1) + 0.3 tg (Yn-3); n=3,4,5...

Значения Y0, Y1, Y2 вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.

 

Вычислить предел последовательности {Yn} при n ® , где Y0=0, а Yn вычисляется по формуле:

Значение Y0 вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.

 

Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

Значения Y0, Y1 вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.

 

Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

Значения Y0, Y1 вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.

 

Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

Значения Y0, Y1, Y2 вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.

 

Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

Значения Y0, Y1 вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.

 

Вычислить предел последовательности {Yn} при n ® , где Yn вычисляется по формуле:

Значения Y0, Y1, Y2 вводятся с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.

 

Вычислить предел последовательности {Yn} при n , где Yn вычисляется по формуле:

Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.

 

Для приближенного решения уравнения Кеплера X-q*sin(X)=m, 0<q<1

полагают X0 = m, X1 = m + q*sin(X0),…,Xn = m + q*sin(Xn-1),…

Значения m и q вводятся с клавиатуры. Найти решение уравнения Кеплера, принимая за него такое Xn, при котором |Xn – Xn-1| < ε.

 

Вычислить - корень k-ой степени из положительного числа A, пользуясь последовательным приближением:

За корень принять такое Xn, при котором |Xn – Xn-1| < ε

 

Члены последовательностей {Xi} и {Yi} вычисляются по двум рекуррентным формулам. Вычислить X20 ,Y20, если

Xi+1 = X0 = 3.5

Yi+1 = ; Y0 = 2.2

 

Вычислить предел последовательности (Yn) при n , где Yn вычисляется по формулам:

 

Значение X (0 ≤ X < 1) вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.

 

Вычислить предел последовательности (Yn) при n , где Yn вычисляется по формулам:

Y1 = X; Yn = Yn-1(2 – X*Yn-1); n =2,3,4…

Значение X (X > 0) вводится с клавиатуры. Вычисления прекратить при выполнении условия ïYn – Yn-1ï<e.

 


Примеры программ

 

Пример 1

Формулировка задания:

Пользуясь рекуррентной формулой Yi = Yi-1 + Yi-3 * Yi-3, где i=3,4,…n, для заданного значения n вычислить Yn, если известны Y0, Y1, Y2.

Ввод исходных данных и вывод результатов вычислений должен осуществляться в разных пользовательских окнах.

 

Program Recur_1;

{Пользуясь рекуррентной формулой y(i)=y(i-1)+y(i-3)^2

где i=3,4,...,n для заданного значения n вычислить y(n),

если известны y(0), y(1), y(2).

Входные данные: y(0),

y(1),

y(2) - значения начальных элементов

n - номер искомого значения.

Выходное данное: y(n) - значение элемента с номером n

}

USES Crt; {подключение модуля}

 

{Процедура вывода пользовательского окна на экран}

PROCEDURE Okno(xv,yv,xn,yn,colfona,colbukv:BYTE;zag:STRING);

VAR

i:INTEGER;

BEGIN

Window(xv,yv,xn,yn); {Установка размеров окна}

TextColor(colbukv); {Установка цвета шрифта}

TextBackGround(colfona); {Установка цвета фона}

ClrScr; {переводит курсор в левый верхний угол окна и

очищает окно, заливая его цветом установленного фона}

GoToXY((xn-xv) DIV 2 - Length(zag) DIV 2,1);

Write(zag);

Window(xv+1,yv+1,xn-1,yn);

END;

 

Var

y0, y1, y2, {исходные данные}

y:LongInt; {результат}

a, b, c, {вспомогательные переменные}

i, {номер текущего элемента}

n:Integer; {номер искомого элемента}

txt:string; {вид заголовка пользовательского окна}

Begin

TextBackGround(BLACK);

TextColor(15);

clrscr;

{Окно формулировки задания. Белый текст на синем фоне.}

Okno(8,15,72,20,BLUE,15,'Формулировка задания');

WriteLn('Пользуясь рекуррентной формулой y(i)=y(i-1)+y(i-3)^2');

WriteLn('где i=3,4,...,n для заданного значения n вычислить y(n),');

WriteLn('если известны y(0), y(1), y(2).');

{Окно ввода исходных данных. Белый текст на зеленом фоне.}

Okno(10,2,70,5,2,15,'Ввод');

Write('Задайте значения y(0), y(1) и y(2) -> ');

ReadLn(y0,y1,y2);

Write('Задайте значение n -> ');

ReadLn(n);

a:=y0;

b:=y1;

c:=y2;

{Окно вывода результата. Белый текст на красном фоне.}

Okno(7,7,73,12,4,15,'Вывод');

{Решение с использованием управляющей структуры While-Do}

i:=3;

While i<=n

Do Begin

y:=y2+y0*y0; {значение очередного элемента последовательности}

y0:=y1;

y1:=y2;

y2:=y;

i:=i+1;

End;

WriteLn('While: значение элемента последовательности y(',n,')=',y);

{Решение с использованием управляющей структуры Repeat-Until}

y0:=a;

y1:=b;

y2:=c;

i:=3;

Repeat

y:=y2+y0*y0; {значение очередного элемента последовательности}

y0:=y1;

y1:=y2;

y2:=y;

i:=i+1;

Until i>n;

WriteLn('Repeat: значение элемента последовательности y(',n,')=',y);

{Решение с использованием управляющей структуры For-To-Do}

y0:=a;

y1:=b;

y2:=c;

For i:=3 To n

Do Begin

y:=y2+y0*y0; {значение очередного элемента последовательности}

y0:=y1;

y1:=y2;

y2:=y;

End;

WriteLn('For: значение элемента последовательности y(',n,')=',y);

ReadLn;

End.


Пример 2

Формулировка задания:

Последовательность функций Yn = Yn(X), где 0 < X < 1 определяется следующим образом: Y1 = (X + 1) / 2; Yn = (X + Yn-1 + 1) / 2; n = 2,3,4…

Для заданного значения X найти предел последовательности, принимая за таковой значение Yn, удовлетворяющее условию |Yn – Yn-1| < e, где 0 < e <= 0.1.

Ввод исходных данных и вывод результатов вычислений должен осуществляться в разных пользовательских окнах.

 

Program Recur_2;

{Последовательность функций yn= yn(x), где 0 < x < 1 определяется

следующим образом: y(1)=(x+1)/2; y(n)=(x+y(n-1)+1)/2; n=2,3,4...

Для заданного x найти предел последовательности, принимая за таковой

значение y(n), удовлетворяющее условию |y(n) - y(n-1)|<eps,

где 0 < eps <= 0.1.

}

Uses Crt; {Подключение модуля}

 

{Процедура вывода пользовательского окна на экран}

PROCEDURE Okno(xv,yv,xn,yn,colfona,colbukv:BYTE;zag:STRING);

VAR

i:INTEGER;

BEGIN

Window(xv,yv,xn,yn); {Установка размеров окна}

TextColor(colbukv); {Установка цвета шрифта}

TextBackGround(colfona); {Установка цвета фона}

ClrScr; {переводит курсор в левый верхний угол окна и

очищает окно, заливая его цветом установленного фона}

GoToXY((xn-xv) DIV 2 - Length(zag) DIV 2,1);

Write(zag);

Window(xv+1,yv+1,xn-1,yn);

END;

 

Var

x, {входное данное - значение аргумента}

eps, {входное данное - точность вычисления}

y1, {текущее значение функции}

yn:Real; {значение предела последовательности}

n:Integer; {номер предельного элемента}

Begin

TextBackGround(BLACK);

TextColor(15);

ClrScr;

{Окно формулировки задания. Белый текст на синем фоне.}

Okno(5,15,75,20,BLUE,15,'Формулировка задания');

WriteLn('Последовательность функций yn=yn(x), где 0<x<1 определяется');

WriteLn('следующим образом: y(1)=(x+1)/2; y(n)=(x+y(n-1)+1)/2; n=2,3,4...');

WriteLn('Для заданного x найти предел последовательности, принимая за таковой');

WriteLn('значение y(n), удовлетворяющее условию |y(n)-y(n-1)|<eps');

Write('где 0 < eps <= 0.1');

{Окно ввода исходных данных. Белый текст на зеленом фоне.}

Okno(9,2,71,5,2,15,'Ввод');

Write(' Введите значение точности: eps=');

ReadLn(eps);

If (eps<=0)OR(eps>0.1)

Then Begin

{Окно вывода сообщения об ошибке. Красный текст на зеленом фоне.}

Okno(10,11,70,13,GREEN,RED,'Сообщение об ошибке');

Write(' Ошибка ввода! Значение eps должно быть <=0.1 и >0');

ReadLn;

Exit;

End;

Write(' Введите значение аргумента: x=');

ReadLn(x);

If (x<=0)OR(x>=1)

Then Begin

{Окно вывода сообщения об ошибке. Красный текст на зеленом фоне.}

Okno(10,11,70,13,GREEN,RED,'Сообщение об ошибке');

Write(' Ошибка ввода! Значение x должно быть >0 и <1');

ReadLn;

Exit;

End;

{Окно вывода результата. Белый текст на красном фоне.}

Okno(8,7,72,12,4,15,'Вывод');

{Цикл While}

n:=1;

y1:=0;

yn:=(x+1)/2;

While (Abs(yn - y1)>eps)AND(n<MAXINT)

{наибольшее значение типа Integer=32767}

Do Begin

y1:=yn;

yn:=(x+y1+1)/2;

n:=n+1;

End;

If n=MAXINT

Then WriteLn(' Точность не достигнута.')

Else WriteLn(' Для цикла While предел y(',n,')=',yn:1:7,', n=',n);

{Цикл Repeat}

n:=1;

y1:=0;

yn:=(x+1)/2;

Repeat

y1:=yn;

n:=n+1;

yn:=(x+y1+1)/2;

Until (Abs(yn-y1)<eps)OR(n>=MAXINT);

If n=MAXINT

Then WriteLn(' Точность не достигнута.')

Else WriteLn(' Для цикла Repeat предел y(',n,')=',yn:1:7,', n=',n);

 

{Цикл For}

yn:=(x+1)/2;

for n:=2 To MAXINT

Do Begin

y1:=yn;

yn:=(x+y1+1)/2;

If(Abs(yn-y1)<eps)

Then Break;

End;

If n=MAXINT

Then WriteLn(' Точность не достигнута.')

Else WriteLn(' Для цикла For предел y(',n,')=',yn:1:7,', n=',n);

ReadLn;

End.

 




<== предыдущая лекция | следующая лекция ==>
Расположение окон | Суммирование рядов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.883 сек.