ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.01.2024
Просмотров: 30
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Федеральное агентство связи Ордена
Трудового Красного Знамени
федеральное бюджетное образовательное учреждение высшего образования
«Московский Технический Университет Связи и Информатики»
(МТУСИ)
Кафедра Информатики
Предмет: Численные методы
Лабораторная работа № 1
Тема:
«Методы решения нелинейных уравнений»
Вариант 22
Выполнил: Иван Иванов
Общее задание
-
Выбрать индивидуальное задание из табл. 1-1:
-
нелинейное уравнение; -
методы решения нелинейного уравнения для выполнения 3-х итераций;
-
Отделить корни заданного уравнения графическим и аналитическим методом с использованием средств пакета Mathcad.
-
Для каждого из заданных методов провести исследование функции нелинейного уравнения:
-
проверить выполнение условий сходимости вычислительного процесса, в случае расходящегося процесса – сделать необходимые преобразования для обеспечения сходимости; -
выбрать начальное приближение к корню; -
сформулировать условие окончания этапа уточнения корня.
-
С использованием итерационной формуле 1-го заданного методу провести расчет трех итераций с использованием средств мат. пакета. Результаты расчета свести в табл. 1-2.
-
Оценить погрешность результата после 3-х итераций.
Для 2-го заданного метода выполнить решение уравнения с точностью 10-4, создав программу, реализующую заданный метод. Произвести расчет, а результаты решений свести в табл. 1-2.
Индивидуальное задание
первый заданный метод — метод Ньютона
второй заданный метод – метод итерации
Первый этап - отделение корней
Из построенного графика функции видно, что на отрезке (0;0.625) есть один корень.
Второй этап – ручной расчет
Воспользуемся методом Ньютона.
k | Xk | f(xk) |
0 | 0 | 1 |
1 | 0.1 | 9.95*10-3 |
2 | 0.10101508097 | 9.99*10-7 |
3 | 0.10101518291 | 9.992*10-15 |
Третий этап – расчет с использованием программы
Воспользуемся методом простых итераций
Код программы:
import math
x = float(input('Введите начальное приближение: '))
eps = float(input('Введите необходимое значение точности: '))
def f(x): #заданная функция
return 4*(x*x+1)*math.log(x, math.e)-1
def f1(x): #функция первой производной
return 8*x*math.log(x, math.e)+4*x+4/x
i = x
t = 0
n = 0
xn = x
xn1 = 0
while abs(xn1-xn) > eps:
n += 1
xn = i
t = f(xn)/f1(xn)
xn1 = xn - t
i = xn1
print("│ кол-воитераций: " + str(n) + " │ значениекорня: " + str(xn1))
break
Результат работы программы:
Введите начальное приближение: 1
Введите необходимое значение точности: 0.0001
│ кол-во итераций: 1 │ значение корня: 1.125
│ кол-во итераций: 2 │ значение корня: 1.1176051231553725
│ кол-во итераций: 3 │ значение корня: 1.1175756445147635
Вычисленное значение корня на калькуляторе: x = 1.11757564404935
Вычисленное значение корня с помощью программы:
X = 1.1175756445147635
Всего за три итерации мы достигли точности аж до 9 знака после запятой.