Matlab, was macht das (AT) < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:07 Fr 10.09.2010 | Autor: | Disap |
Hallo zusammen!
Ich habe eine Frage zu folgendem Beispiel (es geht um die allerletzte Zeile)
Funktion:
1: |
| 2: | function d = abc(t, x, omega, gamme)
| 3: | A = [0, 1; -omega. ^2, -2.*gamma ]
| 4: | d = A*x
|
Funktionsaufruf:
1: |
| 2: | x0 = [0, 1]
| 3: | ts = [0, 2*pi]
| 4: | omega = 1
| 5: | gamma = 1
| 6: |
| 7: | [t, x] = ode45(@abc, ts, x0, [], omega, gamma)
|
Was genau bewirkt das @abc? Wird damit die Funktion d aufgerufen? Ist dies also äquivalent zu
[t, x] = ode45(abc(ts,x0,omega,gamma), ts, x0, [], omega, gamma) ?
Viele Grüße
Disap
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:24 Sa 11.09.2010 | Autor: | Blech |
Hi,
schau Dir die Matlab Hilfe zu function handle an.
Kurzversion:
Gib
irgendwas = abc(ts,x0,omega,gamma)
ein, dann kriegst Du die Variable irgendwas, deren Wert abc ausgewertet an (ts,x0,omega,gamma) ist.
ode45(abc(ts,x0,omega,gamma), ts, x0, [], omega, gamma)
übergibt jetzt genau diesen Wert an ode45; nicht die Funktion abc sondern den Wert der Funktion an einer bestimmten Stelle.
ode45(@abc, ts, x0, [], omega, gamma)
hingegen übergibt keinen Wert sondern die Funktion abc.
ciao
Stefan
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:48 Sa 11.09.2010 | Autor: | Disap |
Hallo blech!
Danke für deine Antwort.
Genau diese ganzen Fälle konnte ich nie unterscheiden. Das sieht alles so gleich aus.
Aber nun ists klar, danke sehr!
Beste Grüße
Disap
|
|
|
|