Первый пример выполнения задания
1) Тема и название лабораторной работы:
Программирование алгоритмов итеративных циклических структур.
Вычисление с заданной точностью корня заданного уравнения.
2) Фамилия, имя студента, номер группы, номер варианта:
Иванов И., БИН1405, вариант 13.
3) Задание на разработку проекта:
Создайте проект с именем Проект-6-1 для вычисления с точностью
ε=10-5 корня уравнения f(x)=x3 - 2x2+x - 3=0, воспользовавшись
формулой
4) Формализация и уточнение задания:
Проверьте правильность решения подстановкой найденного корня в уравнение. Разработайте схему алгоритма и напишите программный код проекта в соответствии с заданием.
Вычислите производную f’(x)=3x2-4x+1 и обозначьте:
· x – текущее приближение к корню;
· a – предыдущее приближение;
· f – значение функции f(x) для предыдущего значения;
· p – значение производной f'(x) для предыдущего значения;
· i – номер итерации, совпадающий с номером текущего приближения к корню;
· y – значение функции f(x) для найденного с заданной точностью корня.
Будем считать, что заданная точность ε обеспечена, если модуль разности между текущим и предыдущим значениями корня меньше точности ε, то есть для нашего случая |x-a| < ε.
Для решения поставленной задачи необходимо реализовать процедуру
Kop(), которая в качестве входных параметров получает начальное значение x0=2.2 и точность ε=10-5, и возвращает найденный корень xl. Процедура для вычисления корня по заданной формуле должна использовать две процедуры Function: одна – Funy(),вычисляет значение f(x), а другая – Fproiz() – значение производной этой функции ’(x). Заметим, что процедуру Kop() можно было оформить как Function, так как она возвращает только одно значение – вычисленный корень уравнения.
5) Элементы, разрабатываемого проекта:
5.1)Графический интерфейс пользователя:
Разработанная форма проекта имеет вид, как на рис. 4.6.4-1.
Рис. 4.6.4-1. Форма проекта 1-го заданияПроект 6-1:
Вычисление с заданной точностью корня уравнения x3-2x2+x-3=0
5.2)Таблица свойств объектов:
установите и сведите в табл. 4.6.4-2 свойства объектов.
Таблица 4.6.4-2
Имя объектов | Свойство | Значение свойства |
Form1 | Text | Проект 4.6.1. Программирование алгоритмов итеративных циклических структур |
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 |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Обычный, 8 пунктов | |
TextBox2 | Name | TextBox2 |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
TextBox3 | Name | TextBox3 |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
TextBox4 | Name | TextBox4 |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
ListBox1 | Name | ListBox1 |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
ListBox2 | Name | ListBox2 |
ForeColor | Черный | |
Font | Microsoft Sans Serif, Жирный, 8 пунктов | |
Button1 | Name | Button1 |
Text | Выполнить | |
Button2 | Name | Button2 |
Text | Конец |
5.3)Схемы алгоритмов процедур проекта:
схема алгоритма процедуры Kop() представлена на рис. 4.6.4-2.
Рис. 4.6.4-2. Схема алгоритма процедуры Kop(x) проекта Проект 6-1: Вычисление с заданной точностью корня уравнения x3-2x2+x-3=0
5.4)Программный код проекта:
разработанный программный код проекта приведен на
рис. 4.6.4-3.
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 Button1_Click(sender As Object,e As 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 Private Sub Button2_Click(sender As Object,e As EventArgs)_ Handles Button2.Click End End Sub End Class |
Рис. 4.6.4-3. Программный код проекта Проект 6-1:
Вычисление с заданной точностью корня уравнения x3-2x2+x-3=0
6) Результаты выполнения проектов:
Результаты выполнения проекта приведены на рис. 4.6.4-4.
Рис. 4.6.4-4. Результаты выполнения проекта Проект 6-1:
Вычисление с заданной точностью корня уравнения x3-2x2+x-3=0
7) Доказательство правильности работы программы:
Значение функции при подстановке корня в уравнение
f(x) = 0.00012315320113. Это говорит о том, что значение функции f(2.17457839205816) = 0.00012315320113 близко к нулю.