Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 17.04.2015
Сообщений: 31

Ошибка list assignment index out of range

20.10.2022, 18:52. Показов 1245. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте!
Пытаюсь написать программу расчёта по уравнению Ван-дер-Ваальса на Python.
Код прикладываю.

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
import matplotlib as plt
import numpy as np
 
V = [i for i in range(1,100)] # объем
P = [i for i in range(1,100)] # давление
P_less_crit = []
P_crit = []
P_more_crit = []
 
# Параметры Ван-дер-Ваальса для водорода
a = 0.0245
b = 26.653 * 0.000001
 
R = 8.31446261815324
 
# Расчёт критических параметров
V_crit = 3*b
T_crit = (8*a) / (27*b*R)
P_crit = a / (27*pow(b,2))
 
print("Критический объем (в метрах кубических на моль): ", V_crit)
print("Критическая температура (в кельвинах): ", T_crit)
print("Критическое давление (в паскалях): ", P_crit)
 
 
 
for i in range (1,99):
    P_less_crit[i] = ((R*(T_crit-20))/(V[i]-b))-(a/(pow(V[i],2))) # T<T_crit
    P_crit[i] = ((R*T_crit)/(V[i]-b))-(a/(pow(V[i],2))) # T = T_crit
    P_more_crit[i] = ((R*(T_crit+20))/(V[i]-b))-(a/(pow(V[i],2))) # T>T_crit


Критические параметры считаются, а вот там где идёт расчёт массивов давлений почему-то возникает непонятная ошибка "list assignment index out of range".
Подскажите пожалуйста, что я не так делаю ?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.10.2022, 18:52
Ответы с готовыми решениями:

IndexError: list assignment index out of range
Написала функции. Выдает ошибку в 15 строке. Версия питона 2. Писала до этого на 3. Не думаю, что там прям криминальное отличие, но все же,...

Ошибка list index out of range
Есть код для предсказания вторичной структуры РНК, но он выдает ошибку IndexError: list index out of range в строке: ...

List assignment index out of range
Добрый день, друзья! У меня программа должна находить числа, появляющиеся в обоих списках, и помещает эти значения в новый список С. У меня...

4
5517 / 2870 / 571
Регистрация: 07.11.2019
Сообщений: 4,761
20.10.2022, 19:16
MIkhail1996, приветствую, коллега!
Смотри, в 6-8 строках ты создаешь пустой массив, без элементов, а в 28-30 ты присваиваешь i-тым элементам массива значения, но i-тых элементов в массиве нет, т.к. он пустой.
Вариантов тут два: или изначально инициализировать массивы, например, нулями:
Python
1
2
3
P_less_crit = [0 for i in range(1,100)]
P_crit = [0 for i in range(1,100)]
P_more_crit = [0 for i in range(1,100)]
или
в 28-30 строках добавлять в массивы новые значения:
Python
1
2
P_less_crit.append(((R*(T_crit-20))/(V[i]-b))-(a/(pow(V[i],2))))
...
Еще стоит как-то переименновать P_krit в 19 строке, т.к. это имя уже используется для массива.

Вот что у меня получилось:
Кликните здесь для просмотра всего текста
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
import matplotlib as plt
import numpy as np
 
V = [i for i in range(1,100)] # объем
P = [i for i in range(1,100)] # давление
P_less_crit = [0 for i in range(1,100)]
P_crit = [0 for i in range(1,100)]
P_more_crit = [0 for i in range(1,100)]
 
# Параметры Ван-дер-Ваальса для водорода
a = 0.0245
b = 26.653 * 0.000001
 
R = 8.31446261815324
 
# Расчёт критических параметров
V_crit = 3*b
T_crit = (8*a) / (27*b*R)
P_crit2 = a / (27*pow(b,2))
 
print("Критический объем (в метрах кубических на моль): ", V_crit)
print("Критическая температура (в кельвинах): ", T_crit)
print("Критическое давление (в паскалях): ", P_crit2)
 
 
 
for i in range (1,99):
    P_less_crit[i] = ((R*(T_crit-20))/(V[i]-b))-(a/(pow(V[i],2))) # T<T_crit
    P_crit[i] = ((R*T_crit)/(V[i]-b))-(a/(pow(V[i],2))) # T = T_crit
    P_more_crit[i] = ((R*(T_crit+20))/(V[i]-b))-(a/(pow(V[i],2))) # T>T_crit

Но что в итоге нужно? Обычная P-T диаграмма или что-то еще?
1
1 / 1 / 0
Регистрация: 17.04.2015
Сообщений: 31
20.10.2022, 19:27  [ТС]
Да, в итоге хочу получить 3 графика зависимости P от V соответственно для 3-х значений T :
T = T_crit
T > T_crit
T<T_crit

Добавлено через 1 минуту
Да, в итоге хочу получить 3 графика зависимости P от V соответственно для 3-х значений T :
T = T_crit
T > T_crit
T<T_crit
0
5517 / 2870 / 571
Регистрация: 07.11.2019
Сообщений: 4,761
20.10.2022, 20:04
Лучший ответ Сообщение было отмечено MIkhail1996 как решение

Решение

А.. изотермы... Как-то так, формулу не проверял.
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
from matplotlib import pyplot as plt
import numpy as np
V = np.linspace(1, 100, 1000) # объем
 
# Параметры Ван-дер-Ваальса для водорода
a = 2.45e-2 # Н*м^4/моль^2
b = 2.6653e-5 # м^3/моль
R = 8.31446 # Универсальная газовая  постоянная
 
# Расчёт критических параметров
V_crit = 3*b
T_crit = 8*a / (27*b*R)
P_crit = a / (27*b**2)
 
print(f"Критический объем (в метрах кубических на моль):  {V_crit: .5g}")
print(f"Критическая температура (в кельвинах): {T_crit: .5g}")
print(f"Критическое давление (в паскалях): {P_crit: .5g}")
 
T=np.array([T_crit-20, T_crit, T_crit+20]) # три значения температуры
legend='T<T_crit', 'T = T_crit', 'T >T_crit' # подписи  легенды
 
for i in range (3):
    P=((R*T[i])/(V-b))-(a/(V**2))
    plt.plot(V, P, label=legend[i])
    plt.legend()
Миниатюры
Ошибка list assignment index out of range  
1
1 / 1 / 0
Регистрация: 17.04.2015
Сообщений: 31
20.10.2022, 20:47  [ТС]
Да, у меня уже получилось. Немного по-другому. Небольшой пик получился. Возможно из-за того что я немного другие значения параметров взял.
Исправил по тому, что Вы написали. И плюс неправильно была импортирована библиотека matplotlib.
Всё сработало.
Большое спасибо.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.10.2022, 20:47
Помогаю со студенческими работами здесь

IndexError: list assignment index out of range
Spyder показывает ошибку IndexError: list assignment index out of range на 27-й строке, а я ее не вижу. Нумерация ячеек списка в цикле...

Ошибка "list assignment index out of range"
Доброго времени суток, помогите понять, почему выдает такую ошибку? q = , , ] s = 1 i = 0 while i &lt; len(q): q = s ...

Массив в цикле for. IndexError: list assignment index out of range
Приветствую, помогите начинающему в наверное элементарном вопросе, не могу сформировать массив через цикл, a= for i in range(10):...

Python динамическое программирование (list assignment index out of range). Что делать?
Добрый день! Решаю следующую задачу: Миша, Маша и Филипп очень любят пить чай. Они решили устроить чайный марафон, и пить только его. ...

Ошибка list index out of range
Дано натуральное трехзначное число. Если все цифры в нем одинаковы, то оставить заданное число без изменения; если все цифры в нем разные,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru