Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1 Лаборторная работа ВМ

.docx
Скачиваний:
0
Добавлен:
02.01.2024
Размер:
288.24 Кб
Скачать

Федеральное агентство связи Ордена

Трудового Красного Знамени

федеральное бюджетное образовательное учреждение высшего образования

«Московский Технический Университет Связи и Информатики»

(МТУСИ)

Кафедра Информатики

Предмет: Вычислительные модели

Лабораторная работа № 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