Решение кубического уравнения методом хорд, Python
Добрый день
Решаю лабораторную работу по числовым методам.
Столкнулся с такой проблемой:
Функции для нахождения корней работают, а вот функция для нахождения промежутков - нет, не смотря на то, что согласно словам преподавателя, она должна работать. Код прокомментирован, проблемная функция выделена. Посоветуйте, пожалуйста, как ее заменить/изменить
Добрый день
Решаю лабораторную работу по числовым методам.
Столкнулся с такой проблемой:
Функции для нахождения корней работают, а вот функция для нахождения промежутков - нет, не смотря на то, что согласно словам преподавателя, она должна работать. Код прокомментирован, проблемная функция выделена. Посоветуйте, пожалуйста, как ее заменить/изменить
Код:
# -*- coding: cp1251 -*-
#Нужная нам функция#
def fun(x):
return float(x**3 + 4*(x**2) - 19*x + 14)
#Формула для метода хорд#
def promice(a,b):
return a+(fun(b)*(b-a))/(fun(b)-fun(a))
[COLOR="Red"]#Функция для подбора промежутков (!) НЕРАБОЧАЯ (!)#
def found():
#Cписок для хранения промежутков#
loop = []
for i in range(-1000, 1000, 1 ):
if float(fun(i)) * float(fun(i - 1)) < 0:
loop.append(i)
return loop[/COLOR]
#Функция, которая находит корни уравнения#
def root(a, b, eps):
while abs(b-a) > eps:
a = promice(a,b)
b = promice(b,a)
loot = b
return loot
#Функция, которая выводит на экран корни уравнения по заданным помежуткам#
def fin(eps):
print "Проводится поиск промежутков..."
loop = found()
print loop
#Переменная для "чередования" промежутков#
i = 0;
#Количество промежутков#
p = 3
##eps = float(raw_input("Epsilon: "))
while p != 0:
a = float(loop[i])
b = float(loop[i+1])
i += 2
print root(a, b, eps)
p += -1
print fin(0.01)