Помощь в написании студенческих работ
Антистрессовый сервис

Проект программного модуля для нахождения корня уравнения

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Целью данной курсовой работы является разработка программного модуля для нахождения методом хорд корня уравнения x3 — x — 0.3 = 0 с точностью до 0,001. После нажатия на кнопку «О программе» появляется сообщение с данными о задаче, которую решает данная программа, и о разработчике. CommandButton3_Click () — процедура, срабатывающая при нажатии кнопки «О программе», которая выводит информацию… Читать ещё >

Проект программного модуля для нахождения корня уравнения (реферат, курсовая, диплом, контрольная)

Введение 2

1. Постановка задачи 3

1.1 Математическая модель задачи 3

1.2 Входные данные 6

1.3 Выходные данные 6

1.4 Обработка ошибок. 6

2 Проектирование программного модуля 8

2.1 Структурная диаграмма программного модуля 8

2.2 Разработка схемы программного модуля и её описание 9

2.3 Разработка пользовательского интерфейса 10

3 Реализация программного модуля 12

3.1 Код программы 12

4 Тестирование программного модуля 18

Заключение 19

Список использованных источников 21

Введение

Целью данной курсовой работы является разработка программного модуля для нахождения методом хорд корня уравнения x3 — x — 0.3 = 0 с точностью до 0,001. Для разработки используется табличный процессор Excel и язык программирования Visual Basic for Application.

1. Постановка задачи

1.1 Математическая модель задачи Рассматриваемый метод так же, как и метод деления отрезка пополам, предназначен для уточнения корня на интервале [a, b], на концах которого левая часть уравнения f (x) = 0 принимает разные знаки. Значение начала интервала, а вводится с клавиатуры. Для определения значения конца интервала b, на котором функция меняет знак, при заданном значении начала отрезка, а используют следующий итерационный алгоритм:

Задают начальное значение х = a + h.

Здесь h — это заданный шаг изменения х.

Вычислить значения f (a) и f (x).

Если f (a) и f (x) имеют разные знаки, то принять b = x и прекратить вычисления, иначе принять

x = x + h

и перейти к шагу 2.

Очередное приближение теперь в отличие от метода деления отрезка пополам берем не в середине отрезка, а в точке х1, где пересекает ось абсцисс прямая линия, проведенная через точки f (a) и f (b) (рисунок 1).

В качестве нового интервала для продолжения итерационного процесса выбираем тот из двух [a, x1] или [x1, b], на концах которого функция f (x) принимает значения с разными знаками. Заканчиваем процесс уточнения корня, когда расстояние между очередными приближениями станет меньше заданной точности

|xn — xn-1| <

или когда значения функции f (x) попадут в область шума (рисунок 1), т. е.

|f (xn)| < 1.

Рисунок 1. Метод хорд.

Уравнение прямой линии, проходящей через точки fa = f (a) и fb = f (b), запишем в общем виде

y (x) = kx + c .

Коэффициенты k и c уравнения этой прямой определим из условий

fa = ka + c ,

fb = kb + c .

Вычитая левые и правые части последних соотношений, получим

c = fa — ka .

Точку пересечения прямой y (x) с осью абсцисс получим, приравнивая y (x) нулю

(1)

или

.(2)

При заданной точности метод состоит из таких шагов:

Вычислить f (a) и f (b) .

Вычислить x1 по формуле (1) или по формуле (2).

Если f (x1) = 0, то принять в качестве решения значение x1, вывести его и прекратить вычисления, иначе перейти к шагу 4.

Если f (x1) и f (a) имеют одинаковые знаки, то заменить a на x1.

Если f (x1) и f (b) имеют одинаковые знаки, то заменить b на x1.

Если |b a| (- заданная погрешность вычислений) или |f (x1)| < 1 (1 — заданное значение шума), то принять в качестве решения последнее значение x1, вывести его и прекратить вычисления, в противном случае перейти к шагу 2.

1.2 Входные данные Входными данными являются:

Начало отрезка;

Конец отрезка;

Требования к входным данным:

Предусмотреть проверку на допустимость исходных данных и повторение ввода при ошибочных данных;

Ввод исходных данных осуществлять в поля ввода формы.

1.3 Выходные данные Выходными данными являются:

Таблица вычислений;

График функции.

Требования к выходным данным:

Все выходные данные выводятся на форму;

Ко всем выходным данным должен быть запрещен доступ со стороны пользователя.

1.4 Обработка ошибок В данной программе реализован следующий способ контроля ввода:

Сначала проверяется, является ли набираемый символ либо цифрой, либо запятой;

Если не является, то набор символа игнорируется;

Если набираемый символ является цифрой, то он вводится в поле ввода;

Если набираемый символ является запятой, то проверяется, является ли она первой вводимой запятой. Если ранее запятые не вводились, то она вводится в поле ввода. В противном случае ввод запятой игнорируется.

Данный способ контроля ввода реализован с помощью функции KeyPress.

Однако пользователь может не ввести в поле ввода данные. В этом случае выдается следующее сообщение:

Рисунок 2. Сообщение об ошибке.

Если пользователь ввел начало отрезка больше, чем конец отрезка, то в этом случае выдается следующее сообщение:

Рисунок 3. Сообщение об ошибке.

2 Проектирование программного модуля

2.1 Структурная диаграмма программного модуля Рисунок 4. Структурная диаграмма программного модуля.

UserForm1 — пользовательская форма.

UserForm_Initialize () — процедура начальной инициализации пользовательской формы.

CommandButton1_Click () — процедура, срабатывающая при нажатии кнопки «Найти корни», которая производит вычисления и записывает результат.

CommandButton3_Click () — процедура, срабатывающая при нажатии кнопки «О программе», которая выводит информацию о задаче и о разработчике.

CommandButton4_Click () — процедура, срабатывающая при нажатии кнопки «Очистить», которая удаляет построенный график.

CommandButton5_Click () — процедура, срабатывающая при нажатии кнопки «Построить», которая считывает данные и строит график.

f () — функция, которая вычисляет значение функции в зависимости от аргумента.

2.2 Разработка схемы программного модуля и её описание Рисунок 5. Схема процедуры обработки кнопки «Найти корни».

Обозначения переменных:

x1 — число из [a, b], для которого вычисляется значение функции;

a, b — начало и конец отрезка;

i — счетчик итераций.

2.3 Разработка пользовательского интерфейса При запуске программы появляется следующее окно:

Рисунок 6. Окно программы.

В окне программы расположены 2 закладки Page1 — «Вычисления» и Page2 — «Построение графика».

На закладке «Вычисления» расположены исходные данные в элементе управления Label, результат (элемент управления Label) и сами вычисления на элементе управления ListBox.

После нажатия на кнопку «Найти корни» производится расчет и выводится результат.

После нажатия на кнопку «О программе» появляется сообщение с данными о задаче, которую решает данная программа, и о разработчике.

Рисунок 7. Сообщение «О программе».

На закладке «Построение графика» ячейки для ввода отрезка (элемент управления TextBox), на котором будет построен график (для уточнения корня уравнения), и сам график. График выводится на элемент управления Image.

3 Реализация программного модуля

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

Dim a As Double 'начало отрезка

Dim b As Double 'конец отрезка

Dim x1 As Double 'значение аргумента

Dim x2 As Double 'значение аргумента

Dim i As Integer 'счетчик

Dim number As String 'строка для проверки вводимого числа

Dim sign As String 'строка для проверки знака вводимого числа

Dim k As Integer

Dim j As Double

Dim ry As Range 'область данных по y для построения графика

Dim rx As Range 'область данных по x для построения графика

Private Sub UserForm_Initialize ()

Application.Visible = False 'делаем Excel невидимым

number = «123 456 789,-»

sign = «-»

Image1.Visible = False

CommandButton4.Enabled = False

End Sub

Private Sub CommandButton1_Click ()

ListBox1.Clear

a = -5 'присвоение значения

b = 5 'присвоение значения

i = 1 'присвоение значения

ListBox1.AddItem «x» 'заполнение ListBox1

ListBox1.List (0, 1) = «y (x)» 'заполнение ListBox1

Do While (True)

x2 = x1

x1 = a — ((b — a) / (f (b) — f (a))) * f (a)

ListBox1.AddItem x1 'заполнение ListBox1

ListBox1.List (i, 1) = f (x1) 'заполнение ListBox1

i = i + 1

If (f (x1) = 0) Then 'проверка условия

Exit Do 'выход из цикла

End If

If ((f (x1) * f (a)) > 0) Then 'проверка условия

a = x1 'изменение начала отрезка

End If

If ((f (x1) * f (b)) > 0) Then 'проверка условия

b = x1 'изменение конца отрезка

End If

If (Abs (x2 — x1) <= 0.001) Then 'проверка условия

Exit Do 'выход из цикла

End If

Loop

Label4.Caption = x1

End Sub

Private Sub CommandButton3_Click ()

MsgBox «Программа уточнения корня уравнения x3-x-0,3=0 методом хорд.» & vbCr & «Разработчик программы: Шараваров Д.», vbInformation, «О программе»

End Sub

Private Sub CommandButton4_Click ()

TextBox1.Value = «»

TextBox2.Value = «»

Image1.Visible = False

CommandButton5.Enabled = True

CommandButton4.Enabled = False

End Sub

Private Sub CommandButton5_Click ()

'проверяем введены ли все данные

If (TextBox1.Value = «» Or TextBox2. Value = «») Then

MsgBox («Введите начало и конец отрезка!»)

Exit Sub

End If

'проверяем правильно ли введены данные (a

If (CDbl (TextBox1.Value) >= CDbl (TextBox2.Value)) Then

MsgBox («Проверьте введенные данные!»)

Exit Sub

End If

k = 1

For j = CDbl (TextBox1.Value) To CDbl (TextBox2.Value) Step 0.01

Cells (k, 1) = j

Cells (k, 2) = f (j)

k = k + 1

Next j

Set ry = Sheets (ActiveSheet.Name).Range (Cells (1, 2), Cells (k, 2))

Set rx = Sheets (ActiveSheet.Name).Range (Cells (1, 1), Cells (k, 1))

Charts.Add

ActiveChart.ChartType = xlLine

ActiveChart.SetSourceData Source:=ry, PlotBy:=xlColumns

ActiveChart.SeriesCollection (1).XValues = «=» & rx. Address (ReferenceStyle:=xlR1C1, external:=True)

ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1″

With ActiveChart

.HasTitle = False

.Axes (xlCategory, xlPrimary).HasTitle = False

.Axes (xlValue, xlPrimary).HasTitle = False

End With

With ActiveChart. Axes (xlCategory)

.HasMajorGridlines = False

.HasMinorGridlines = False

End With

With ActiveChart. Axes (xlValue)

.HasMajorGridlines = False

.HasMinorGridlines = False

End With

ActiveChart.HasLegend = False

ActiveChart.HasDataTable = False

ActiveChart.Export Filename:=CurDir + «Grafic_func.gif», FilterName:="GIF"

ActiveSheet.ChartObjects.Delete

Worksheets (1).UsedRange.Clear

Image1.Picture = LoadPicture (CurDir + «Grafic_func.gif») 'загружаем в Image1 файл с графиком

Image1.Visible = True

CommandButton5.Enabled = False

CommandButton4.Enabled = True

End Sub

Public Function f (x As Double) As Double 'нахождение значения функции

f = x ^ 3 — x — 0.3

End Function

Private Sub TextBox1_KeyPress (ByVal KeyAscii As MSForms. ReturnInteger) 'Проверка ввода

If KeyAscii > 26 Then

If InStr (number, Chr (KeyAscii)) = 0 Or (InStr (TextBox1.Text, «,») > 0 And Chr (KeyAscii) = «,») Or (TextBox1.SelStart > 0 And InStr (sign, Chr (KeyAscii)) > 0) Then

KeyAscii = 0

End If

End If

End Sub

Private Sub TextBox2_KeyPress (ByVal KeyAscii As MSForms. ReturnInteger) 'Проверка ввода

If KeyAscii > 26 Then

If InStr (number, Chr (KeyAscii)) = 0 Or (InStr (TextBox2.Text, «,») > 0 And Chr (KeyAscii) = «,») Or (TextBox2.SelStart > 0 And InStr (sign, Chr (KeyAscii)) > 0) Then

KeyAscii = 0

End If

End If

End Sub

Private Sub UserForm_QueryClose (Cancel As Integer, CloseMode As Integer) 'Закрытие формы

Select Case MsgBox («Закрыть окно?», vbYesNo + vbQuestion, «Завершение работы»)

Case vbYes

Cancel = 0

Application.Quit

Case vbNo

Cancel = -1

End Select

End Sub

4 Тестирование программного модуля Найдем корень уравнения. Нажмем на кнопку «Найти корни». После этого появится результат и промежуточные вычисления.

Рисунок 8. Закладка «Вычисления».

Рисунок 9. График функции.

Для проверки корня, построим график функции на отрезке [1,1.3] (рис. 9)

Заключение

Целью данной курсовой работы является разработка программного модуля для нахождения методом хорд корня уравнения x3 — x — 0.3 = 0 с точностью до 0,001.

Тестирование показало, что результаты, полученные разработанным программным модулем, соответствуют теоретическим расчётам (это подтверждает и график). В программе присутствует обработка ошибок. При вводе ошибочные данные игнорируются, а при отсутствии введенных данных выдаётся сообщение об ошибке. Курсовая выполнена в полном объеме и в соответствии с заданием.

Список использованных источников

1 Биллинг В. А. VBA и Office 2000. Офисное программирование. — М.: «Русская редакция», 1999.

2 Гарнаев Ю. А. Использование MS Excel и VBA в экономике и финансах. — СПб: БХВ — Санкт-Петербург, 2002.

3 Гарнаев Ю. А. самоучитель VBA. — СПб: БХВ — Санкт-Петербург, 2002.

4 Васильев А. VBA в Office 2000: учебный курс — СПб: Питер, 2002.

5 Кузьменков В. Г. VBA 2002. — М.: Издательство БИНОМ, 2002.

6 MS Office XP: Разработка приложений/Под ред. Ф. А. Новикова — СПб: БХВ — Санкт-Петербург, 2003.

Показать весь текст
Заполнить форму текущей работой