Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Арифметический цикл с рекуррентной зависимостью




Решение задач с циклическими вычислительными процессами

Циклы с параметром. Оператор FOR

Вычисление конечных сумм и произведений

Задача 1. Вычислить сумму . Значения величин A, B, m и n ввести с клавиатуры.

Алгоритм решения этой задачи очевиден, и наглядно описывается с приведенной на рис. 4.1 блок-схемой.

Код программы:

Sub pr1()

Dim A As Double, B As Double, S As Double

Dim n As Integer, m As Integer, i As Integer

A = InputBox(“A=“)

B = InputBox(“B=“)

m = InputBox(“m=“)

n = InputBox(“n=“)

For i = m To n

S = S + i ^ 2 / (n + i)

Next i

S = A + B * S

MsgBox(“S= “ & S)

EndSub


 

 
 


Рис. 4.1. Блок-схема алгоритма решения задачи 1

Задача 2. Найти сумму S всех целых чисел, кратных 3 на отрезке [M, N].

Эта задача похожа на предыдущую. Отличие состоит в том, что, просматривая все числа из интервала [M, N], мы должны проверить, делится ли число i без остатка на 3 прежде, чем его суммировать к S. Для проверки деления используется операция mod – деление с остатком целых чисел, в результате выполнения которой получаем остаток от деления в виде целого числа. Таким образом, условие деления числа i на 3 без остатка будет иметь вид: i mod 3 = 0.

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


 

 
 


Рис. 4.2. Блок-схема алгоритма решения задачи 2

Код программы:

Sub pr2()

Dim M As Double, N As Double, S As Double

Dim i As Integer

M = InputBox(“M=“)

N = InputBox(“N=“)

For i = M To N

If i Mod 3 = 0 Then S = S + i

Next i

MsgBox(“S= “ & S)

End Sub

Задача 3. Для заданного значения N найти .

Для вычисления Y, необходимо сделать следующие преобразование исходной формулы:

(1)

Блок-схема алгоритма представлена на рис. 3.

 
 


Рис. 3. Блок-схема алгоритма решения задачи 3

Код программы:

Sub pr3()

Dim Y As Double, i As Integer, N As Integer

N = InputBox(“Введите N“)

Y = 1

For i = 0 To (N – 1) \ 2

If N Mod 2 = 1 Then

Y = Y * (2 * i + 1)

Else

Y = Y * 2 * (i + 1)

End If

Next i

If N Mod 2 = 1 Then Y = - Y

MsgBox(“Y= “ & Y)

End Sub

Вложенный арифметический цикл

Под вложенным арифметическим циклом понимают такую алгоритмическую структуру, при которой в тело одного цикла с параметром включен другой цикл со своим параметром. Другими словами составная инструкция вида

FOR I = …

FOR J = …

FOR K = …

является признаком вложенного арифметического цикла.

Задача 4. Вычислить .

Блок-схема алгоритма решения задачи представлена на рис. 4.

Код программы:

Sub pr4()

Dim Y As Double, Pr As Double, k As Integer, p As Integer

k = InputBox(“Введите k=“)

p = InputBox(“Введите p=“)

For k = 1 To 10

Pr = 1

For p = 1 To 4

Pr = Pr * (k – p) ^ 2

Next p

Y = Y + k ^ 3 * Pr

Next k

MsgBox(“Y= “ &Y)

End Sub

 
 


Рис. 4. Блок-схема алгоритма решения задачи 4

Итерационные циклы

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

Задача 5. Вычислить . Вычисления остановить при выполнении условия .

Для решения этой задачи удобно использовать оператор цикла с предусловием Do While.

Блок-схема алгоритма решения задачи представлена на рис. 4.

Код программы – процедура pr5.

 
 


Рис. 5 Блок-схема алгоритма решения задачи 5

Sub pr5()

Dim Y As Double, E As Double, i As Integer

E = InputBox(“Введите погрешность вычислений”)

i = 1: Y = 0

Do While i/2^i >= E

Y = Y + i /2^2

i = i + 1

Loop

MsgBox(“Y=” & Y)

End Sub

Рекуррентные формулы

Арифметический цикл с рекуррентной зависимостью

Многие циклические вычислительные процессы используют рекуррентные зависимости при решении различных математических задач. В общем виде формулу для рекуррентных вычислений можно представить так:

(2)

В этой рекуррентной формуле для вычисления i -го члена последовательности , где , используются k предыдущих членов последовательности . Для вычислений по формуле (2) нужно задать k первых членов последовательности - .

В ряде случаев рекуррентную формулу легко вывести. Например, для суммы ряда, описанной формулой S = , рекуррентная формула выводится из отношения текущего члена ряда к предыдущему.

(1)

Из (1) и находится рекуррентная формула:

(2)

Использование рекуррентных формул, как правило, сокращает текст программы и время выполнения на компьютере. Однако, в большинстве случаев, рекуррентную формулу нужно написать программисту, что в ряде случаев вызывает определенные трудности. Один из таких случаев рассмотрен в решении задачи 6.

Задача 6. Вычислить значение .

Знаменатель формулы для вычисления tgX представляет собой цепную дробь. Для вычисления такого знаменателя в цикле удобно использовать рекуррентную зависимость с памятью в один член последовательности . Для вывода рекуррентной формулы следует использовать табл. 1.

Таблица 1

Номер i Член последовательности Величина
   
 
 
 
 
 

Из табл. 1 легко заметить, что рекуррентная формула принимает вид:

(3)

Блок-схема алгоритма решения задачи представлена на рис. 6.

Код программы представлен процедурой pr6.

Код программы:

Sub pr6()

Dim X As Double, A As Double; i As Integer

X=InputBox(“Введите X”)

A = 1

For i = 1 TO 5

A =11 - 2*i- X*X/A

Next i

MsgBox(“tg X = ” & Format(A, “fixed”))

End Sub


Рис. 6 Блок-схема алгоритма решения задачи 6

Задача 7. Пользуясь рекуррентной формулой, для заданного N вычислить , если известны , а вычисляется по формуле

(4)

Таблица имён

Математ.величина Обозначениев программе Содержательный смысл Типпеременной
i i Номер текущего члена последовательности integer
N N Номер последнего члена последовательности integer
Y3 Член последовательности с номером i-3 double
Y2 Член последовательности с номером i-2 double
Y1 Член последовательности с номером i-1 double
Y Член последовательности с номером i double
S Искомая сумма double

Первым шагом в работе алгоритма является ввод данных Y0, Y1, Y2, N. При вводе трех первых значений последовательности нужно использовать рабочие ячейки Y3, Y2 и Y1, соответственно. На втором шаге требуется проанализировать значение N. Если N < 3, то рекуррентная формула для подсчета S суммы первых N членов не потребуется. Для определения S при условии N < 3, в алгоритме предусмотрен переключатель (оператор Select Case), имеющий три ветви: N = 0, N = 1, в противном случае (куда попадает и случай N = 2). Для каждой ветви подсчитывается соответствующая сумма S. Третий шаг выполняется только в том случае, если N > 2. На этом шаге для I от 3 до N по рекуррентной формуле вычисляются YI и подсчитывается их сумма S. Найденное значение S на последнем четвертом шаге выводится на экран.

Блок-схема алгоритма решения задачи представлена на рис. 7.

Код программы представлен процедурой pr7.

Sub pr7()

Dim Y3 As Double, Y2 As Double, Y1 As Double, Y As Double

Dim S As Double

Dim N As Integer, i As Integer

Y3=InputBox(“Введите Y0”)

Y2=InputBox(“Введите Y1”)

Y1=InputBox(“Введите Y2”)

N=InputBox(“Введите N”)

Select Case N

Case 0

S=Y3

Case 1

S=Y3+Y2

Case Else

S=Y3+Y2+Y1

End Select

If N>2 Then

For i=3 To N

Y=Log(Abs(Y1*Y1+Y3+1)

S=S+Y

Y3=Y2

Y2=Y1

Y1=Y

Next i

End If

MsgBox(“S = ” & Format(S, “fixed”))

End Sub

 
 


Рис. 7. Блок-схема алгоритма решения задачи 7





Поделиться с друзьями:


Дата добавления: 2016-12-05; Мы поможем в написании ваших работ!; просмотров: 653 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студенческая общага - это место, где меня научили готовить 20 блюд из макарон и 40 из доширака. А майонез - это вообще десерт. © Неизвестно
==> читать все изречения...

2320 - | 2275 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.