Тема курсовой работы
Вид материала | Документы |
СодержаниеИсходные данные Результаты расчета Контрольный пример 2.1 Блок-схема алгоритма функции Calculate(метод хорд) Копии экранных форм программы |
- Методические указания по выполнению курсовой работы 11 Тема курсовой работы, 211.19kb.
- Методические рекомендации по организации и защите курсовой работы по дисциплине для, 794.15kb.
- Требования к написанию курсовой работы, 54.49kb.
- Методические указания к выполнению курсовой работы по дисциплине " информационные технологии, 233.79kb.
- 1. составление плана курсовой работы, 485.55kb.
- О. А. Иванова Методические указания по выполнению курсовых работ для студентов всех, 314.38kb.
- Учебно-методическое пособие содержит следующие структурные разделы: введение, цели, 335.07kb.
- Методические рекомендации по написанию курсовой работы, 95.34kb.
- Рекомендации по написанию Курсовой работы При выполнении данной Курсовой работы используйте, 92.33kb.
- Рекомендации по написанию Курсовой работы При выполнении данной Курсовой работы используйте, 80.88kb.
Тема курсовой работы
Метод хорд
Постановка задачи
Вычислить корень уравнения на заданном отрезке с точностью , используя метод хорд.
Цель работы
Изучить метод нахождения корней уравнений методом хорд. Составить программу расчета корней уравнения методом хорд.
Исходные данные
Функция .
Начальные приближения , .
Значения параметра могут варьироваться в интервале с шагом 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. Вычисленные значения соответствуют действительности.
Описание алгоритма в псевдокодах
- Вводим интервал [a, b]
- Выбираем значение параметра s
- Проверяем правильность введённых данных
- Если данные введены неправильно, то выводится сообщение об ошибке.
- Вычисляем корень используя метод хорд.
- Строим график.
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
Копии экранных форм программы
Список использованных источников
- Дэвид Дж.Луенбергер. Информатика. – «Техносфера», Москва, 2008г.
- ссылка скрыта.
- Кнут Д. Искусство программирования для ЭВМ. Т.1. Основные алгоритмы. – М.: Мир, 1976 г.
- Вирт Н. Алгоритмы+структуры данных = программы. М.: Мир, 1985 г.
- Линке М. Visual Basic 5. Справочник: Пер. с нем. – М.: ЗАО «Издательство БИНОМ», 1998 г.
- Шмидт В. Visual Basic 5.0. – М.: АБФ, 1997 г.
- Крис Паппас Visual С ++ 6 «Ирина», ВНV, – Киев 2000 г.
- Глаголев В.Б. Персональный сайт «Информатика» (ссылка скрыта).
- Шевченко А.Г. Сетевой обучающий курс «Основные информационные ресурсы WWW» (ссылка скрыта).
- Программа Visual Basic.