Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/47: Рейтинг темы: голосов - 47, средняя оценка - 4.79
65 / 46 / 20
Регистрация: 24.10.2016
Сообщений: 1,051

График Модели Лотки-Вольтерры

20.09.2020, 22:35. Показов 10474. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!! Буквально неделю назад начал изучать питон: Написал такой код: Чтоб программа вывела график Модели Лотки-Вольтерры, но возникла ошибка: Traceback (most recent call last):
File "C:\Users\Desktop\12.py", line 1, in <module>
import matplotlib.pyplot as plt
ModuleNotFoundError: No module named 'matplotlib'
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
import matplotlib.pyplot as plt
import numpy as np
 
def rk4(r, t, h):                    #edited; no need for input f
        """ Runge-Kutta 4 method """
        k1 = h*f(r, t)
        k2 = h*f(r+0.5*k1, t+0.5*h)
        k3 = h*f(r+0.5*k2, t+0.5*h)
        k4 = h*f(r+k3, t+h)
        return (k1 + 2*k2 + 2*k3 + k4)
 
def f(r, t):
        alpha = 1.0
        beta = 0.5
        gamma = 0.5
        sigma = 2.0
        x, y = r[0], r[1]
        fxd = x*(alpha - beta*y)
        fyd = -y*(gamma - sigma*x)
        return np.array([fxd, fyd], float)
 
h=0.001                               #edited
tpoints = np.arange(0, 30, h)         #edited
xpoints, ypoints  = [], []
r = np.array([2, 2], float)
for t in tpoints:
        xpoints.append(r[0])          #edited
        ypoints.append(r[1])          #edited
        r += rk4(r, t, h)             #edited; no need for input f
plt.plot(tpoints, xpoints)
plt.plot(tpoints, ypoints)
plt.xlabel("Time")
plt.ylabel("Population")
plt.title("Lotka-Volterra Model")
plt.savefig("Lotka_Volterra.png")
plt.show()
какой то модуль просит, как исправить ошибку?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2020, 22:35
Ответы с готовыми решениями:

Система Лотки-Вольтерры с задержками
Реализовал на матлабе данное задание. По сути это решение системы 2 диф. ур-й. но при этом часть переменных имеют задержку по времени. И у...

Система хищник-жертва (модель Лотки-Вольтерры)
Здравствуйте! В университете задали такую задачку. Если это не сложно, можете накидать код? Или может у кого завалялся уже готовый? ...

Как определить параметры модели Лотки-Вольтера по имеющимся стат данным?
Здравствуйте, подскажите какие есть методики Определения параметров модели Лотки-Вольтера по имеющимся стат данным?

22
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.09.2020, 22:38
pip3 install matplotlib

Добавлено через 37 секунд
FAQ: Установка библиотек для Python
1
65 / 46 / 20
Регистрация: 24.10.2016
Сообщений: 1,051
20.09.2020, 23:21  [ТС]
а если такая задача стоит: график решения задачи “Хищник-Жертва” при различных начальных условиях, то как условия написать?

Добавлено через 11 минут
массивом?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.09.2020, 23:31
Каким массивом? Если по табличным значениям - то да, можно массивом, можно с файла читать.
Если вычислительно - то или вычислять в реалтайме, или сначала вычислить в массив, затем отрисовать.

Добавлено через 1 минуту
Или ты имеешь ввиду условия - численность жертв\хищников, вероятности размножения и проч?
0
65 / 46 / 20
Регистрация: 24.10.2016
Сообщений: 1,051
20.09.2020, 23:36  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Или ты имеешь ввиду условия - численность жертв\хищников, вероятности размножения и проч?
__________________
да это имею ввиду
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.09.2020, 23:53
Ну как обычно тогда - в переменные, инпутом. А потом передавать в функцию...
1
65 / 46 / 20
Регистрация: 24.10.2016
Сообщений: 1,051
23.09.2020, 19:55  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Ну как обычно тогда - в переменные, инпутом. А потом передавать в функцию...
правильно?
Python
1
2
3
4
alpha = input()
        beta = input()
        gamma = input()
        sigma = input()
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.09.2020, 20:03
Целое число
Python
1
x = int(input())
Дробное число
Python
1
x = float(input())
1
65 / 46 / 20
Регистрация: 24.10.2016
Сообщений: 1,051
23.09.2020, 20:15  [ТС]
у меня ошибку выводит: Traceback (most recent call last):
File "main.py", line 29, in <module>
r += rk4(r, t, h) #edited; no need for input f
File "main.py", line 8, in rk4
k3 = h*f(r+0.5*k2, t+0.5*h)
File "main.py", line 16, in f
sigma = float(input("Введите"))
ValueError: could not convert string to float: ''
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
import matplotlib.pyplot as plt
import numpy as np
 
def rk4(r, t, h):                    #edited; no need for input f
        """ Runge-Kutta 4 method """
        k1 = h*f(r, t)
        k2 = h*f(r+0.5*k1, t+0.5*h)
        k3 = h*f(r+0.5*k2, t+0.5*h)
        k4 = h*f(r+k3, t+h)
        return (k1 + 2*k2 + 2*k3 + k4)
 
def f(r, t):
        alpha = float(input("Введите alpha"))
        beta = float(input("Введите beta "))
        gamma = float(input("Введите gamma"))
        sigma = float(input("Введите sigma"))
        x, y = r[0], r[1]
        fxd = x*(alpha - beta*y)
        fyd = -y*(gamma - sigma*x)
        return np.array([fxd, fyd], float)
 
h=0.001                               #edited
tpoints = np.arange(0, 30, h)         #edited
xpoints, ypoints  = [], []
r = np.array([2, 2], float)
for t in tpoints:
        xpoints.append(r[0])          #edited
        ypoints.append(r[1])          #edited
        r += rk4(r, t, h)             #edited; no need for input f
plt.plot(tpoints, xpoints)
plt.plot(tpoints, ypoints)
plt.xlabel("Time")
plt.ylabel("Population")
plt.title("Lotka-Volterra Model")
plt.savefig("Lotka_Volterra.png")
plt.show()
можете проверить? в чем я ошибся
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.09.2020, 21:08
никмейн, очевидно ввел пустую строку.
У меня все работает. В смысле без ошибок
0
65 / 46 / 20
Регистрация: 24.10.2016
Сообщений: 1,051
23.09.2020, 21:36  [ТС]
ммм, ну ладно

Добавлено через 19 минут
а можете скриншот показать результата?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.09.2020, 21:42
А результата никакого и нет. Вечный ввод альфа, бета, гамма...
У тебя есть какие-то входные значения? Если их дохренища - нет смысла вводить их по-одному вручную.
0
65 / 46 / 20
Регистрация: 24.10.2016
Сообщений: 1,051
23.09.2020, 22:00  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
У тебя есть какие-то входные значения?
у меня же в первом посте введены только по одному числу, и не было вечного ввода
Цитата Сообщение от никмейн Посмотреть сообщение
alpha = 1.0
        beta = 0.5
        gamma = 0.5
        sigma = 2.0
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.09.2020, 22:05
Ну как же

Диапазон
Цитата Сообщение от никмейн Посмотреть сообщение
tpoints = np.arange(0, 30, h)
И цикл по нему
Цитата Сообщение от никмейн Посмотреть сообщение
for t in tpoints:
Внутри которого вызывается rk4()
Цитата Сообщение от никмейн Посмотреть сообщение
r += rk4(r, t, h)
Внутри которой 4 раза вызывается f()
Внутри которой вводятся альфы, беты и т.д.

Боюсь даже посчитать сколько раз...
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
23.09.2020, 22:05
Из первого поста
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.09.2020, 22:07
Да, из первого поста код работает
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
23.09.2020, 22:07
Да, вводить коэффициенты на каждом шаге расчёта - плохая идея..
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.09.2020, 22:10
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
import matplotlib.pyplot as plt
import numpy as np
 
 
def rk4(r, t, h):  # edited; no need for input f
    """ Runge-Kutta 4 method """
    k1 = h * f(r, t)
    k2 = h * f(r + 0.5 * k1, t + 0.5 * h)
    k3 = h * f(r + 0.5 * k2, t + 0.5 * h)
    k4 = h * f(r + k3, t + h)
    return k1 + 2 * k2 + 2 * k3 + k4
 
 
def f(r, t):
    x, y = r[0], r[1]
    fxd = x * (alpha - beta * y)
    fyd = -y * (gamma - sigma * x)
    return np.array([fxd, fyd], float)
 
 
alpha = float(input('alpha: '))
beta = float(input('beata: '))
gamma = float(input('gamma: '))
sigma = float(input('sigma: '))
 
 
h = 0.001  # edited
tpoints = np.arange(0, 30, h)  # edited
xpoints, ypoints = [], []
r = np.array([2, 2], float)
for t in tpoints:
    xpoints.append(r[0])  # edited
    ypoints.append(r[1])  # edited
    r += rk4(r, t, h)  # edited; no need for input f
plt.plot(tpoints, xpoints)
plt.plot(tpoints, ypoints)
plt.xlabel("Time")
plt.ylabel("Population")
plt.title("Lotka-Volterra Model")
plt.savefig("Lotka_Volterra.png")
plt.show()
никмейн, это надо было чтоли?
0
65 / 46 / 20
Регистрация: 24.10.2016
Сообщений: 1,051
23.09.2020, 22:15  [ТС]
Цитата Сообщение от Black Fregat Посмотреть сообщение
вводить коэффициенты на каждом шаге расчёта - плохая идея..
и как лучше? рандомно?

Добавлено через 3 минуты
это надо было чтоли? Что вы сделали?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.09.2020, 22:20
Что что? Ввод исходных значений с консоли...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2020, 22:20
Помогаю со студенческими работами здесь

Модель Лотки-Вольтерра и его график
Здравствуй, хочу нарисовать два графика по модели Лотки-Вольтерра, то есть фазовой портрет и колебание функций ...

График по модели Леонтьева
Здравствуйте! Появилась необходимость создать график по балансовой модели Леонтьева(На скриншоте). Может кто сталкивался, подскажите,...

Создать график в м-файле Matlab модели simulink
Помогите создать код для трёх графиков двух осциллографов. Код не работает. модель системы и пример графика представлен во вложении ...

Вывести график по модели SIR, используя библиотеку Matplotlib
Вот код. Суть программы вывести график по модели SIR, использую библиотеку Matplotlib. Только у меня возникла проблема з выводом) Помогите...

Нужно создать график SIR модели в трехмерном пространстве
Нужно реализовать модель SIR на Python в трехмерном пространстве. Не знаю с чего даже начать


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru