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

Правильно ли решена задача? Тема: "Внутривидовая конкуренция в популяции с дискретным размножением"

16.01.2021, 18:57. Показов 2271. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Правильно ли решена задача? Если нет, то как нужно делать? При значениях b=2 и более график представляет собой прямую линию. Здесь: https://helpiks.org/1-105483.html приводятся графики, которые не очень похожи на мои.
Теория:
Правильно ли решена задача? Тема: "Внутривидовая конкуренция в популяции с дискретным размножением"

Условие задачи:
Правильно ли решена задача? Тема: "Внутривидовая конкуренция в популяции с дискретным размножением"

Код из Jupyter Notebook:
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
import math
from matplotlib import numpy
import matplotlib.pyplot as plt
%matplotlib inline
N0 = 100
a = 3
b = 1.4
R = 1
def population(N0, R, t, a = 1, b = 1):
    """
    N0 - изначальная популяция
    R - скорость воспроизводства
    t - номер популяции
    Функция для расчета популяции
    У a и b, есть функции по умолчанию
    """
    Rt = R**t
    N = N0 * Rt
    num = N * R
    dec = ((a * N)**b) + 1
    if dec != 0:
        NNext = num/dec
    else:
        NNext = 0
    return NNext
def fillingList(N, R, xlist, a = 3, b = 1):
    """
    Заполняет 'y' значения 
    xlist - кол-во популяций
    """
    test = 0
    xxlist = []
    Nfunc = N
    for t in xlist:
        #print("N: "+str(Nfunc)+"\nR: "+str(R)+"\nres: "+str(population(Nfunc, R, t)))
        Nfunc = population(Nfunc, R, t, a, b)
        xxlist.append(Nfunc)
    return xxlist 
def yMinMax(ylist):
    yMin = min(ylist) * 0.9999999999999999
    yMax = max(ylist) * 1.0000000000000001
    return yMin, yMax
# Заполняем список x координат с помощью matplotlib функции (минимальное значение >=, максимальное <, шаг)
xlist = numpy.arange(1, 21, 1)
# Заполняем список y координат
ylist = fillingList(N0, R, xlist, b = b)
plt.plot(xlist, ylist, label=('b= ' + str(b)))
 
# Настройка графика
plt.ylim(yMinMax(ylist))
plt.xlabel('t', fontsize=12, color='blue')
plt.ylabel('N', fontsize=12, color='blue')
plt.grid(True)
# Включение легенды
plt.legend()
plt.figure(figsize=(12, 7))
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2021, 18:57
Ответы с готовыми решениями:

Реализовать модель внутривидовой конкуренции в популяции с дискретным размножением
Реализовать модель внутривидовой конкуренции в популяции с дискретным размножением при следующих...

Правильно ли решена задача?
Есть задача: Заданы два одномерных массива с различным количеством элементов и натуральное число...

Правильно ли решена задача?
Верно ли я решил данную задачу?

Правильно ли решена задача?
Здравствуйте, необходимо решить задачу по включению светодиода по нажатию кнопки (кнопка без...

Правильно ли решена задача?

6
1 / 1 / 0
Регистрация: 13.11.2020
Сообщений: 21
16.01.2021, 19:47  [ТС] 2
Правильно ли решена задача? Если нет, то как нужно делать? При значениях b=2 и более график представляет собой прямую линию. Здесь: https://helpiks.org/1-105483.html приводятся графики, которые не очень похожи на мои.
Теория:
Правильно ли решена задача? Тема: "Внутривидовая конкуренция в популяции с дискретным размножением"

Условие задачи:
Правильно ли решена задача? Тема: "Внутривидовая конкуренция в популяции с дискретным размножением"

Код из Jupyter Notebook:
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
import math
from matplotlib import numpy
import matplotlib.pyplot as plt
%matplotlib inline
N0 = 100
a = 3
b = 1.4
R = 1
def population(N0, R, t, a = 1, b = 1):
    """
    N0 - изначальная популяция
    R - скорость воспроизводства
    t - номер популяции
    Функция для расчета популяции
    У a и b, есть функции по умолчанию
    """
    Rt = R**t
    N = N0 * Rt
    num = N * R
    dec = ((a * N)**b) + 1
    if dec != 0:
        NNext = num/dec
    else:
        NNext = 0
    return NNext
def fillingList(N, R, xlist, a = 3, b = 1):
    """
    Заполняет 'y' значения 
    xlist - кол-во популяций
    """
    test = 0
    xxlist = []
    Nfunc = N
    for t in xlist:
        #print("N: "+str(Nfunc)+"\nR: "+str(R)+"\nres: "+str(population(Nfunc, R, t)))
        Nfunc = population(Nfunc, R, t, a, b)
        xxlist.append(Nfunc)
    return xxlist 
def yMinMax(ylist):
    yMin = min(ylist) * 0.9999999999999999
    yMax = max(ylist) * 1.0000000000000001
    return yMin, yMax
# Заполняем список x координат с помощью matplotlib функции (минимальное значение >=, максимальное <, шаг)
xlist = numpy.arange(1, 21, 1)
# Заполняем список y координат
ylist = fillingList(N0, R, xlist, b = b)
plt.plot(xlist, ylist, label=('b= ' + str(b)))
 
# Настройка графика
plt.ylim(yMinMax(ylist))
plt.xlabel('t', fontsize=12, color='blue')
plt.ylabel('N', fontsize=12, color='blue')
plt.grid(True)
# Включение легенды
plt.legend()
plt.figure(figsize=(12, 7))
0
4921 / 2674 / 550
Регистрация: 07.11.2019
Сообщений: 4,397
16.01.2021, 20:52 3
Pato1, в 5-ой строке надо 1000, а не 100.
А так все нормально считает. Если скорость воспроизводства популяции равна R=1, то при любом ненулевом b популяция вымирает. И чем больше b тем быстрее. По ссылке там приведены графики для других параметров R и a.

Добавлено через 9 минут
Ну и код можно было бы подсократить, но это уже дело вкуса.

Не по теме:

Ваши расчеты я проверял в Matlab так:

Matlab M
1
2
3
4
5
6
7
N0=1000;a=3;R=1;b=2.0;
N=[];
N(1)=N0;
for i=2:10
N(i)=N(i-1)/(1+(a*N(i-1))^b);
end
plot(N)

0
4921 / 2674 / 550
Регистрация: 07.11.2019
Сообщений: 4,397
16.01.2021, 21:19 4
https://www.cyberforum.ru/pyth... st15186195
0
Эксперт Python
8218 / 4337 / 1838
Регистрация: 27.03.2020
Сообщений: 7,161
16.01.2021, 21:27 5
Pato1,
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
import math
import numpy
N0 = 100
a = 3
b = 1.4
R = 1
def population(N0, R, t, a, b):
    """
    N0 - изначальная популяция
    R - скорость воспроизводства
    t - номер популяции
    Функция для расчета популяции
    У a и b, есть функции по умолчанию
    """
    #Rt = R**t
    #N = N0 * Rt
    #num = N * R
    #dec = ((a * N)**b) + 1
    num = N0 * R
    dec = 1 + (a * N0) ** b
    if dec != 0:
        NNext = num/dec
    else:
        NNext = 0
    return NNext
    
def fillingList(N, R, xlist, a = a, b = b):
    """
    Заполняет 'y' значения 
    xlist - кол-во популяций
    """
    test = 0
    Nfunc = N
    xxlist = []
    for t in xlist:
        #print("N: "+str(Nfunc)+"\nR: "+str(R)+"\nres: "+str(population(Nfunc, R, t)))
        Nfunc = population(Nfunc, R, t, a, b)
        xxlist.append(Nfunc)
    return xxlist 
 
# Заполняем список x координат с помощью matplotlib функции (минимальное значение >=, максимальное <, шаг)
xlist = numpy.arange(1, 21, 1)
# Заполняем список y координат
ylist = fillingList(N0, R, xlist, a = a, b = b)
print(ylist)
Незначительно переделал формулы согласно ссылке.
Вывод - "депрессивно" убывающая популяция; при таких входных данных по внутривидовой конкуренции плюс при нулевом воспроизводстве (хуже, чем у пауков в банке ) при достаточно продолжительном времени популяция вырождается. От значения b при таких данных завимость нужно искать в логарифмитических значениях по времени. А так - чем больше b, тем стремительнее падение.

Добавлено через 2 минуты
Да и еще - часть кода убрал - нет плота у меня
0
1 / 1 / 0
Регистрация: 13.11.2020
Сообщений: 21
17.01.2021, 08:42  [ТС] 6
Цитата Сообщение от Gdez Посмотреть сообщение
Pato1,
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
import math
import numpy
N0 = 100
a = 3
b = 1.4
R = 1
def population(N0, R, t, a, b):
    """
    N0 - изначальная популяция
    R - скорость воспроизводства
    t - номер популяции
    Функция для расчета популяции
    У a и b, есть функции по умолчанию
    """
    #Rt = R**t
    #N = N0 * Rt
    #num = N * R
    #dec = ((a * N)**b) + 1
    num = N0 * R
    dec = 1 + (a * N0) ** b
    if dec != 0:
        NNext = num/dec
    else:
        NNext = 0
    return NNext
    
def fillingList(N, R, xlist, a = a, b = b):
    """
    Заполняет 'y' значения 
    xlist - кол-во популяций
    """
    test = 0
    Nfunc = N
    xxlist = []
    for t in xlist:
        #print("N: "+str(Nfunc)+"\nR: "+str(R)+"\nres: "+str(population(Nfunc, R, t)))
        Nfunc = population(Nfunc, R, t, a, b)
        xxlist.append(Nfunc)
    return xxlist 
 
# Заполняем список x координат с помощью matplotlib функции (минимальное значение >=, максимальное <, шаг)
xlist = numpy.arange(1, 21, 1)
# Заполняем список y координат
ylist = fillingList(N0, R, xlist, a = a, b = b)
print(ylist)
Незначительно переделал формулы согласно ссылке.
Вывод - "депрессивно" убывающая популяция; при таких входных данных по внутривидовой конкуренции плюс при нулевом воспроизводстве (хуже, чем у пауков в банке ) при достаточно продолжительном времени популяция вырождается. От значения b при таких данных завимость нужно искать в логарифмитических значениях по времени. А так - чем больше b, тем стремительнее падение.

Добавлено через 2 минуты
Да и еще - часть кода убрал - нет плота у меня
Gdez
От значения b при таких данных завимость нужно искать в логарифмитических значениях по времени.
Можете подсказать как это будет выглядеть в виде кода для данной задачи?
0
Эксперт Python
8218 / 4337 / 1838
Регистрация: 27.03.2020
Сообщений: 7,161
17.01.2021, 10:41 7
Pato1, https://jenyay.net/Matplotlib/LogAxes

Добавлено через 1 минуту
ylist - по логарифмической шкале, xlist - по обычной
0
17.01.2021, 10:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2021, 10:41
Помогаю со студенческими работами здесь

Правильно ли решена задача?
Условие Даны целые положительные числа M , N , число D и набор из M чисел . Сформировать матрицу...

Правильно ли решена задача?
Есть задача И мое решение import java.util.Scanner; class Prog4 { public static void...

Правильно ли решена задача?
Всем добрый день. Вот решил сам решить задачку по Java c выводом в консоль. Порылся в инете и нашел...

Правильно ли решена задача?
del

Правильно ли решена задача по математической статистике
Всем здравствуйте! Кто знает математическую статистику прошу проверить одну задачку. Правильно ли...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru