Funktionsübergabe in Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 01:42 Mo 16.02.2009 | Autor: | Bob1982 |
Aufgabe | Wie übergibt man in Matlab (insbesondere komplizierte, verkettete) Funktionsterme ? |
Hallo,
ich habe eine Funktion in Matlab geschrieben, die Integrale mit der Trapezregel annähern soll, und zwar durch Übergabe der Parameter f (Funktionsterm), a,b (Grenzen) und N (Anzahl der Teilintervalle).
Der dazu gehörige Code sieht so aus:
1 function trap = trapez(f,a,b,N)
2 h=(b-a)/N
3 x=[a:h:b]
4 trap=0
5 for k=1:N
6 trap=trap+(h/2)*(feval(f,x(k))+feval(f,x(k+1)))
7 end
8 disp('Die Fläche die der Graph von f im angegebenen Intervall mit der x-Achse einschließt, beträgt: '),trap
Mein Problem ist nun, dass ich nicht weiss, wie ich komplizierte Funktionsterme für f übergeben kann. Wenn ich z.B. exp als String übergebe funktioniert das einwandfrei, aber schon Polynome oder gar Produkte bzw Verkettungen mehrerer Funktionstypen bekomme ich nicht hin...sowas wie [mm]f=cos(x) \cdot e^{sin(x)}[/mm] bekomme ich einfach nicht vernünftig an die Funktion übergeben.
Weiss jemand wie ich das hinbekommen kann ?
Gruß Björn
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 01:52 Mo 16.02.2009 | Autor: | Rene |
Schönen späten Abend,
Versuch mit nem Funktion-Handle, d.h.
func=@(x) cos(x)*exp(sin(x))
func kannst du dann ganz normal an deine Funktion übergeben!
also trapez(func,a,b,N)
MFG
René
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 02:13 Mo 16.02.2009 | Autor: | Bob1982 |
Aufgabe | Wie übergebe ich Funktionen in Matlab ? |
> Schönen späten Abend,
>
> Versuch mit nem Funktion-Handle, d.h.
>
> func=@(x) cos(x)*exp(sin(x))
Füge ich das in meine Funktion trapez ein oder kann ich das auch ganz normal per Kommandozeile eingeben ?
>
> func kannst du dann ganz normal an deine Funktion
> übergeben!
> also trapez(func,a,b,N)
Muss ich noch jedes f durch func ersetzen oder sollte das auch so gehen ?
Jedenfalls erhalte ich immer nur Fehlermeldungen a la:
??? f=@(x) cos(x)*exp(sin(x))
|
Error: "identifier" expected, "(" found.
Ich glaube das Problem ist, dass matlab nach dem @ eine Funktion erwartet, denn die Syntax ist ja
FUNHANDLE = @FUNCTION_NAME is used to create a function handle value.
Und der Ausdruck "(x) cos(x)*exp(sin(x))" wird offensichtlich nicht als solche erkannt.
Hat da jemand noch eine Idee ?
Dank dir fürs Helfen.
Gruß Björn
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 02:20 Mi 18.02.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|