Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2019, 23:29   #1
Esther_Habsburg
Новичок
Джуниор
 
Регистрация: 18.09.2019
Сообщений: 1
Восклицание Ошибка в методе половинного деления?

Работает не на всех промежутках, не могу понять причину - в языке только начал разбираться. Промежутки (-3; -2), (-2;0), (0;1)
Код:
E = 0.1

from math import * #Подключаем математическую библиотеку

print('Введите a, b и E') #Входные данные
a = int(float(input()))
b = int(float(input()))
e = int(float(input()))

c = (a + b)/2 #Находим х
f = c**3 + 3 * (c**2) - 3 #Функция
fa = a**3 + 3 * (a**2) - 3

while(abs(f) > e): #Цикл на проверку условия приближённости к Е

    if f * fa < 0: #Проверка знака +/-
      b = c
      c = (a + b)/2
      f = c**3 + 3 * (c**2) - 3
      print(f)
    else:
     a = c
     c = (a + b)/2
     f = c**3 + 3 * (c**2) - 3
     fa = a**3 + 3 * (a**2) - 3
     print(f)
else:
 c = (a + b)/2
 g = (b - a)/2

print('X = ' + str("%.5f" % c))  #Выходные данные
print('Погрешность равна ' + str("%.30f" % g)) # "%.5f" оставляем 5 знаков после запятой
print(f)

______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Serge_Bliznykov; 19.09.2019 в 09:29.
Esther_Habsburg вне форума Ответить с цитированием
Старый 19.09.2019, 11:12   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

1. Метод половинного деления предполагает, что на концах отрезка, внутри которого ищем корень, значения функции имеют разные знаки.

2. Проверка знака выполняется не для произведения значения функции на конце на значение функции внутри интервала, а только для значения функции внутри интервала.

3. А зачем такая конструкция?
Код:
a = int(float(input()))
b = int(float(input()))
e = int(float(input()))
4. А чем e отличается от E тебе понятно?
А чему будет равно e после ввода значения 0.005?

5. Добавь к своим знаниям порядок определения функций, способы передачи в неё параметров и возврата значений. Всё станет красивее.
Как-то так, ...

Последний раз редактировалось ViktorR; 19.09.2019 в 11:15.
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод половинного деления nightofpromises Visual C++ 3 16.06.2017 20:09
Ошибка в методе половинного деления naty7773 Помощь студентам 1 03.12.2012 21:38
Метод половинного деления qwerty55 Паскаль, Turbo Pascal, PascalABC.NET 2 28.05.2012 16:31
метод половинного деления Poli-007 Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2011 00:14
F(x) методом половинного деления akum905 Microsoft Office Excel 11 11.11.2011 18:37