Girdileri almak ve Verhulst Formülünü k yıl sayısı olarak hesaplayan bir tablo için bir program atadım. (N), gp^2/M -Verhulst’ın Formülünün uygulanmasında bir sorun mu var?
s (n + 1) = (1 + g-h) p (n):
http://www.resnet.wm.edu/~jxshix/math410/Verhulst.html
denklemi aşağıdaki gibidir: Bu denklem kullanılır.
İşte yaptığım program.
> #include <iostream>
using namespace std;
int main() {
int k = 20; // number of years to calculate for
int pn = 10; // the population of animals for the first year
double g = 275; // rate of growth
g = g/100.00;
double h = 20; // rate of animal death/animals leaving population
h = h/100.00;
int M = 100; // carrying capacity of the ecosystem
/*
Implementing Verhulst's Formula in C++
*/
int i;
int pop;
for (i = 1; i <= k ; i++)
{
pop = (((1 + (g - h)) * pn) - g*(pn*pn)/M) + .5; // the equation
pn = pop; // this takes the new value of pop and inserts it as pn, to be looped until i <= k
cout << i << " " << pop << endl;
}
return 0;
}
ben g ayarlar yukarıdaki bağlantıyı, örnekler kullanarak kodumu test etmek talimatı verildi: ben Sizlerin aracılığıyla elemek için o sıkıcı olacağını hissediyorum girdi istenen benim kodu bölümünü kaldırdık (büyüme hızı) sırasıyla 125, 250 ve 300'de. Programımın ilk iki sayı için oldukça doğru olduğunu hissediyorum (grafikleri oldukça doğru bir şekilde eşleştiriyorlar) ama 300'ü eklediğimde sunulan grafikten çok farklı değerler elde ediyorum. Yukarıdaki kodu kodumda ifade etmemde veya grafik özellikle çok kötüyse, bir hata yapıp yapmadığımı bilmiyorum. Yukarıda belirtilen sitede belirtilen parametreleri kullanarak her şeyi sabit tuttum. Yukarıdaki linkte 3 grafikten eyeballed ettik çıkış Karşı
1 35
2 96
3 88
4 102
5 75
6 116
7 37
8 100
9 80
10 112
: Burada
ikinci nüfusu, = 300. Birinci sütun yıl ben g set olsun çıkıştır. Yine, bu tahminler, bu yüzden onların doğruluğunu teyit etmez edemez:1 25
2 70
3 120
4 33
5 94
6 90
7 98
8 86
9 92
10 70
Ben birinci ve ikinci grafikler maç ancak üçüncü oldukça şaşırtıcı olduğunu çıkışlarını sahip olabilirsem. Mı denklem ses ?:
int i;
int pop;
for (i = 1; i <= k ; i++)
{
pop = (((1 + (g - h)) * pn) - g*(pn*pn)/M) + .5; // the equation
pn = pop; // this takes the new value of pop and inserts it as pn, to be looped until i <= k
cout << i << " " << pop << endl;
}
yok üretecek o. OP, gerçekten (olası) hataları bulmamızı istiyor. Codereview sitesi >> çalışmak için sadece << kod içindir. –