matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Schulmathe
  Status Primarstufe
  Status Mathe Klassen 5-7
  Status Mathe Klassen 8-10
  Status Oberstufenmathe
    Status Schul-Analysis
    Status Lin. Algebra/Vektor
    Status Stochastik
    Status Abivorbereitung
  Status Mathe-Wettbewerbe
    Status Bundeswettb. Mathe
    Status Deutsche MO
    Status Internationale MO
    Status MO andere Länder
    Status Känguru
  Status Sonstiges

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
StartseiteMatheForenMathematicaContourplot numerischer Funkt.
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Philosophie • Religion • Kunst • Musik • Sport • Pädagogik
Forum "Mathematica" - Contourplot numerischer Funkt.
Contourplot numerischer Funkt. < Mathematica < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Contourplot numerischer Funkt.: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 18:14 Mi 16.02.2011
Autor: JackyJay

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Hallo zusammen ich habe eine Frage:

Ich muss ein Differentialgleichungssystem lösen, welches keine
analytische Lösung hat. Dazu benutze ich NDSolve.
In dem System befindet sich noch ein zusätzlicher Parameter w, den ich
gerne variieren möchte.
Am ende möchte ich nämlich einen Contourplot zeichnen mit x-achse die
zeit (x) und y-achse den anderen parameter(w).
Es sieht ungefähr so aus:
NDSolve[{y1'[x] == f (y1[x], y2[x], w, ...),
   y2'[x] == f (y1[x], y2[x], w, ...),
   ...
   y1[0] == 1, y2[0] == 0, ...}, {y1, y2, ...}, {x, 0, 100}];
     Die Funtion f ist einfach eine beliebige Funktion, die von den
anderen y und eben dem parameter w abhängt.

Ich habe 2 ansätze versucht, komme aber bei beiden nicht so richtig weiter:
1. Ansatz
Ich benutze eine for schleife und variere den parameter w, wie ich es
möchte.
Ich bekomme dann die Lösung abhängig von w ( y1[w],y2[w],...) und jedes
y[w] ist natürlich auch noch von x abhängig.
Jetzt weiss ich aber nicht wie ich das in einen plot bekomme. Also z.b. y2[x,w].

2. Ansatz
Die 2. idee kommt aus der Hilfe:
NDSolve[eqns,y,{x,Subscript[x, min],Subscript[x, max]},{t,Subscript[t,
min],Subscript[t, max]}]
Damit sollte es doch eigentlich gehen.
Also angewandt auf mein Beispiel :
NDSolve[{y1'[x] == f (y1[x], y2[x], w, ...),
   y2'[x] == f (y1[x], y2[x], w, ...),
   ...
   y1[0] == 1, y2[0] == 0, ...}, {y1, y2, ...}, {x, 0, 100},{w,0,1}] Oder
NDSolve[{y1'[x] == f (y1[x], y2[x], w, ...),
   y2'[x] == f (y1[x], y2[x], w, ...),
   ...
   y1[0] == 1, y2[0] == 0, ...},y4, {x, 0, 100},{w,0,1}]
Im ersten Fall geb ich alle y aus im 2. Fall nur das gewünschte y4.
Allerdings bekomme ich bei beiden die Fehlermeldung:

NDSolve::derlen: The length of the derivative operator Derivative[1] in
[mm] (y4^\[Prime])[x] [/mm] is not the same as the number of arguments. >>

Hat da jemand eine idee?

        
Bezug
Contourplot numerischer Funkt.: Antwort
Status: (Antwort) fertig Status 
Datum: 13:45 Di 22.02.2011
Autor: halirutan

Moin,

mehrere Sachen, damit die Methode funktioniert

1. Du musst wissen, dass NDSolve die DGL mit allen Parameterwerten im gewuenschten Intervall loesen kann. Ansonsten fliegt dir der ContourPlot um die Ohren.

2.  Weil hier bei jedem Punkt (x,w) neu integriert werden muss sollte man vielleicht ueberlegen, ob man nicht lieber Datenpunkte erzeugt und ListContourPlot nimmt.
Nehmen wir an, du willst dir eine Matrix erstellen, in der dann die Funktionswerte fuer verschiedene Werte (x,w) stehen, dann kannst du jede Zeile ausrechnen indem du 1x NDSolve benutzt, eine Funktion erhaelst und die an allen Punkten x abtastest. Dann nimmst du den naechsten Wert w und machst das gleiche. So musst du fuer jede Zeile nur einmal integrieren.

Ansonsten geht es wie folgt. Bau dir eine Funktion, die ein Wertepaar (x,w) bekommt und dann deine DGL fuer dieses spezielle w von 0 (oder von wo auch immer) bis x integriert. Dann gibst du den Punkt f(x,w) zurueck, indem du die Werte in die erhaltene Interpolationsfunktion einsetzt. Fuer das erste Beispiel aus der Hilfe zu NDSolve ergibt sich dann sowas wie

1: fc = Compile[{{x, _Real}, {w, _Real}}, 
2:   Block[{xx, 
3:     yy}, (yy /. 
4:       First@NDSolve[{yy'[xx] == yy[xx] Cos[w*xx + yy[xx]], 
5:          yy[0] == 1}, yy, {xx, 0, x}])[x]
6:    ], RuntimeOptions -> "Speed"]
7: f[x_?NumericQ, w_?NumericQ] := fc[x, w]
8:
9: ContourPlot[f[x, w], {x, 2, 5}, {w, 2, 5}]


[Dateianhang nicht öffentlich]

Cheers
Patrick


Dateianhänge:
Anhang Nr. 1 (Typ: png) [nicht öffentlich]
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


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