Перейти к содержимому

Floating point division by zero как исправить

  • автор:

Ошибка ZeroDivisionError: division by zero

Можете помощь с ошибкой.. Происходить деления на ноль, и происходить исключения. Вот сама ошибка.

Traceback (most recent call last): File "c:/Users/artem/Desktop/arrrr.py", line 46, in y = fp(x) File "c:/Users/artem/Desktop/arrrr.py", line 10, in fp return 6 * x - 36 / x ** 4 ZeroDivisionError: division by zero 

Вот сам код

import numpy as n import matplotlib.pyplot as pl def f(x): return 3 * x ** 2 + 12 / x ** 3 - 5 def fp(x): return 6 * x - 36 / x ** 4 def fpp(x): return 6 * (1 + 24 / x ** 5) x5 = n.linspace(0.5, 2.5, 100) F1 = f(x5) F2 = fp(x5) pl.plot(x5, F1, 'g--', label='Fun1') pl.plot(x5, F2, 'g--', label='Fun2') pl.grid() pl.legend() pl.show() print('метод Ньютона-Рафсона') x1 = 1 e = 1e-3 n = 1 x2 = x1 - fp(x1) / fpp(x1) while abs(fp(x2) > e): x1 = x2 x2 = x1 - fp(x1) / fpp(x1) n += 1 print('n =', n, 'f =', f(x2), 'x =', x2) print('метод середньої точки (пошук Больцано)') n = 0 x = 0 d = 1 e = 1e-3 L = x - d R = x + d y = fp(x) while (fp(L) * y) > 0 and (fp(R) * y) > 0: L = L - d R = R + d if (fp(L) * y) < 0: R = x else: L = x y1 = fp(L) y2 = fp(R) if y1 * y2 >= 0: print('Корнів немає') else: n = 0 x = (L + R) / 2 y3 = fp(x) while abs(y3) > e: x = (L + R) / 2 y3 = fp(x) if y1 * y3 < 0: R = x else: L = x n += 1 print('n =', n, 'f =', f(x), 'x =', x) print('метод січних (метод хорд)') x = 0 d = 1 e = 1e-3 n = 0 L = x - d R = x + d y = fp(x) while fp(L) * y >0 and fp(R) * y > 0: L = L - d R = R + d if fp(L) * y < 0: R = x y1 = fp(L) y2 = fp(R) else: L = x x = R - fp(R) * (R - L) / (fp(R) - fp(L)) n = 1 y3 = fp(x) while abs(y3) >e: if y1 * y3 < 0: R = x else: L = x x = R - fp(R) * (R - L) / (fp(R) - fp(L)) y3 = fp(x) y1 = fp(L) y2 = fp(R) n += 1 print('n =', n, 'f =', f(x), 'x =', x) # FIXME PLEASE. print('метод оптимізації з використанням кубічної апроксимації') x = 0 d = 1 e1 = 1e-3 e2 = 1e-3 y = fp(x) L = x - d R = x + d while (fp(L) * y) >0 and (fp(R) * y) > 0: L = L - d R = R + d if (fp(L) * y) < 0: R = x else: L = x n = 0 print('n =', n, 'f =', f(x), 'x =', x) while abs(f(x)) >e1 or abs(fp(x)) > e2: z = 3 * (f(L) - f(R) / (R - L)) + fp(L) + fp(R) b = (z ** 2 - fp(L) * fp(R)) ** (1 / 2) m = (fp(R) + b - z) / (fp(R) - fp(L) + 2 * b) print('n =', n, 'f =', f(x), 'x =', x) if m < 0: x = R else: if m >1: x = L else: x = R - m * (R - L) while f(x) > f(L): x = x - 0.5 * (x - L) print('n =', n, 'перехід до наступної точки') if fp(L) * fp(x) < 0: R = x else: L = x n += 1 print('n =', n, 'f =', f(x), 'x =', x) 

Ошибка "Floating point division by zero" в УПРЗА "Эколог"

При открытии графического представления результатов расчёта появляется следующее сообщение:

Floating point division by zero

Причины

Скорее всего, расчёт производился с учётом влияния застройки. При этом:

  1. Один или несколько источников находятся внутри здания (слой "Застройка")
  2. Объекты застройки пересекаются

Решение

  • Проверить и исправить координаты расположения источников и застройки таким образом, чтобы они не пересекались друг с другом.
  • Установить следующую настройку в операционной системе:
    • изменить разделитель целой и дробной части с "," на ".". Это можно сделать в пункте меню "Панель управления" - "Язык и региональные стандарты" - "Региональные параметры" - "Настройка", закладка "Числа".

    Код Python выдаёт ошибку ZeroDivisionError: float division by zero. И я никак не могу это обойти.

    Я писал код для калькулятора индекса массы тела. Но выскочила ошибка которую я 2 дня не могу исправить. Суть ошибки в том, что при вводе 0 в одну из переменных выскакивает выше упомянутая ошибка.

    Код.
    from colorama import init
    from colorama import Fore, Back, Style

    print("здравствуйте! Это калькулятор индекса массы тела")

    a= float(input ("введи вес в кг: "))

    if a print("вы не ввели число")
    a= float(input ("введи вес в кг: "))

    b= float(input ("введи рост в метрах: "))
    if b print("вы не ввели число")
    b= float(input ("введи рост в метрах: "))

    if b == 0:
    print("Упс, где-то ошибачка. Проверьте введённые числа")
    print("вес " + str(a) + "рост" + str(b))
    input

    if c print("Упс, где то ошибочка. ваш индекс массы тела = 1")

    elif c print(str(c) + " Ярко выроженный дефицит массы тела")

    elif c print(str(c) + " Дефицит массы тела")

    elif c print(str(c) + " Норма")

    elif c print(str(c) + " Предожирение")

    elif c print(str(c) + " Ожирение 1 степени")

    elif c print(str(c) + " Ожирение 2 степени")

    elif c >= (40):
    print(str(c)+"Ожирение 3 степени")

    input ("exit")

    Лучший ответ

    Потому, что при вводе 0 у Вас _продолжаются_ вычисления. А надо было выходить, а не просто вывести сообщение.

    c = a / (b*b) при b = 0 c = a / 0 => ошибка деления на 0.
    Ну и там ещё дальше есть что исправить. Возможно что-то mail.ru съел.

    Николай БессмертныйУченик (96) 3 года назад
    Я знаю. Но как это обойти?
    . Гений (84806) Николай Бессмертный, return или sys.exit() н-р
    Остальные ответы

    d=[
    " Ярко выраженный дефицит массы тела",
    " Дефицит массы тела",
    " Норма",
    " Предожирение",
    " Ожирение 1 степени",
    " Ожирение 2 степени",
    " Ожирение 3 степени"
    ]

    И русский язык "подтяни". ошибачка. выроженный.

    Ошибка "Floating point division by zero"

    - - - - -

    Добрый день!
    Пожалуйста, помогите разобраться почему программа не хочет считать систему и выдает ошибку "Floating point division by zero". Считаю однотрубную систему, если меняю на двухтрубную, то расчет выдает, а в случае однотрубной системы не считает. Чем может быть вызвана данная ошибка?

    #2 admin

    Отправлено 09 Март 2011 - 16:34

    Просмотр сообщения

    Ольга14 (09 Март 2011 - 15:31) писал:

    Пожалуйста, помогите разобраться почему программа не хочет считать систему и выдает ошибку "Floating point division by zero". Считаю однотрубную систему, если меняю на двухтрубную, то расчет выдает, а в случае однотрубной системы не считает. Чем может быть вызвана данная ошибка?

    Деление на ноль.
    Где-то в исходных данных закралась ошибка, Ваш расчёт приложите или вышлите нам, проверим, подскажем, научим программу конкретней сообщать о проблеме.

    #3 Ольга14

    Отправлено 10 Март 2011 - 09:18

    Просмотр сообщения

    admin (09 Март 2011 - 16:34) писал:

    Деление на ноль.
    Где-то в исходных данных закралась ошибка, Ваш расчёт приложите или вышлите нам, проверим, подскажем, научим программу конкретней сообщать о проблеме.

    Спасибо за участие. Прикрепляю свой файл для просмотра.

    Прикрепленные файлы

    #4 admin

    Отправлено 10 Март 2011 - 11:59

    Просмотр сообщения

    Ольга14 (10 Март 2011 - 09:18) писал:

    Спасибо за участие. Прикрепляю свой файл для просмотра.

    Нормально посчитался Ваш файл и как однотрубка и как двухтрубка. Уточните версию программы с которой Вы работаете.
    И пришлите пож. ещё файлы обмена которые прикреплены к этому расчёту, может там что-то не то.

    #5 Ольга14

    Отправлено 10 Март 2011 - 12:18

    Просмотр сообщения

    admin (10 Март 2011 - 11:59) писал:

    Нормально посчитался Ваш файл и как однотрубка и как двухтрубка. Уточните версию программы с которой Вы работаете.
    И пришлите пож. ещё файлы обмена которые прикреплены к этому расчёту, может там что-то не то.

    Вроде бы версия 2007 года у нас. Прикрепляю файлы обмена еще.

    Просмотр сообщения

    admin (10 Март 2011 - 11:59) писал:

    Нормально посчитался Ваш файл и как однотрубка и как двухтрубка. Уточните версию программы с которой Вы работаете.
    И пришлите пож. ещё файлы обмена которые прикреплены к этому расчёту, может там что-то не то.

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

    Прикрепленные файлы

    #6 admin

    Отправлено 10 Март 2011 - 15:51

    Просмотр сообщения

    Ольга14 (10 Март 2011 - 12:18) писал:

    Вроде бы версия 2007 года у нас. Прикрепляю файлы обмена еще.
    Подскажите, пожалуйста, чтобы получить более свежию версию программы нам нужно заново ее покупать или же можно сделать обновления? Спасибо.

    Эти файлы тоже нормально просчитались, без ошибок. чуть позже попробую на версии 2007 года.
    В течении года с момента покупки все обновления доступны бесплатно. По завершению года можно продлить ещё на год, Стоимость продления можно посчитать по ссылке http://www.potok.ru/?vs=2

    Количество пользователей, читающих эту тему: 0

    0 пользователей, 0 гостей, 0 скрытых пользователей

    Ответить цитируемым сообщениям Очистить

    1. TEPLOOV - программный комплекс для расчёта систем отопления и вентиляции
    2. → Все и всё о пакете TEPLOOV
    3. → Вопросы и ответы пользователей
    4. Privacy Policy

    • RSS поток
    • Изменить стиль
      • IP.Board
      • IP.Board (Pre 3.2)
      • IP.Board Mobile
      • light (Import)
    • Отметить все сообщения прочитанными
      • Форумы
      • Пользователи
      • Отметить все как прочтенное
    • Помощь

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *