
1 Лаборторная работа ЧМ
.docx
Федеральное агентство связи Ордена
Трудового Красного Знамени
федеральное бюджетное образовательное учреждение высшего образования
«Московский Технический Университет Связи и Информатики»
(МТУСИ)
Кафедра Информатики
Предмет: Вычислительные модели
Лабораторная работа № 1
Тема:
«Методы решения нелинейных уравнений»
Вариант 00
Выполнил:
Проверил(а): Величайший преподаватель
_________________
Москва 0000
1 Задание
1. Выбрать индивидуальное задание по указанию преподавателя из табл. 1.2-1:
· нелинейное уравнение;
· метод решения нелинейного уравнения для «ручного расчета»;
· метод решения нелинейного уравнения для «расчета на ПК».
2. Отделить корни уравнения.
3. Провести исследование нелинейного уравнения для его решения.
· проверить выполнение условий сходимости вычислительного процесса, в случае расходящегося процесса – сделать необходимые преобразования для обеспечения сходимости;
· выбрать начальное приближение;
· сформулировать условия окончания этапа уточнения корня.
4. Провести «ручной расчет» трех итераций.
5. Оценить погрешность результата «ручного расчета».
6. Составить схему алгоритма, написать программу для решения нелинейных уравнений для «расчета на ПК» и провести контрольное тестирование программы, воспользовавшись исходными данными и результатами примера из п.п.1.2-1.5.
7. Решить нелинейное уравнение с точностью , воспользовавшись написанной программой для «расчета на ПК».
8. Построить зависимость числа итераций от заданной точности –n(E).
1.Индивидуальное задание: (уравнение, методы решения).
t4– хорд ,p1-половинное деление
t – номер метода для «расчета на ПК»; p– номер метода для «ручного расчета». Номера методов: 1 – половинное деление;2 – итерации;3 – Ньютона; 4 – хорд.
2 Отделение корней.
Произведем отделение корней при помощи программы MathCad 15.
На интервале [-0,5;-0,3] функция имеет один корень, поэтому мы можем использовать этот интервал для расчётов и в этом случае f’(x) и f”(x) непрерывны и знакопостоянны и f(-0,5)*f(-0,3)<0
3 Ручной расчёт.
Произведем ручной расчёт методами половинного деления, итераций и Ньютона при помощи программы Microsoft Excel.
Погрешность после 3 итераций равно
Правая часть этой формулы в нашем случае будет равна 0.025
Исходя из этого, можно утверждать, что корень уравнения X после трех итераций методом половинного деления лежит в промежутке
-0,3625±0.025
4 Расчёт на ПК.
4.1 Программный код.
Option Strict On
Option Explicit On
Imports System.Math
Public Class Form1
Sub vvod(ByRef x As Double, ByVal t As TextBox)
x = Val(t.Text)
End Sub
Sub vivod(ByVal x As Double, ByRef t As TextBox)
t.Text = CStr(x)
End Sub
Sub vivodint(ByRef x As Integer, ByVal t As TextBox)
t.Text = CStr(x)
End Sub
Function f(ByVal x As Double) As Double 'наша функция f(x)=x-sin(1/x)
Dim fx As Double
fx = x - Sin(1 / x)
Return fx
End Function
Sub Hord_Iteraci(ByVal a As Double, ByVal b As Double,_
ByVal ee As Double, ByRef xn As Double, ByRef fnx As Double, ByRef n As Integer, ByRef lb As ListBox)
Dim x, fx, l As Double
Dim s As String = ""
s = "N" + Space(18) + "x" + Space(27) + "f(x)" +_ Space(18) + "E,погрешность" + vbNewLine
lb.Items.Add(s)
xn = a 'подвижная точка
x = b 'неподвижная точка
fx = f(x) 'Значение f(b)
fnx = f(xn) 'Значение f(a)
Do
l = xn 'x(n)
n = n + 1
xn = xn - (fnx / (fx - fnx)) * (x - xn) 'x(n+1)
fnx = f(xn) 'f(x(n+1)
s = Format(n, "00") + Space(10) + Format(xn,_ "0.000000") + Space(14) + Format(fnx, "0.000000") +_ Space(14) + Format(Abs(xn - l), "0.000000") + vbNewLine
lb.Items.Add(s)
Loop Until Abs(xn - l) < ee
End Sub
Private Sub Button1_Click(sender As System.Object, e As_ System.EventArgs) Handles Button1.Click
Dim a, b As Double 'границы отрезка
Dim ee, xn, fnx As Double
Dim n As Integer = 0
ListBox1.Items.Clear()
vvod(a, TextBox1) 'подвижная точка "в нашем случае это а"
vvod(b, TextBox2) 'неподвижная точка "в нашем случае это b"
vvod(ee, TextBox3) ' погрешность
Hord_Iteraci(a, b, ee, xn, fnx, n, ListBox1) 'процедура метод Хорд
vivod(xn, TextBox4) 'Значения корня x
vivod(fnx, TextBox5) 'Значение функции при корне f(x)
vivodint(n, TextBox6) 'количество итераций
End Sub
End Class
4.2 Результаты расчёта при точности E = 0.01, E=0.001, E = 0.0001
При погрешности 0,01
При погрешности 0,001
При погрешности 0,0001
4.3 Схемы алгоритма для процедур программы
1)схема процедуры-подпрограммы Hord_Iteraci (),
вычисления корня методом хор
2)схема процедура-функция: для вычисления значений нашей функции «x-sin(1/x)»
4.4 Результаты расчёта на ПК
4 5 Зависимость числа итераций от точности в логарифмическом масштабе
E |
0.01 |
0.001 |
0.0001 |
n(E) |
3 |
5 |
7 |