Hoi,
1. gibt es für solche Code-Monster einen [/quote]
pastbin, z.B. den im Link.
2. bitte lager Deinen Code dahin aus, weil sonst der Browser eine unheimlich breite Seite sieht und das macht es allen anderem im Forum schwer Dir zu antworten, weil man den Text kaum gescheit lesen kann.
3.
Irmchen hat geschrieben:Hab diese Formel extra nicht vereinfacht um zu sehen, ...)
Stimmt das nicht, weil man diese Formel nicht vereinfachen
kann. Das zumindest sagt mir mein Computer Algebra System.
4.
Musst Du Fehler machen, wenn Du Deinen Code nicht dokumentierst: Da kann niemand sonst durchblicken und in ein paar Wochen Du auch nicht - unter Garantie.
5.
Musst Du Fehler machen, wenn Du solche Gleichungen so elendig lang schreibst - ich unterstelle hierbei, daß sich solche Gleichungen durchaus einfacher darstellen lassen (siehe Punkt 4). Das ist nur menschlich - die Lösung ist systematischer arbeiten (siehe Beispiel). Dazu gehört auch von einem einfachen Modell (wie im Beispiel auszugehen und das systematisch zu erweiteren - wenn es funktioniert)
6. Kannst Du sicher mehr Features von numpy und scipy nutzen, um Dir das Leben einfacher zu machen.
7. Ist Dein Problem mit Sicherheit nicht das der fehlenden Genauigkeit, da die Gleichung falsch ist - sie ergibt ja auch das falsche Ergebnis, wie Du selber feststellst.
8. Als Tipp: Wenn ich Deine Konstanten variiere, kommen ganz seltsame Größen raus. Ich würde ja fast wetten, daß die Gleichung falsch geklammert ist.
Ich möchte nicht so klingen, als würde ich Dich runtermachen wollen - ich stehe selbst oft genug wie der Ochs vorm Berg. Aber die
Monsterformeln finde ich schon etwas provokant, denn in Ökologie kann ich mir kaum etwas monsterhaftes vorstellen.
Wenn Du zu dieser konkreten Formel Hilfe benötigst, gebe doch bitte eine präzise Fragestellung an. So, wie Du es selber am besten erklärt haben möchtest.
Gruß,
Christian
PS Einfaches Beispiel für logistisches Wachstum - den Code kann sicher vereinfachen, aber es ist als Startbeispiel gedacht, von dem aus man auch die Gleichung variieren kann.
Code: Alles auswählen
from __future__ import division
import numpy as np
import pylab
# increment in time
dt = 1
# instantaneous growth rate constant
u = 0.1
# capacity
capacity = 1e3
# intitial population size
initial = 20
times = np.arange(0, 100, dt)
amount = np.array([])
for t in times:
X = capacity * initial * np.e**(u * t) / \
(capacity + initial * (np.e**(u * t) - 1))
amount = np.append(amount, X)
pylab.plot(times, amount)
pylab.show()