Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Цель данной лабораторной работы состоит в освоении формализации при решении задач на компьютере, а также в изучении средств, приемов и получении практических навыков разработки, написания и отладки проектов, использующих итеративные циклические структуры.
4.6.1. Вопросы, подлежащие изучению
4.6.2. Задание
1. Выбрать вариант задания из таблицы 4.6-1 по усмотрению преподавателя.
2. Провести формализацию поставленной задачи.
3. Составить схему алгоритма решения поставленной задачи.
4.6.3. Варианты задания
Таблица 4.6-1
|
Вычислить с точностью ε = 0.00001 константу Эйлера (основание натурального логарифма), воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции. |
2) |
Вычислить и вывести те члены последовательности, значения которых больше ε = 0.001 при x = 0.2. |
3) |
Вычислить arctg(x) с точностью ε = 0.0001, воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции при x=1.5. |
4) |
Вычислить с точностью ε = 0.00001 значение функции при x = 2, воспользовавшись рекуррентной формулой: . Сравнить результат со значением, полученным с помощью соответствующей встроенной функции. |
5) |
Вычислить константу с точностью до ε = 0.00001, воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции. |
6) |
Вычислить с точностью ε = 0.00001 значение функции при x = 2, воспользовавшись формулой: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции |
7) |
Вычислить sin 0.5 с точностью ε = 0.0001, воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции. |
8) |
Вычислить с точностью ε = 0.00001, воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции. |
9) |
Вычислить cos 0.6 с точностью ε = 0.00001, воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции. |
10) |
Вычислить с точностью ε = 0.0001 корень уравнения , воспользовавшись формулой: . Проверить правильность решения подстановкой найденного корня в уравнение. |
11) |
Вычислить и вывести те члены последовательности, значения которых по модулю больше ε = 0.001 при x = 0.5. |
12) |
Вычислить при |x|<1 с точностью до ε = 0.0001, воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции. |
13) |
Вычислить корень уравнения с точностью ε=0.0001, воспользовавшись итерационной формулой Проверить правильность решения подстановкой найденного корня в уравнение. |
14) |
Вычислить значение с точностью ε = 0.00001 , воспользовавшись представлением в виде в виде цепной дроби: Значение дроби равно пределу числовой последовательности, члены которой вычисляются по рекуррентной формуле до достижения заданной точности . Сравнить результат со значением, полученным с помощью соответствующей встроенной функции. |
15) |
Вычислить и вывести те члены последовательности, значения которых по модулю больше ε = 0.001 при x = 0.3. |
16) |
Вычислить ln(x) с точностью ε = 0.0001, воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции при x=1.5. |
17 |
Вычислить sh 0.3 с точностью до ε= 0.00005, воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью встроенной функции для вычисления ex, используя соотношение: |
18) |
Вычислить корень уравнения x-0.5(sinx2-1)=0 с точностью ε = 0.001, воспользовавшись итерационной формулой: Проверить правильность решения подстановкой найденного корня в уравнение. |
19 |
Вычислить ln(2) с точностью ε = 0.001, воспользовавшись представлением в виде ряда: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции. |
20) |
Вычислить с точностью ε = 0.00001 корень уравнения воспользовавшись итерационной формулой Проверить правильность решения подстановкой. |
21) |
Вычислить ch 0.7 с точностью до ε = 0.00005, воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью встроенной функции, используя соотношение: |
22) |
Вычислить приближенное значение бесконечной суммы с точностью ε=0,0001 (справа от суммы дается выражение для проверки полученного результата): (для |x|<1 сумма равна ) |
23) |
Вычислить при |x|>1 с точностью до ε = 0.0001, воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции. |
24) |
Вычислить ln(x+1) с точностью ε = 0.0001, воспользовавшись разложением в ряд: Сравнить результат со значением, полученным с помощью соответствующей встроенной функции при x=0.5. |
25) |
Вычислить и вывести те члены последовательности, , значения, которых больше ε = 0.01, при x = 0.6. |
26) |
Найти наименьшее целое положительное n, при котором: |
27) |
Пусть Дано действительное число >0. Найти первый член , для которого выполнено условие . |
28) |
Вычислить приближенное значение бесконечной суммы с точностью ε=0,0001 (справа от суммы дается ее точное значение, с которым можно сравнить полученный результат): 2/6-1. |
29) |
Вычислить приближенное значение бесконечной суммы с точностью ε=0,0001 (справа от суммы дается ее точное значение, с которым можно сравнить полученный результат): /4 |
30) |
Вычислить приближенное значение бесконечной суммы с точностью ε=0,0001 (справа от суммы дается ее точное значение, с которым можно сравнить полученный результат): 3/4. |
31) |
Вычислить приближенное значение бесконечной суммы с точностью ε=0,0001 (справа от суммы дается ее точное значение, с которым можно сравнить полученный результат): 1/4. |
32 |
Вычислить с точностью ε = 0.0001, воспользовавшись разложением в ряд: . Сравнить результат со значением, полученным с помощью соответствующей встроенной функции при x=0.5. |
33) |
Даны действительные числа x, (x≠0, >0). Вычислить с точностью : |
34) |
Даны действительные числа x, (x≠0, >0). Вычислить с точностью : |
35) |
Дано действительное b<0. Последовательность а1, а2, …образована по следующему закону: a1=b; ak=(ak-1+1)/(1-sin2k), k=2, 3, … . Найти первый неотрицательный член последовательности. |
4.6.4. Содержание отчета
4.6.5. Пример выполнения задания-1
Программирование алгоритмов итеративных циклических структур Вычисление с точностью ε=10-5 корня заданного уравнения.
Создать проект Проект-4-6-1-Лаб для вычисления с точностью ε=10-5 корня уравнения f(x)=x3-2x2+x-3=0, воспользовавшись итерационной формулой
Проверить правильность решения подстановкой найденного корня в уравнение.
Составить схему алгоритма и написать программный код в соответствии с заданием. Если необходимо, предварительно провести формализацию.
3. Формализация и уточнения задания
Вычислим производную f(x)=3x2-4x+1. Обозначим x текущее приближение к корню, a предыдущее приближение, f значение функции f(x) для предыдущего значения, p значение производной f'(x) для предыдущего значения, i номер итерации, совпадающий с номером текущего приближения к корню уравнения, y значение функции f(x) для найденного с заданной точностью корня уравнения.
Будем считать, что заданная точность ε обеспечена, если модуль разности между текущим и предыдущим значениями корня меньше точности ε, то есть для нашего случая |x-a|<ε.
Для решения поставленной задачи необходимо реализовать процедуру Sub Kop( ), которая в качестве входных параметров получает начальное значение x0=2.2 и точность ε=10-5, и возвращает найденный корень xl. Эта процедура для вычисления корня по заданной формуле должна использовать две процедуры Function: одна Funy(), вычисляющая значение f(x), а другая Fproiz( ) значение производной этой функции f(x). Заметим, что процедуру Sub Kop( )можно было оформить как Function, так как она возвращает только одно значение вычисленный корень уравнения.
4. Разработка приложения
Рис. 4.6-1
Объект |
Свойство |
Значение свойства |
Form1 |
Text |
Тема 4.6. Программирование алгоритмов итеративных циклических структур |
Label1 |
Name |
Label1 |
Text |
Вычисление корня уравнения f(x)=x^3-2x^2+x-3=0 |
|
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 10 пунктов |
|
Label2 |
Name |
Label2 |
Text |
E= |
|
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
Label3 |
Name |
Label3 |
Text |
X0= |
|
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
Label4 |
Name |
Label4 |
Text |
Итерация |
|
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Обычный, 8 пунктов |
|
Label5 |
Name |
Label5 |
Text |
Приближенный корень |
|
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Обычный, 8 пунктов |
|
Label6 |
Name |
Label6 |
Text |
Решение x= y= |
|
ForeColor |
Черный |
|
Font |
Arial, Жирный, 12 пунктов |
|
TextBox1 |
Name |
TextBox1 |
Text |
||
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Обычный, 8 пунктов |
|
TextBox2 |
Name |
TextBox2 |
Text |
||
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
TextBox3 |
Name |
TextBox3 |
Text |
||
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
TextBox4 |
Name |
TextBox4 |
Text |
||
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
ListBox1 |
Name |
ListBox1 |
Text |
||
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
ListBox2 |
Name |
ListBox2 |
Text |
||
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
Button1 |
Name |
Button1 |
Text |
Выполнить |
|
Button2 |
Name |
Button2 |
Text |
Конец |
Рис. 4.6-2
Option Strict On Option Explicit On Imports System.Math Public Class Form1
'Функция ввода исходн. данных из TextBox Function vvod(ByVal T As TextBox) As Double Return Val(T.Text) End Function 'Процедура вывода вещественного результата в TextBox Sub vivod(ByVal Z As Double, ByVal T As TextBox) T.Text = CStr(Z) End Sub 'Процедура вывода вещественного результата в ListBox Sub vivodList(ByVal Z As Double, ByVal LB As ListBox) LB.Items.Add(CStr(Z)) End Sub ' Процедура вывода целого результата в ListBox Sub vivodListint(ByVal Z As Integer, ByVal LB As ListBox) LB.Items.Add(CStr(Z)) End Sub 'процедура-Function, вычисляющая производную Public Function FProiz(ByVal x As Double) As Double Dim p As Double p = 3 * x ^ 3 - 4 * x + 1 Return p End Function 'процедура-Function, вычисляющая заданную функцию Public Function Funy(ByVal x As Double) As Double Dim f As Double f = x ^ 3 - 2 * x ^ 2 + x - 3 Return f End Function ' Процедура решения задачи поиска корня Public Sub Kop(ByVal E As Double, ByVal x0 As Double, _ ByRef xe As Double) Dim x, a As Double Dim i As Integer i = 0 : x = x0 Do a = x : x = a - Funy(a) / FProiz(a) : i = i + 1 vivodListint(i, ListBox1) vivodList(x, ListBox2) Loop Until Abs(x - a) < E xe = x End Sub Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click End End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim EE, x0x0, xn, y As Double EE = vvod(TextBox1) x0x0 = vvod(TextBox2) Kop(EE, x0x0, xn) vivod(xn, TextBox3) y = Funy(xn) vivod(y, TextBox4) End Sub End Class |
Выполним проект на компьютере и получим следующий результат, приведенный на рис. 4.6-4.
Рис. 4.6-4
Значение функции при подстановке корня в уравнение f(x)= 0.00012315320113. Это говорит о том, что значение функции f(2.17457839205816)=0.00012315320113 близко к нулю.
4.6.6. Пример выполнения задания-2
Программирование алгоритмов итеративных циклических структур Вычисление членов заданной последовательности, значения которых по модулю больше заданного числа.
Создать проект Проект-4-6-2-Лаб для вычисления и отображения на экране тех членов последовательности
,
значения которых по модулю больше =0.0001, при x=1.5.
Для решения поставленной задачи необходимо вывести рекуррентную формулу вычисления члена последовательности.
Очевидно, что выражение для n-го члена заданной последовательности имеет вид:
.
Тогда формула для (n+1) члена последовательности имеет вид:
Имея в виду, что (n+1)!=n! ∙ (n+1), получим
Откуда получаем следующую рекуррентную формулу
-начальный член последовательности при n=1.
Свойства объектов управления разработанной формы приведены в таблице 4.6-3.
Объект |
Свойство |
Значение свойства |
Form1 |
Text |
Тема 4.6. Пример 2. |
Label1 |
Name |
Label1 |
Text |
E= |
|
ForeColor |
Синий |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
Label2 |
Name |
Label2 |
Text |
X= |
|
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
Label3 |
Name |
Label3 |
Text |
Задание: |
|
ForeColor |
Красный |
|
Font |
Microsoft Sans Serif, Жирный, 10 пунктов |
|
Label4 |
Name |
Label4 |
Text |
Вычислить все члены, заданной последовательности, значения которых по модулю больше 0.0001 |
|
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
TextBox1 |
Name |
TextBox1 |
Text |
||
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 10 пунктов |
|
TextBox2 |
Name |
TextBox2 |
Text |
||
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
ListBox1 |
Name |
ListBox1 |
Text |
||
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
ListBox2 |
Name |
ListBox2 |
Text |
||
ForeColor |
Черный |
|
Font |
Microsoft Sans Serif, Жирный, 8 пунктов |
|
Button2 |
Name |
Button2 |
Text |
Вычислить значения |
|
Button1 |
Name |
Button1 |
Text |
Стоп |
Option Strict On Option Explicit On Imports System.Math Public Class Form1 'Функция ввода исходн. данных из TextBox Function vvod(ByVal T As TextBox) As Double Return Val(T.Text) End Function ' Процедура вывода вещественного результата в ListBox Sub vivodList(ByVal Z As Double, ByVal LB As ListBox) LB.Items.Add(CStr(Z)) End Sub ' Процедура вывода целого результата в ListBox Sub vivodint(ByVal Z As Integer, ByVal LB As ListBox) LB.Items.Add(CStr(Z)) End Sub ' Процедура выч-я и вывода членов послед-ти с зад. точн. Private Sub Pos(ByVal x As Double, ByVal E As Double) Dim n As Integer Dim a As Double a = x 1 : n = 1 Do While a > E vivodint(n, ListBox1) vivodList(a, ListBox2) a = a * (x - 1) / (n + 1) n = n + 1 Loop End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click End End Sub Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim EE, x0, y As Double EE = vvod(TextBox1) x0 = vvod(TextBox2) Pos(x0, EE) End Sub End Class |
Рис. 4.6-7
Рис. 4.6-8
4.6.7. Контрольные вопросы по теме
«Программирование итеративных циклических структур»