Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 24.11.2020
Сообщений: 206

ZeroDivisionError: float division by zero

23.12.2021, 11:58. Показов 1197. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана программа и она выдает ошибку, как исправить ?

Ошибка:
Traceback (most recent call last):
File "main.py", line 76, in <module>
P[j][m - 2] = (DI + A[m - 1] * We[m - 2]) / (B[m - 1] - A[m - 1] * V[m - 2])
ZeroDivisionError: float division by zer


---------------------------
Программа:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import math
 
M_PI = 3.14
m = 350
n = 250
x = []
for i in range(m):
    x.append(0)
A = []
for i in range(m):
    A.append(0)
B = []
for i in range(m):
    B.append(0)
C = []
for i in range(m):
    C.append(0)
V = []
for i in range(m):
    V.append(0)
We = []
for i in range(m):
    We.append(0)
t = []
for i in range(n):
    t.append(0)
P= []
for i in range(n):
    P.append([0] * m)
h = 0.01
tau = 0.045
DI = 0
e = 0
x[0] = 0.0001
x0 = 0.25
sigma = 0.05
for i in range(m):
    x[i] = x[0] + i * h
    P[0][i] = math.exp(-math.pow((x[i] - x0), 2) / (2 * math.pow(sigma, 2))) / (math.sqrt(2 * M_PI) * sigma)
 
 
for j in range(n):
    P[j][0] = 0
    P[j][m - 1] = 0
 
 
for i in range(1, n):
    for j in range(m-1):
        P[i][j] = 0.0001
 
k = 0.5
ksi = 0.005
i = 0
t[i] = 0
A[i] = (tau * (x[i] * ksi / h + (-ksi + 0.5 * x[i] * (1 - x[i] * (t[i] - 2 * k) / 10)) / 2) / (2 * h))
B[i] = (1 + tau * (x[i] * ksi / math.pow(h, 2) + (0.5 - 0.05 * x[i] * (t[i] - 2 * k) + 0.5 * x[i] * (-1 / 10 * t[i] + 1 / 5 * k)) / 2))
C[i] = (tau * (x[i] * ksi / h + (ksi - 0.5 * x[i] * (1 - x[i] * (t[i] - 2 * k) / 10)) / 2) / (2 * h))
 
 
for j in range(1, n):
    V[0] = (C[0] / B[0])
    DI = A[0] * P[j - 1][0] + (2 - B[0]) * P[j - 1][1] + C[0] * P[j - 1][2]
    We[0] = (DI / B[0])
    for i in range(1, m - 1):
        t[j] = t[j - 1] + tau
        A[i] = tau * (x[i] * ksi / h + (-ksi + 0.5 * x[i] * (1 - x[i] * (t[j] - 2 * k) / 10)) / 2) / (2 * h)
    B[i] = 1 + tau * (x[i] * ksi / math.pow(h, 2) + (0.5 - 0.05 * x[i] * (t[j] - 2 * k) + 0.5 * x[i] * (-1 / 10 * t[j] + 1 / 5 * k)) / 2)
        C[i] = tau * (x[i] * ksi / h + (ksi - 0.5 * x[i] * (1 - x[i] * (t[j] - 2 * k) / 10)) / 2) / (2 * h)
 
    for i in range(1, m - 1):
        e = -A[i] * V[i - 1] + B[i]
        V[i] = C[i] / e
        DI = A[i] * P[j - 1][i - 1] + (2 - B[i]) * P[j - 1][i] + C[i] * P[j - 1][i + 1]
        We[i] = (DI + A[i] * We[i - 1]) / e
    DI = A[m - 1] * P[j - 1][m - 3] + (2 - B[m - 1]) * P[j - 1][m - 2] + C[m - 1] * P[j - 1][m - 1] 
    P[j][m - 2] = (DI + A[m - 1] * We[m - 2]) / (B[m - 1] - A[m - 1] * V[m - 2])
    for i in range(m-2, 0, 1):
        P[j][i] = V[i] * P[j][i + 1] + We[i]
for i in range(n):
    for j in range(1, m):
        print(str(P[i][j]) + " ")
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.12.2021, 11:58
Ответы с готовыми решениями:

OverflowError: integer division result too large for a float
Ошибка слишком большая запятая. Итак вот задача: Верно ли, что 2022! = x + y + z где: x=5*2022!/24 y=2022!/8 z=2022!/24 ...

Ошибка ZeroDivisionError: float division by zero
Есть код. Как исправить эту ошибку? import math x = input(&quot;Введите число &quot;) x = float(x) print(&quot;x=&quot;,x) suma= 1 n =...

ZeroDivisionError: division by zero
import pandas import seaborn data = pandas.read_csv('support_data.csv') segment = list(data) robocats = list(data) means...

8
enx
 Аватар для enx
1189 / 765 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
23.12.2021, 11:59
Цитата Сообщение от Ilya264 Посмотреть сообщение
File "main.py", line 76, in <module>
P[j][m - 2] = (DI + A[m - 1] * We[m - 2]) / (B[m - 1] - A[m - 1] * V[m - 2])
ZeroDivisionError: float division by zer
А это тебя чем не устраивает?
0
0 / 0 / 0
Регистрация: 24.11.2020
Сообщений: 206
23.12.2021, 12:21  [ТС]
enx, А вообще она должна выводить массив 350 на 250 который заполнен числами, но в матрице крайние колонки слева и справа заполнены нулями

Добавлено через 1 минуту
enx, Может проблема в задании массива т.е неправильно задан ?
0
enx
 Аватар для enx
1189 / 765 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
23.12.2021, 12:25
Ilya264, без обид, я этот ужас даже пытаться читать не буду, но побуду в роли переводчика.

Перевод, авторский.

В 76 строке беда
P[j][m - 2] = (DI + A[m - 1] * We[m - 2]) / (B[m - 1] - A[m - 1] * V[m - 2]) а именно тут
На ноль делить нельзя.

Вывод:

(B[m - 1] - A[m - 1] * V[m - 2]) тут появляется ноль, давай подумаем как?

1. B[m - 1] == A[m - 1] * V[m - 2]
2. B[m - 1] == 0 and A[m - 1] == 0 or V[m - 2] == 0
........

Добавлено через 35 секунд
А почему он там появляется, я предлагаю тебе подумать самому, заодно код в порядок приведешь.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
23.12.2021, 14:30
Ilya264, как исправить? Для начала - разобраться в причине.
0
0 / 0 / 0
Регистрация: 24.11.2020
Сообщений: 206
23.12.2021, 17:54  [ТС]
Catstail, логично, если бы я знал причину , этого вопроса бы не было ))
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
23.12.2021, 18:11
Ilya264, а чтобы разобраться в причине, нужно знать постановку задачи. Ее нет. И у меня есть веские подозрения, что ты не сам этот код писал. Нашел в Сети, попробовал запустить (без понимания сути), код упал. А теперь ты просишь "помойте у меня полы" "найдите ошибку".

Между тем, раздел "решения задач" обязательным условием предполагает условие задачи. Будет условие - посмотрю, в чем дело.
0
0 / 0 / 0
Регистрация: 24.11.2020
Сообщений: 206
24.12.2021, 12:55  [ТС]
Catstail, Решение дифференциальных уравнений частных производных параболического типа - уравнение теплопроводности для однородных сред

Добавлено через 3 минуты
Catstail, Вообще надо чтоб массив 350 на 250 был заполнен числами кроме левого и правого краев, которые равны 0
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
24.12.2021, 14:39
Лучший ответ Сообщение было отмечено Ilya264 как решение

Решение

Цитата Сообщение от Ilya264 Посмотреть сообщение
Решение дифференциальных уравнений частных производных параболического типа - уравнение теплопроводности для однородных сред
- это тема, а не постановка. Постановкой она станет после того, как будет указан метод решения.

Цитата Сообщение от Ilya264 Посмотреть сообщение
Вообще надо чтоб массив 350 на 250 был заполнен числами кроме левого и правого краев, которые равны 0
- так и есть:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import math
 
M_PI = math.pi
m = 350
n = 250
x = []
for i in range(m):
    x.append(0)
A = []
for i in range(m):
    A.append(0)
B = []
for i in range(m):
    B.append(0)
C = []
for i in range(m):
    C.append(0)
V = []
for i in range(m):
    V.append(0)
We = []
for i in range(m):
    We.append(0)
t = []
for i in range(n):
    t.append(0)
P= []
for i in range(n):
    P.append([0] * m)
h = 0.01
tau = 0.045
DI = 0
e = 0
x[0] = 0.0001
x0 = 0.25
sigma = 0.05
for i in range(m):
    x[i] = x[0] + i * h
    P[0][i] = math.exp(-math.pow((x[i] - x0), 2) / (2 * math.pow(sigma, 2))) / (math.sqrt(2 * M_PI) * sigma)
 
 
for j in range(n):
    P[j][0] = 0
    P[j][m - 1] = 0
 
 
for i in range(1, n):
    for j in range(m-1):
        P[i][j] = 0.0001
 
k = 0.5
ksi = 0.005
i = 0
t[i] = 0
A[i] = (tau * (x[i] * ksi / h + (-ksi + 0.5 * x[i] * (1 - x[i] * (t[i] - 2 * k) / 10)) / 2) / (2 * h))
B[i] = (1 + tau * (x[i] * ksi / math.pow(h, 2) + (0.5 - 0.05 * x[i] * (t[i] - 2 * k) + 0.5 * x[i] * (-1 / 10 * t[i] + 1 / 5 * k)) / 2))
C[i] = (tau * (x[i] * ksi / h + (ksi - 0.5 * x[i] * (1 - x[i] * (t[i] - 2 * k) / 10)) / 2) / (2 * h))
 
 
for j in range(1, n):
    V[0] = (C[0] / B[0])
    DI = A[0] * P[j - 1][0] + (2 - B[0]) * P[j - 1][1] + C[0] * P[j - 1][2]
    We[0] = (DI / B[0])
    for i in range(1, m - 1):
        t[j] = t[j - 1] + tau
        A[i] = tau * (x[i] * ksi / h + (-ksi + 0.5 * x[i] * (1 - x[i] * (t[j] - 2 * k) / 10)) / 2) / (2 * h)
        B[i] = 1 + tau * (x[i] * ksi / math.pow(h, 2) + (0.5 - 0.05 * x[i] * (t[j] - 2 * k) + 0.5 * x[i] * (-1 / 10 * t[j] + 1 / 5 * k)) / 2)
        C[i] = tau * (x[i] * ksi / h + (ksi - 0.5 * x[i] * (1 - x[i] * (t[j] - 2 * k) / 10)) / 2) / (2 * h)
 
    for i in range(1, m - 1):
        e = -A[i] * V[i - 1] + B[i]
        V[i] = C[i] / e
        DI = A[i] * P[j - 1][i - 1] + (2 - B[i]) * P[j - 1][i] + C[i] * P[j - 1][i + 1]
        We[i] = (DI + A[i] * We[i - 1]) / e
    
    DI = A[m - 1] * P[j - 1][m - 3] + (2 - B[m - 1]) * P[j - 1][m - 2] + C[m - 1] * P[j - 1][m - 1] 
    
    ######
 
    print(B)
    print(A)
    print(m,B[m - 1],A[m - 1],V[m - 2])
    
    ######
 
    P[j][m - 2] = (DI + A[m - 1] * We[m - 2]) / (B[m - 1] - A[m - 1] * V[m - 2])
    
    for i in range(m-2, 0, 1):
        P[j][i] = V[i] * P[j][i + 1] + We[i]
        
for i in range(n):
    for j in range(1, m):
        print(str(P[i][j]) + " ")
Видно, A[m-1] и B[m-1] оба равны нулю. Равен нулю знаменатель дроби, отсюда и ошибка. А эта программа когда-либо правильно работала? Судя по тому, что в оригинале пи было тупо равно 3.14, скорее всего это студенческий недокод.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.12.2021, 14:39
Помогаю со студенческими работами здесь

ZeroDivisionError: division by zero
file = open('1.txt') suma = 0 n = 0 for i in file: g = int(i) suma += g n += 1 if g &lt; 3: print(i) ...

ZeroDivisionError: float modulo
В коде: #calculator a=float(input()) b=float(input()) c=input() '''

Float division by zero
Здравствуйте. Пишу программу и ней есть такой участок result=float((gi+ci)*100)/dl dl это колличество символов в строке , выше она...

Не понимает Dictionary<string, (float[][] train, float[][] valid, float[][] test)> DataSet;
Доброго времени суток. Пытаюсь запустить пример по работе с библиотекой. Не понимает конструкцию Dictionary&lt;string, (float train,...

опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt; float f1(float x)/*vira*enie 1*/ {return (x*cos(x))/(1+ pow(x,2));} ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru