Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:42 Sa 20.11.2004 | Autor: | regine |
Hallo,
ich habe ein System von Dgl's, welches ich in Matlab auswerten möchte.
Mein Problem liegt nicht in der Auswertung, sondern in der Schreibweise eines bestimmten Ausdrucks.
Der folgende Code steht in einem m-File:
function dy = f(t,y)
dy = zeros(2,1);
dy(1) = y(2);
dy(2) = -0.2 * y(2) - 4*sign(y(2)) - y(1) + 2*cos(pi * t);
Das Problem liegt bei der sign-Funktion. Es ist klar, dass ich z.B. "sign(x)" schreiben kann. Kommt er denn auch mit der oben gewählten Schreibweise zurecht?
Ich schreibe das System noch mal in leserlicher Form auf:
[mm] $y_1' [/mm] = [mm] y_2$
[/mm]
[mm] $y_2' [/mm] = -0.2 * [mm] y_2 [/mm] - [mm] 4*sign(y_2) [/mm] - [mm] y_1 [/mm] + 2*cos( [mm] \pi [/mm] * t)$.
Danke und viele Grüße,
Regine.
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:04 Sa 20.11.2004 | Autor: | Peter_Pein |
Hallo Regine,
es spricht eigentlich nichts dagegen, es so zu schreiben, wie Du es getan hast. Es könnte aber sein, dass der Lösungsagorithmus an der Unstetigkeit scheitert. Dann könntest Du z.B. tanh(50*y(2)) als Näherung für sign(y(2)) verwenden.
Gruß,
Peter
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:27 So 21.11.2004 | Autor: | regine |
Hallo,
danke für Deine Antwort.
Diesen Fall müßte ich aber doch mit einem Integrator wie ode15s in den Griff bekommen, oder?
Viele Grüße,
Regine.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:36 So 21.11.2004 | Autor: | Peter_Pein |
Hallo Regine,
da ich noch nie mit matlab gearbeitet habe, kann ich Dir da auch nicht näheres sagen.
Versuch doch mal bei google groups (oder mit einem news-reader) bei comp.soft-sys.matlab zu schauen. Oder vieleicht findest Du bei ODE Software for MATLAB etwas nützliches.
Tut mir leid, dass ich nicht weiter helfen kann,
Peter
|
|
|
|
|
Hallo regine,
es kommt darauf an, was die sign-Funktion ausgeben soll. Sie gibt eine Vorzeichenmatrix zurück in der Größe des Argumentes. Wenn dein y(2) also eine Zahl ist (1x1-Matrix), dann ist der Rückgabewert ebenfalls eine Zahl.
Hugo
|
|
|
|