Top.Mail.Ru
Ответы

Помогите, пожалуйста Сделать задание в программе Python Вообще дисциплина "Численные методы"

Составить схему алгоритма и программу для вычисления приближенного значения корня указанными итерационными методами с точностью ε=0,0001. Предусмотреть реализацию счетчика итераций для каждого метода.

x4-8x3-2x2+16x-3 = 0 - Схема половинного деления
ln x- 1/(1+𝑥2 ) = 0 - Метод простых итераций

По дате
По Рейтингу
Аватар пользователя
Новичок

Посмотрите на график функции
y(x) = ㏑ x - 1/(1+x²), нули которой нужно найти:

Единственный нуль функций лежит в интервале (0;2). Переписываем уравнение в виде:
x = exp[1/(1+x²)]
Средину интервала х=1 берём за начальное приближение, пишем код:

12345678
 from math import exp 
e =1.0; x, X = 10, [10] 
for i in range(1, 1000):
    x = exp(e / (e + x**2))
    if x in X: break
    else:
        X.append(x)
        print('%10d)%22.16f' % (i, x)) 

, запускаем программу и получаем результаты:
Даже если взять начальный х поближе к корню (например, 1.4013) всё равно получаются десятки итераций, в то время как в методе касательных Ньютона - всего то несколько.

Для решения уравнения методом дихотомии надо откуда-то брать начальный диапазон каждого его корня, которые сначала надо разделить. Посмотрите на график полинома x⁴-8x³-2x²+16x-3:

У него четыре вещественных нуля. Для каждого нуля этого полинома надо тщательно подобрать начальный диапазон значений, в котором все эти нули расположены, причём по одному в каждом. Если это ещё актуально, то могу Вам написа́ть код к решению указанного уравнения методом половинного деления - это нетрудно. Пишите!