Я б вас послал, да вижу - вы оттуда.
Здравствуйте, товарищи!
авось, вы чем-нибудь да и подсобите. Элементарщина - а я в ступоре уже не один день.
работаю в Microsoft Visual Basic 2010.
Надобно написать программу, которая выводила бы на экран диаграмму динамики роста популяции насекомых (посмотреть и формулу, и диаграмму можно тут). Смысл, что мне дана формула, и вот такие значения: λ=100 β=7; λ=[0,100], xn=[0,6] - где два последних промежутка - для системы координат.
есть написанная похожая программа для эквивалентной диаграммы - бифуркационной, Ферхюльста.
часть программы, которая в ходе подстановки моей формулы - динамики популяции насекомых, должна претерпеть изменения:
собственно, по аналогии нужно сделать и для этой долбаной популяции насекомых. НО - ни черта не получается. Не могу нормально сообразить - по какой переменной цикл строить, как лучше поставить строчку с рисованием и тэ дэ.
Если у кого нибудь есть какие то идеи - то поделитесь пожалста. У меня всё иссякло. мой максимум - рисует из нулевой точки одну прямую, она делится на две и эти две прямых ускакивают чуть ли не в бесконечность.
авось, вы чем-нибудь да и подсобите. Элементарщина - а я в ступоре уже не один день.
работаю в Microsoft Visual Basic 2010.
Надобно написать программу, которая выводила бы на экран диаграмму динамики роста популяции насекомых (посмотреть и формулу, и диаграмму можно тут). Смысл, что мне дана формула, и вот такие значения: λ=100 β=7; λ=[0,100], xn=[0,6] - где два последних промежутка - для системы координат.
есть написанная похожая программа для эквивалентной диаграммы - бифуркационной, Ферхюльста.
часть программы, которая в ходе подстановки моей формулы - динамики популяции насекомых, должна претерпеть изменения:
Private Sub Ferhulst(ByVal N As Long, ByVal x0 As Double, ByVal r As Double, ByVal e As PaintEventArgs)
Dim i As Long
Dim xn As Double
Dim xni As Double
Dim RedPen As New Pen(Color.FromArgb(255, 255, 0, 0), 1)
'1-я точка(0,x0)
xn = x0
'остальные N-1 точки
For i = 0 To 5120
For r = rmin To rmax Step 0.00001
xni = (1 + r) * xn - r * xn * xn
If i > 5000 Then
e.Graphics.DrawRectangle(RedPen, xe(r), ye(xni), 1, 1)
xn = xni
End If
Next r
Next i
End Sub
собственно, по аналогии нужно сделать и для этой долбаной популяции насекомых. НО - ни черта не получается. Не могу нормально сообразить - по какой переменной цикл строить, как лучше поставить строчку с рисованием и тэ дэ.
Если у кого нибудь есть какие то идеи - то поделитесь пожалста. У меня всё иссякло. мой максимум - рисует из нулевой точки одну прямую, она делится на две и эти две прямых ускакивают чуть ли не в бесконечность.
e.Graphics.DrawRectangle(RedPen, xe(r), ye(xni), 1, 1)
рисует "точку", квадрат размером 1x1 пиксель
Непосредственно формула, которую надо заменить, очевидно вот эта:
xni = (1 + r) * xn - r * xn * xn
Проблема, однако, в том, что здесь переменная от которой зависит xni, одна (r), а в вашей формуле - две. Но если принимать во внимание то, как себя ведёт диаграмма, приведённая по ссылке, изменять нужно λ, от 0 до введённого значения. Введённое β тем временем, остаётся постоянным (если бы и оно менялось, пришлось бы трёхмерную диаграмму рисовать)
Смысл того, что вычисляется во вложенном цикле, судя по всему, такой: потомство какого размера (xni) даст xn насекомых при различных условиях λ. При этом i от 0 до 5121 - это, видимо, количество "размножений", вследствии которых текущее количество насекомых может измениться на ряд других, в зависимости от лямбды. При этом текущее значение xn мы меняем на размер следующего поколения почему-то только тогда, когда оно превысит 5000.
В итоге, если делать по аналогии, внешний цикл меняется по i от 0 до N (=5121, видимо), внутренний - от lamba_min, до lambda_max, xn меняется на xni только когда последнее превысит 5000.
Из того, что мне неясно и что объяснить я не могу:
1) Что из себя представляют xe(r) и ye(xni)? Их объявлений в приведённом коде нет. Это какие-то массивы, или функции? Во что они отображают переданные координаты r и xni?
2) Что за магическое число 5000? У него есть какой-то сакральный биологический смысл?
3) Неясно, как по готовой диаграмме связать xn и количество насекомых в следующем поколении. Да и вообще, смысл диаграммы, мне, честно говоря, не очень ясен
Надеюсь, это как-то поможет или натолкнёт на нужный ход мыслей, а не запутает ещё больше
Ну сначала скажу, чем же моё мучение с этим со всем закончилось: то, что я получила - первую итерацию (то бишь, раздвоение и "ускакивание" прямых в бесконечность) - является верным решением данной задачи. И вы всё говорите правильно, за что вам спасибо - до подобного толкования и я сама дошла давненько уже и, как оказалось, всё это верно.
НО: ты ссылка в посте на якобы то, что должно получиться, с подвохом. Мой чудесный преподаватель отчебучил, что для этой долбаной динамики популяции насекомых есть две схожих формулы, притом первая - общеизвестна, а вторую редко где встретишь. Та формула, которая указана на сайте и является общеизвестной - и по ней, как ни крути, рисуется то, что нарисовалось у меня - и не более того. Дальше бифуркация не идёт - таков сам смысл сей формулы. На чудо-сайте формулу написали такую с которой все работают - а вот подразумевали они в своей рисовалке другую. Какую - вопрос риторический, ибо со слов это запомнить сложновато - да, я думаю, мне больше ничего и не скажут на этот счёт.
Ну и коли вам интересно, то вот:
1) Что из себя представляют xe(r) и ye(xni)? Их объявлений в приведённом коде нет. Это какие-то массивы, или функции? Во что они отображают переданные координаты r и xni?
В данном коде объявления этих переменных нет, потому что это - кусок кода. xe и ye - это, собственно, функции перерасчёта координат - в скобочках указываются параметры что и от чего считать, хотя, это и без меня наверное понятно. Отображают они всё просто в чиселки. Просто это сделано для того чтобы математическую систему координат как-то связать с экранной, дабы не было косяков.
2) Что за магическое число 5000? У него есть какой-то сакральный биологический смысл?
хороший вопрос, на который и мне никто ответа не дал. Скорее, это особенности математической модели. Под рисуночком бифуркационной диаграммы ферхюльста было подписано - что первые 5000 итераций мы просто просчитываем, а след. 120 - рисуем. Всё.
3) Неясно, как по готовой диаграмме связать xn и количество насекомых в следующем поколении. Да и вообще, смысл диаграммы, мне, честно говоря, не очень ясен
и это тоже хороший вопрос практически риторического характера. Видимо, в это вникать и не нужно было - надо было тупо следовать шаблонам, что печально.
и ещё раз спасибо)