Комбинированный метод решения уравнений с одним неизвестным

Страницы работы

Содержание работы

ФИО, группа, дата

Задание №1

Комбинированный метод решения уравнений с одним неизвестным

Вариант №0

Задание: Комбинированным методом уточнить корень уравнения

f(x) ≡ sin(x) – x + 0.25 = 0  на отрезке [a;b] = [1.1;1.3] с погрешностью ε = 0.0001.

Создать  приложение,  которое может уточнять корень  уравнения.  Алгоритм                уточнения можно                                       посмотреть                                  в лекциях.

Примерный вид приложения показан ниже

На форме разместить всего два объекта: командную кнопку «вычислить» и командную кнопку «выход».

В таблице №1 перечислены объекты, их свойства и значения, которые устанавливаются первоначально.

Таблица №1


№       Объект

1         Форма (Form)


Свойство

Name

Caption


Значение

frmKombiM1

Комбинированный метод (случай f(b)*f’’(b)>0)


2         Кнопка (CommandButton)     Name

Caption

3         Кнопка (CommandButton)     Name

Caption


btnCalc

Вычислить

btnStop

Выход


Перейдя в окно кодов, в области General описать функцию, задающую уравнение

Private Function f(x)

' описание      функции, задающей      уравниние

f = Sin(x) - x + 0.25

End Function и описать производную функции f(x) 

Private Function f1(x)

' описание      функции, задающей      первую    производную     от f(x)

f1 = Cos(x) - 1

End Function

С кнопкой «Вычислить» свяжем процедуру

Private Sub btnCalc_Click()

' уточнение       корня    комбинированным      методом

' *********************************

'          f(x)=0                *

' *********************************

' случай

' *********************************

'          f(b)*f''(b) > 0             *

' *********************************



' [a,b]- отрезок         содержащий    корень     уравнения

' a1, a2 - два       последовательных        приближения     корня    по   недостатку

' b1, b2 - два       последовательных        приближения     корня    по   избытку

' hn- длина      отрезка [a,b]

' eps- погрешность

Dim a As Single, b As Single

Dim a1 As Single, a2 As Single, b1 As Single, b2 As Single

Dim hn As Single, eps As Single

Open "d:\vb\vb1\vvIn.txt" For Input As #1

Open "d:\vb\vb1\vyvOut.txt" For Output As #2

Input #1, a, b, eps

a1 = a

b1 = b

hn = b1 - a1

' собственно        уточниние

Do While Abs(hn) > eps

Print "a1="; Format(a1, "##.####"), "b1="; Format(b1, "##.####"),

Print "hn="; Format(hn, "##.####")

Print #2, "a1="; Format(a1, "##.####"), "b1="; Format(b1, "##.####"),

Print #2, "hn="; Format(hn, "##.####")

' метод      хорд

a2 = a1 - (f(a1) / (f(b1) - f(a1))) * (b1 - a1)

' метод      касательных

b2 = b1 - f(b1) / f1(b1)

' запоминаем       отрезок      для    следующего    шага

a1 = a2

b1 = b2

hn = b1 - a1

Loop

xk = (a1 + b1) / 2

Print "корень xk="; Format(xk, "##.####");

Print "  плюс/минус"; eps

Print #2, "корень xk="; Format(xk, "##.####");

Print #2, "  плюс/минус"; eps

End Sub

С кнопкой «Выход» свяжем процедуру

Private Sub btnStop_Click()

End

End Sub

Сохранить форму у себя на диске N  папке n:\numMtd\kombiM\ в файле под именем kombiM1.frm  и проект под именем proKombiM1.vbp

Прежде чем запускать проект на исполнение,  Блокнотом создать файл исходных данных

1.1 1.3 0.0001 и сохранить его в папке n:\numMtd\mpi\ под именем vvIn.txt.

Запустить проект, показать его работу преподу. В MS Word’e написать шапку, задание, собрать все процедуры, описание функции, файл исходных данных и файл результатов расчета

a1=1,1        b1=1,3        hn=,2

a1=1,1646     b1=1,182      hn=,0174

a1=1,1712     b1=1,1713     hn=,0001 корень xk=1,1712  плюс/минус 0,0001  и вывести все это на печать.


Для случая  f(a)*f’’(a)>0 приведем только код программы, связанный кнопкой  «Вычислить», т.к. все решается аналогично

Private Function f(x)

' описание      функции, задающей      уравниние

f = Cos(x) - x + 3.5

End Function

Private Function f1(x)

' описание      функции, задающей      первую    производную     от f(x)

f1 = -Sin(x) - 1

End Function

Private Sub btnCalc_Click()

' уточнение       корня    комбинированным      методом

'          f(x)=0                *

' случай

'          f(a)*f''(a) > 0             *

' [a,b]- отрезок         содержащий    корень     уравнения

' a1, a2 - два       последовательных        приближения     корня    по   недостатку

' b1, b2 - два       последовательных        приближения     корня    по   избытку

' hn- длина      отрезка [a,b]

' eps- погрешность

Dim a As Single, b As Single

Dim a1 As Single, a2 As Single, b1 As Single, b2 As Single

Dim hn As Single, eps As Single

Open "d:\vb\vb2\vvIn.txt" For Input As #1

Open "d:\vb\vb2\vyvOut.txt" For Output As #2

Input #1, a, b, eps

a1 = a

b1 = b

hn = b1 - a1

' собственно        уточниние

Do While Abs(hn) > eps

Print "a1="; Format(a1, "##.####"), "b1="; Format(b1, "##.####"),

Print "hn="; Format(hn, "##.####")

Print #2, "a1="; Format(a1, "##.####"), "b1="; Format(b1, "##.####"),

Print #2, "hn="; Format(hn, "##.####")

' метод      касательных

a2 = a1 - f(a1) / f1(a1)

' метод      хорд

b2 = b1 - (f(b1) / (f(b1) - f(a1))) * (b1 - a1)

' запоминаем       отрезок      для    следующего    шага

a1 = a2

b1 = b2

hn = b1 - a1

Loop

xk = (a1 + b1) / 2

Print "корень xk="; Format(xk, "##.####");

Print "  плюс/минус"; eps

Print #2, "корень xk="; Format(xk, "##.####");

Print #2, "  плюс/минус"; eps

End Sub

Прежде чем запускать проект на исполнение,  Блокнотом создать файл исходных данных

2.5,.2.7, 0.0001 и сохранить его в папке n:\numMtd\kombiM2\ под именем vvIn.txt.

Запустить проект, показать его работу преподу. В MS Word’e написать шапку, задание, собрать все процедуры, описание функции, файл исходных данных и файл результатов расчета

a1=2,5        b1=2,7        hn=,2

a1=2,6244     b1=2,6313     hn=,0069 корень xk=2,6287  плюс/минус 0,0001  и вывести все это на печать.

Похожие материалы

Информация о работе

Тип:
Контрольные работы
Размер файла:
85 Kb
Скачали:
0