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

Лаба 1. Вариант 13

.docx
Скачиваний:
1
Добавлен:
20.04.2024
Размер:
501.91 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное

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

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

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

Отчет по лабораторной работе №1

По дисциплине «Численные методы»

На тему:

«Методы решения нелинейных уравнений»

Вариант №13

Выполнила студент группы:

Вечный студент

Проверил:

Москва 2024 г

Содержание

1. Задание 2

2. Индивидуальное задание: (уравнение, методы решения). 2

3. Отделение корней. 3

4. Метод половинного деления 4

4.2 Блок схема 5

5. Метод хорд 5

1. Задание

1. Выбрать индивидуальное задание по указанию преподавателя из табл. 1.2-1:

· нелинейное уравнение;

· метод решения нелинейного уравнения для «ручного расчета»;

· метод решения нелинейного уравнения для «расчета на ПК».

2. Отделить корни уравнения.

3. Провести исследование нелинейного уравнения для его решения.

· проверить выполнение условий сходимости вычислительного процесса, в случае расходящегося процесса – сделать необходимые преобразования для обеспечения сходимости;

· выбрать начальное приближение;

· сформулировать условия окончания этапа уточнения корня.

4. Провести «ручной расчет» трех итераций.

5. Оценить погрешность результата «ручного расчета».

6. Составить схему алгоритма, написать программу для решения нелинейных уравнений для «расчета на ПК» и провести контрольное тестирование программы, воспользовавшись исходными данными и результатами примера из п.п.1.2-1.5.

7. Решить нелинейное уравнение с точностью , воспользовавшись написанной программой для «расчета на ПК».

8. Построить зависимость числа итераций от заданной точности –n(E).

2. Индивидуальное задание: (уравнение, методы решения).

уравнение 0.1x2 – x ln(x) = 0 ;

t1 – половинного деления, p4 – хорд

t– номер метода для «ручного расчета» p – номер метода для «расчета на ПК»;.

Номера методов: 1 – половинное деление;2 – итерации;3 – Ньютона; 4

– хорд.

3. Отделение корней.

Произведем отделение корней при помощи программы MathCad 15. (рисунки 1-2)

Рисунок 1

Рисунок 2

3.1. Вывод:

Так как на отрезке [1,11;1,14] функция f(x) меняет знак ( f(0) × f(1) < 0 ) и

монотонна (f’(x)<0), то условие сходимости выполняется

4. Метод половинного деления

Рисунок 3

М етод половинного деления (метод бисекции) является одним из простейших численных методов решения уравнений. Он основан на теореме о промежуточном значении.

Принцип метода(выполнение показано на рисунке 3): 1. Выбираются две точки a и b такие, что функция f(a) и f(b) имеют разные знаки. 2. Находится середина отрезка c = \frac{a + b}{2} 3. Выбирается тот из отрезков [a, c] или [c, b], на концах которого функция принимает значения разных знаков. 4. Процесс повторяется до тех пор, пока не будет достигнута требуемая точность.

4.1. Погрешность

численного решения нелинейных уравнений

Оценим погрешность результата, полученного после 3-х итераций

|b3 −a3| = 0.03

Рисунок 4

4.2 Блок схема

Блок схема метода показана на рисунке 4.

5. Метод хорд

1. Задать начальный интервал [a, b] и начальное приближение x_0. 2. Вычислить значение функции в точках f(a) и f(b). 3. Вычислить следующее приближение x_{n+1} по формуле:

x_{n+1} = a - \frac{f(a) \cdot (b - a)}{f(b) - f(a)}. 4. Если |x_{n+1} - x_n| < \varepsilon, где \varepsilon - требуемая точность, то корень найден, иначе заменить a или b на x_{n+1} в зависимости от знака f(a) \cdot f(x_{n+1}) и вернуться к шагу 2.

Метод выполнено на языке программирования Python:

import math

def F(x):

return 0.1 * math.pow(x, 2) - x * math.log(x)

def F1(x):

res=0.2 * x - math.log(x) - 1

print(res)

return res

def Method(a, b):

try:

x0 = (a + b) / 2

xn = F(x0)

xn1 = xn - F(xn) / F1(xn)

while abs(xn1 - xn) > math.pow(10, -5):

xn = xn1 # вот так надо было

xn1 = xn - F(xn) / F1(xn)

print(xn1)

return xn1

except ValueError:

print("Value not invalidate")

if __name__ == '__main__':

x=float(input())

a=float(input())

b=float(input())

F(x)

F1(x)

Method(a, b)

Соседние файлы в предмете Численные методы