Тема курсовой работы

Вид материалаДокументы

Содержание


Исходные данные
Результаты расчета
Контрольный пример
2.1 Блок-схема алгоритма функции Calculate(метод хорд)
Копии экранных форм программы
Подобный материал:
Тема курсовой работы

Метод хорд

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

Вычислить корень уравнения  на заданном отрезке  с точностью , используя метод хорд.

Цель работы

Изучить метод нахождения корней уравнений методом хорд. Составить программу расчета корней уравнения  методом хорд.

Исходные данные

Функция .

Начальные приближения , .

Значения параметра  могут варьироваться в интервале  с шагом 1.

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

Значение функции на заданном отрезке. График функции в соответствующем интервале.

Математическая модель (краткая теория)

Метод хорд – итерационный метод нахождения корня уравнения.

Этот метод применяется при решении уравнений вида , если корень уравнения отделён, т.е.  и выполняются условия:

1)  (функция  принимает значения разных знаков на концах отрезка );

2) производная  сохраняет знак на отрезке  (функция  либо возрастает, либо убывает на отрезке).

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

В зависимости от того, лежат ли точки  и  по разные стороны от корня  или же по одну и ту же сторону, получаем чертежи (рис.1).

Рис.1 Построение приближения по методу хорд: два случая.

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

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

.

Решая уравнение , находим

, то есть . (1)

Заметим, что величина  может рассматриваться как разностное приближение для производной  в точке . Тем самым полученная формула (1) – это разностный аналог итерационной формулы метода Ньютона.

Имеются две разновидности применения формулы (1).

Первая разновидность:

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

Вторая разновидность:

называется методом ложного положения. Предположим, что корень  отделён на отрезке между  и , то есть значения и  – разных знаков. После вычисления  по формуле (1) на очередном, -м, этапе из двух отрезков: между  и  и между  и  – выбирают тот, в концах которого функция  принимает значения разных знаков. Если это отрезок между  и , то производят перенумерацию предыдущих приближений, то есть полагают  равным , а затем повторяют вычисления по формуле (1). Этим достигается, что при любом  корень  располагается на отрезке между  и , так что при выполнении условия , вычисления можно прекратить и взять приближённое значение корня равным . При этом гарантируется, что будет выполнено неравенство , то есть корень будет определён с нужной точностью.

Результаты расчета

При вычислении методом хорд функции  в интервале ,  с параметром в интервале  с шагом 1 получены значения, представленные в таблице

S

1

2

3

X

1

0,25

0,209064

Контрольный пример

Для оценки правильности полученный алгоритм и составленную программу проверяем на тестовом примере. В качестве примера берём интервал [-1; 0,7]. Полученные значения представлены в таблице:


S

1

2

x

1

0,25


Все вычисления были проверены в MS Excel. Вычисленные значения соответствуют действительности.

Описание алгоритма в псевдокодах
  1. Вводим интервал [a, b]
  2. Выбираем значение параметра s
  3. Проверяем правильность введённых данных
  4. Если данные введены неправильно, то выводится сообщение об ошибке.
  5. Вычисляем корень используя метод хорд.
  6. Строим график.

2. Блок-схема (Основной алгоритм):



2.1 Блок-схема алгоритма функции Calculate(метод хорд):



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

Private Sub Form_Load()

cbx_s.AddItem ("1")

'Добавляем элементы S в CheckBox

cbx_s.AddItem ("2")

cbx_s.AddItem ("3")

cbx_s.ListIndex = 0

'Выбираем первым элемент 0

End Sub


Private Function func(x As Variant) As Double

'Вычисление значения функции

func = s * x - (Cos(pi * x) * Cos(pi * x))

End Function


Private Sub Draw()

picGraph.Cls

'Задание масштаба

picGraph.Scale (-3, 2)-(3, -2)

'Построение графика функции

For sngX = -3 To 3 Step 0.001

picGraph.PSet (sngX, func(sngX))

Next sngX

'Ось Х

picGraph.Line (-3, 0)-(3, 0)

For bytI = -3 To 3

picGraph.PSet (bytI, 0)

picGraph.Print bytI

Next bytI

'Ось Y

picGraph.Line (0, 2)-(0, -2)

For bytI = -2 To 2

picGraph.PSet (0, bytI)

picGraph.Print bytI

Next bytI

End Sub


Private Function Calculate(a As Variant, b As Variant) As Double

'Метод хорд

Dim eps As Double

eps = 0.0000001

s = cbx_s.Text

While (Abs(b - a) > eps)

'Проверяем достигнута ли точность

a = b - (b - a) * func(b) / (func(b) - func(a))

'новое значение а

b = a - (a - b) * func(a) / (func(a) - func(b))

'новое значение b

Wend

Calculate = b

'Возвращаем результат вычислений

End Function


Private Sub btnStart_Click()

Dim a As Double

Dim b As Double

On Error GoTo ErrorHandler

'Если ошибка(мы ввели буквы вместо цифр или "." вместо ",") то перейдем на метку ErrorHandler:

a = txtA.Text

b = txtB.Text

If a > b Then

'Проверка на корректность начальных значений

MsgBox "'A' не может быть больше 'B'", , "Error"

ElseIf a < -3 Then

MsgBox "'A' не может быть меньше -3", , "Error"

ElseIf a > 0 Then

MsgBox "'A' не может быть больше 0", , "Error"

ElseIf b > 3 Then

MsgBox "'B' не может быть больше 3", , "Error"

ElseIf b < 0 Then

MsgBox "'B' не может быть меньше 0", , "Error"

Else

'Если значения корректны, считаем и рисуем

lblResult.Caption = Format(Calculate(a, b), "0.000000")

'Вывод результата в заданном формате

Draw

'Рисуем график

End If

Exit Sub

ErrorHandler:

'Если произошла ошибка переходим сюда

MsgBox "Введите другие границы", , "Error"

End Sub


Private Sub mnuAutor_Click()

frmAutor.Show

End Sub


Private Sub mnuProgram_Click()

frmProgram.Show

End Sub


Private Sub mnuSave_Click()

Open "D:\example.txt" For Output As #1

Print #1, lblResult.Caption

Close #1

Print "Ваши данные в файле example.txt на диске D"

End Sub


'при нажатии мыши пишет значения x и y

Private Sub picGraph_MouseUp(Button As Integer, Shift As Integer, x As Single, F As Single)

picGraph.PSet (x, F)

picGraph.ForeColor = vbRed

picGraph.Print "x="; x; "F(x)="; F

End Sub

Копии экранных форм программы




Список использованных источников
  1. Дэвид Дж.Луенбергер. Информатика. – «Техносфера», Москва, 2008г.
  2. ссылка скрыта.
  3. Кнут Д. Искусство программирования для ЭВМ. Т.1. Основные алгоритмы. – М.: Мир, 1976 г.
  4. Вирт Н. Алгоритмы+структуры данных = программы. М.: Мир, 1985 г.
  5. Линке М. Visual Basic 5. Справочник: Пер. с нем. – М.: ЗАО «Издательство БИНОМ», 1998 г.
  6. Шмидт В. Visual Basic 5.0. – М.: АБФ, 1997 г.
  7. Крис Паппас Visual С ++ 6 «Ирина», ВНV, – Киев 2000 г.
  8. Глаголев В.Б. Персональный сайт «Информатика» (ссылка скрыта).
  9. Шевченко А.Г. Сетевой обучающий курс «Основные информационные ресурсы WWW» (ссылка скрыта).
  10. Программа Visual Basic.