Задача 8. Вычислить значение Y, определяемое формулой:   — КиберПедия 

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Задача 8. Вычислить значение Y, определяемое формулой:  

2024-02-15 26
Задача 8. Вычислить значение Y, определяемое формулой:   0.00 из 5.00 0 оценок
Заказать работу

.

Решение. Алгоритм будет понятнее, если представить числа в этом выражении как степени двойки:

Вычисление Y можно организовать тогда, используя цикл из десяти шагов. На каждом шаге i выполняется операция: к 2i прибавляется значение, вычисленное на предыдущем шаге, и из результата извлекается квадратный корень. Таким образом, результат i-го шага: Осталось только задать начальное значение Y=0. Программа тогда:

 

Sub Корень ( )

Dim Y As Single

Y=0

For i = 1 To 10  

Y = (2^i + Y)^(1/2)

Next

MsgBox Y

End Sub

Здесь символ ^ означает операцию возведения в степень: ab в языке VBA можно представить как a^b , тогда и Öa (a в степени 1/2) есть a^(1/2).

Задача 9. Вычислить значение Y , определяемое формулой:

.

Решение. Вычисление, очевидно, реализуется циклическим алгоритмом, состоящим из 11 шагов. На каждом шаге к сумме Y прибавляется очередной, Y i, элемент ряда: Y=Y+Yi. Сложность этой задачи можно понизить, если выявить зависимость каждого последующего Y i от предыдущего Yi-1 значения. Величина x от шага к шагу не изменяется, в такой постановке задачи ее просто нужно один раз ввести, например, с клавиатуры.

 Итак, для всякого i от 0 до 10, . Соответственно . Разделим Y i на Yi-1 , учитывая, что, по определению факториала, (i + 1)! = i !(i +1). После сокращений получим:  , отсюда следует, что . В суммируемой последовательности последний Y i +1 – это Y10 , а первый Yi - это Y0 . Вычислим это начальное значение, подставив в формулу для Yi вместо i –ноль: . Окончательно, программа:

Sub MyY ( )

Dim Y As Single, yi As Single, x As Single

x = InputBox(“Введите значение х”)

yi = (x^2)/2                 ‘значение начального –Y 0 элемента ряда

Y = yi                              ‘начальное значение суммы

For i  = 1 To 10

yi = (-1/(i+1))*yi        ‘считаем очередной Y i -й элемент 

 Y = Y + yi                      ‘считаем сумму

Next

MsgBox Y

End Sub

 

Отметим, что (частая ошибка!) замена двух операторов тела цикла на один: Y = Y +(-1/(i+1))*yi приведет к тому, что на каждом шаге цикла к сумме Y будет прибавляться одно и то же значение yi, равное Y0 , ведь yi тогда никак не изменяется. В программах, использующих зависимость i-го эле- мента в итерации от i-1-го, необходимо запоминать это предыдущее, вычисленное на (i-1)-м шаге значение, чтобы потом использовать именно его.   

 

Задача 10. Для каждого числа b из 20-ти чисел, вводимых с клавиатуры определить наименьшее неотрицательное целое k такое, что b < 2 k .

Решение. Алгоритм составляет цикл из 20-ти шагов, на каждом из которых: вводится очередное число; проверяется, какую (наименьшую) степень двойки оно не превышает; выводится показатель этой степени. Как получить нужную степень двойки? Пусть число b введено. Начинаем процесс проверки с 20 , т.е. b< 20? Если да, процесс окончен, ответ k= 0. Если нет, проверяем 21 , т.е. b < 21? Если да, процесс окончен, ответ k = 1. Если нет, проверяем 22 , b < 22 ? И так до тех пор, пока не найдем нужное k. Таким образом, на каждом шаге внешнего цикла (ввод очередного числа) работает внутренний цикл, перечисляющий степени k двойки. Условие выхода из этого внутреннего цикла –число b больше или равно 2k . Программа:

 

Sub MinK ( )

Dim b As Integer, k As Integer

For i = 1 To 20                 ‘внешний цикл вводит очередное b и печатает результат   

b = InputBox("Введите целое число")   

k = 0                                  ‘для каждого b начинаем поиск k с нуля!

While b >= 2 ^ k              ‘внутренний цикл; условие цикла на каждом его шаге пересчитывается    

k = k + 1                            ‘увеличиваем показатель степени  

Wend

MsgBox "Для b =" & CStr(b) & " k=" & CStr(k)

Next

End Sub

Здесь операция & склейки строк при выводе текста потребовала преобразования типов CStr из целого в строковый, т.к. она определена для аргументов- строк. 

 

Задачи для самостоятельной работы:

1. Вычислить выражение:

2. Найти сумму бесконечного ряда с точностью до e>0: .

3. Найти сумму k первых членов ряда:    .

4. Для каждого числа a из 20-ти чисел, вводимых с клавиатуры определить наибольшее целое k такое, что a > k3 .

 


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

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

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

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.