www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Englisch
  Status Grammatik
  Status Lektüre
  Status Korrekturlesen
  Status Übersetzung
  Status Sonstiges (Englisch)

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Mathematica" - Gleichungssystem mit Mutatione
Gleichungssystem mit Mutatione < Mathematica < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Gleichungssystem mit Mutatione: Hilfe zur Programmierung
Status: (Frage) beantwortet Status 
Datum: 12:18 Mi 24.02.2010
Autor: Daidalus

Hallo,

zwecks Simulation möchte ich in Mathematica eine Virusinfektion simulieren. Das Problem ist, daß zunehmend neue Mutationen entstehen. Um das umzusetzen, habe ich die folgende Schleife programmiert:


...
v1[0] = 1;
v2[0] = 0;
v3[0] = 0;
  ...

Do[o[t_] = RandomReal[]; a[t_] = RandomReal[];
   v1[t_] =
    v1[t - 1] + h v1[t - 1] (r (1 + ix) - p x1[t - 1] - q z[t - 1]);
   w2[t_] =
    v2[t - 1] + h v2[t - 1] (r (1 + ix) - p x2[t - 1] - q z[t - 1]);
   w3[t_] =
    v3[t - 1] + h v3[t - 1] (r (1 + ix) - p x3[t - 1] - q z[t - 1]);
   x1[t_] =
    x1[t - 1] +
     h (c v1[t - 1] -  
        u  x1[t - 1]  (1 + v1[t - 1] + v2[t - 1] + v3[t - 1]));
   x2[t_] =
    x2[t - 1] +
     h (c v2[t - 1] -  
        u  x2[t - 1]  (1 + v1[t - 1] + v2[t - 1] + v3[t - 1]));
   x3[t_] =
    x3[t - 1] +
     h (c v3[t - 1] -  
        u  x3[t - 1]  (1 + v1[t - 1] + v2[t - 1] + v3[t - 1]));
   z[t_] = z[t - 1] + h (( 1 - ix) k - u z[t - 1]);
   v2[t_] = If[ w2[t] <= 0 && o[t] > 0.95, a[t], w2[t]];
   v3[t_] =
    If[ w3[t] <= 0 && ö[t] > 0.95 &&  w2[t] > 0, ä[t], w3[t]];
   X1[t] = x1[t]; X2[t] = x2[t]; X3[t] = x3[t]; V1[t] = v1[t];
   V2[t] = v2[t]; V3[t] = v3[t]; W2[t] = w2[t]; W3[t] = w3[t];
   Z[t] = z[t]; U[t] = o[t]; A[t] = a[t], {t, 1, T}];

Das Problem ist, daß ich somit jede mögliche Virusmutation v[t] and die zugehörigen Antigene x[t] zuvor programmieren muß, Null setze und dann beim Eintreffen der Bedingung auf einen höheren Wert setze. In dem Beispiel sind nur 3 Mutationen angeben, sollten es aber mehr sein, wird es sehr schnell umständlich.

Weiß jemand wie es möglich ist, daß Mathematica innerhalb der Do-Funktion neue Funktionen anhängt? Mit append kann man leider keine Funktionen anhängen.

Danke für die Hilfe!


Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
http://www.matheplanet.com/default3.html?call=viewforum.php?forum=41004&ref=http%3A%2F%2Fwww.google.com%2Fsearch%3Fhl%3Dde%26safe%3Doff%26client%3Dfirefox-a%26hs%3D1MZ%26rls%3Dorg.mozilla%253Ade%253Aofficial%26q%3Dmathematica%2Bhilfe%2Bforum%26btnG%3DSuche%26lr%3D%26cts%3D1267006033985%26aq%3Df%26oq%3D

        
Bezug
Gleichungssystem mit Mutatione: Antwort
Status: (Antwort) fertig Status 
Datum: 12:46 Mi 24.02.2010
Autor: Peter_Pein

Hallöle,

wie wäre es, wenn Du v und x als Listen implementierst ({v1,v2....} bzw {x1,x2,...}?

Da es sich augenscheinlich um einen iterativen Prozess handelt, wäre es eventuell auch lohnend, sich in der Hilfe auch mal NestList bzw. NestWhileList anzuschauen.

Allerdings verstehe ich nicht, warum a und o als Funktionen mit Parameter definiert sind (a=o=RandomReal verhielte sich genau so) und warum Du die Funktionen v1,v2 etc  in jedem Schleifendurchlauf neu definierst, aber ich kenne ja auch nicht das ganze Programm.

Gruß,
Peter

Bezug
                
Bezug
Gleichungssystem mit Mutatione: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:10 Mi 24.02.2010
Autor: Daidalus

Danke für die Antwort,

möglicherweise ist NestList auch ein Option, jedoch handelt es sich hier um ein Gleichungssystem. Nest scheint sich nur auf eine Funktion, wenn auch mit mehreren Argumenten zu beziehen.

Die Funktionen für v2, v3 werden als w2 und w3 neu definiert, da ab einem bestimmten Punkt der Wert exogen von Null auf ein positive Zahl gesetzt wird.

Das System ist eigentlich das folgende:

[mm] v_i[t+1] [/mm] = [mm] v_i[/mm] [t] + h v1[t] (r (1 + ix) - p [mm] x_i[/mm] [t] - q z[t]);

[mm] x_i[t+1] =x_i[/mm] [t] + h (c [mm] v_i[/mm] [t] -u [mm] x_i[/mm] [t] (1 + [mm] Summe_i[v_i[/mm] [t];

z[t+1] = z[t] + h (( 1 - ix) k - u z[t]);

mit i=1,..,n;

und der Wahrscheinlichkeit einer neue Mutation bei 5% per Periode liegt.

Das Problem ist, daß ich nicht die n Gleichungen für [mm] v_i [/mm] und [mm] x_i [/mm] zuvor programmieren möchte, sondern daß Mathematica jeweils zwei neue Funktionen dazu setzen sollte mit der entsprechenden Wahrscheinlichkeit.

Bezug
                        
Bezug
Gleichungssystem mit Mutatione: Antwort
Status: (Antwort) fertig Status 
Datum: 20:28 Mi 24.02.2010
Autor: Peter_Pein

Nenn mich stur, aber ich bin der festen Überzeugung, dass es für neue Mutationen keine Funktionen, sondern Daten braucht.

Ich habe das mal fix hingetippselt. Leider weiss ich nicht genau, welche Werte für die Konstanten typisch sind und habe mental gewürfelt ;-)

Auch war mir unklar, wie neue Mutationen ihre Startwerte gesetzt bekommen müssen; hier lasse ich Mathematica würfeln.

Ein Testlauf brachte mir folgendes Schaubild (sieht eigentlich plausibel aus):
[Dateianhang nicht öffentlich]

Das [a]Notebook ist im Anhang.

Gruß,
Peter


Dateianhänge:
Anhang Nr. 1 (Typ: png) [nicht öffentlich]
Anhang Nr. 2 (Typ: nb) [nicht öffentlich]
Bezug
                                
Bezug
Gleichungssystem mit Mutatione: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 22:04 Mi 24.02.2010
Autor: Daidalus

Vielen Dank für die Mühe! Leider ist mir ein Fehler bei der Notation unterlaufen. In der Darstellung ist das v1[t] ein [mm] v_i[/mm] [t]. Das Problem ist, daß die Mutation nicht nur Perturbationen der Werte sind, sondern eigenständige Funktioen. Vielleicht noch mal ein einfacheres Bespiel:

Nehmen wir an, das System ist wie folgt:

gegeben [mm] $x_1(0)$ [/mm] und [mm] $x_1(0)$ [/mm]
[mm] $v_1(t+1) [/mm] = a [mm] v_1(t) [/mm] + b [mm] x_1(t)$; [/mm]
[mm] $x_1(t+1) [/mm] = c [mm] v_1(t) [/mm] + d [mm] x_1(t)$; [/mm]

Angenommen, die Mutationswahrscheinlichkeit liegt bei 5%.Jetzt gibt es z.B. 30 Iterationen, ohne daß ein Wert RandomReal größer 0.95 erscheint. Die Ausgabe beinhaltet also 2 x 30 Werte.

In Periode 31 ist der Wert wird RandomReal > 0.95 erzeugt, somit kommt ein Mutant hinzu. Das Gleichungssystem lautet dann:

[mm] $v_1(t+1) [/mm] = a [mm] v_1(t) [/mm] + b [mm] x_1(t)$; [/mm]
[mm] $x_1(t+1) [/mm] = c [mm] v_1(t) [/mm] + d [mm] x_1(t)$; [/mm]
[mm] $v_2(t+1) [/mm] = a [mm] v_2(t) [/mm] + b [mm] x_2(t)$; [/mm]
[mm] $x_2(t+1) [/mm] = c [mm] v_2(t) [/mm] + d [mm] x_2(t)$; [/mm]

Mit de Wert [mm] $v_2(30)= [/mm] Z$ [mm] $x_2(30) [/mm] = W$, wobei Z und W irgendwelche Zufallsvariablen sind.

In 45 Periode/Iteration trifft die Bedingung wieder zu.  Wir haben also 2x 30 Werte für die ersten 30 Perioden + 15 x 4Werte für Periode 30 bis 45 (zuzüglich der Ursprungsbedingungen). Jetzt kommen wieder 2 weitere Gleichungen für [mm] v_3(t) [/mm] und [mm] x_3(t) [/mm] hinzu. Ich möchte also, daß Mathematica automatisch zwei Funktionen anfügt, sobald die bedigung erfüllt ist.

Bezug
                                        
Bezug
Gleichungssystem mit Mutatione: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:20 Di 02.03.2010
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.englischraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]