Цикл и метод роста населения Java; Неправильный вывод

Моя задача - создать программу, которая моделирует рост населения по формуле x_new = r * x_previous * (1-x_previous), где r является параметром плодовитости и x это население. У меня есть рабочая программа и метод. Тем не менее, моя математика не проверяется. Я должен быть в состоянии проверить для начальной популяции .01, плодовитость параметр 1.1, 1000 временные шаги и получить ответ вокруг .09).

Вот моя программа:

import java.util.Scanner;

public class Lab6Question3 {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    System.out.println("The population, p: ");
    double p = input.nextDouble();
    System.out.println("The fecundity rate, r: ");
    double r = input.nextDouble();
    System.out.println("Number of Time Steps, n: ");
    int n = input.nextInt();

    int i; //iterations

    System.out.println("-------------------------------------");
    System.out.println("Simulation with starting population " + p); 
    System.out.println("Running " + n + " steps");
    System.out.println("Varying fecundicity 1, 1.1, ..., 4.9, 5");

    for (i = 0; i < n; i++) { 

    System.out.println("r = " + r + " final population = " + p);

    r = r + 0.1;

    p = populationGrowth(p, r);

    }

}

public static double populationGrowth(double population, double fecundicity) 
{
    double p;

    return (fecundicity * population * (1 - population));

}
}

И мой вывод правильно отформатирован с итерациями, но результаты заполнения неверны:

Simulation with starting population 0.01
Running 10000 steps
Varying fecundicity 1, 1.1, ..., 4.9, 5
r = 1.0 final population = 0.01
r = 1.1 final population = 0.01089
r = 1.2000000000000002 final population = 0.012925689480000004
r = 1.3000000000000003 final population = 0.01658620084090661

.
.
.

Есть идеи, что может быть причиной боли? Заранее спасибо!

1 ответ

Когда r достичь 5.2 об итерации 43 Ваша функция роста переходит в отрицательные числа, потому что x_previous is > 1... так 1-x_previous < 0Вы уверены, что модель верна... кажется, концептуальная проблема. попытаться смоделировать его в Excel.

Другое дело, ты увеличиваешь себя r прежде чем рассчитать следующий p значение. Вы уверены, что это правильно?

Другие вопросы по тегам