WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Syms variablen in Anonymous Functions konvertieren

 

MathMatl
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 11.05.15
Wohnort: ---
Version: R2015a- Academic License
     Beitrag Verfasst am: 13.09.2015, 13:50     Titel: Syms variablen in Anonymous Functions konvertieren
  Antworten mit Zitat      
Hallo liebe Matlabcomunity,

ich habe eine Problem mit dem numerischen Berechnen von Integralen, welches ich nach längerem rumprobieren nicht lösen konnte.

Nach einer längeren Rechnung erhalte ich eine Gleichung f(s) in der nur s als "sym" Variable vorkommt. Die Funktion f soll nun nach s integriert werden, was jedoch analytisch nicht machbar ist und der klassische "int" Befehl mir keine Lösung gibt.

Deshalb wollte ich auf die numerische Fassung mit dem "integral" Befehl umsteigen, jedoch benötigt der eine "@" Funktion als Eingabe (Anonymous Functions).

Versuche die Funktion mit z.B. mit subs@(x)(f,s,x) umzuwandeln haben jedoch keinen Erfolg erzielt.

Hatte jemand schon mal ein ähnliches Problem bzw. eine Lösung?

Ich wünsche euch ein schönes Restwochenende.

Alexander
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 13.09.2015, 16:15     Titel:
  Antworten mit Zitat      
Zitat:
Versuche die Funktion mit z.B. mit subs@(x)(f,s,x) umzuwandeln haben jedoch keinen Erfolg erzielt.
was ist dabei passiert? wie sah die genaue syntax aus? hast du ein minimal beispiel? welche fehlermeldungen sind aufgetreten?
das siht so auch sehr komisch aus. viel ehr sollte es etwas sein wie
Code:

hast du mal vpa versucht so wie in der dokumentation vorgeschlagen?
Zitat:
If int cannot compute a closed form of a definite integral, try approximating that integral numerically using vpa.


grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
MathMatl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 11.05.15
Wohnort: ---
Version: R2015a- Academic License
     Beitrag Verfasst am: 13.09.2015, 17:11     Titel:
  Antworten mit Zitat      
Hallo Winkow,

du hast natürlich Recht ich, habe auch die Form
Code:

verwendet und einen kleine Fehler beim abtippen im Forum gemacht ; )

Ich habe euch mal ein Minimalbeispiel konstruiert, welches dem Problem im eigentlich Programm entspricht, samt Fehlermeldung.

Code:

syms s
g=2*s*pi;


f=@(x)(subs(g,s,x))
integral(f,1,2)
 


Die Fehlermeldung sieht wie folgt aus:
Code:
Error using integralCalc/finalInputChecks (line 511)
Input function must return 'double' or 'single' values. Found 'sym'.

Error in integralCalc/iterateScalarValued (line 315)
                finalInputChecks(x,fx);

Error in integralCalc/vadapt (line 132)
            [q,errbnd] = iterateScalarValued(u,tinterval,pathlen);

Error in integralCalc (line 75)
        [q,errbnd] = vadapt(@AtoBInvTransform,interval);

Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
 



VPA war eine gute Idee, daran hab ich gar nicht mehr gedacht, leider war sie nicht von Erfolg gekrönt. Hier erhalte ich wenigstens keine Fehlermeldung aber auch kein Ergebniss.

Code:
integral =
 
numeric::int(...)


Vielen Dank schon mal für die erste Hilfe : )

Gruß

Alexander
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 13.09.2015, 17:41     Titel:
  Antworten mit Zitat      
versuchs mal so
Code:
syms s
g=2*s*pi;
f=@(x)eval(subs(g,s,x))
integral(f,1,2)

grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
MathMatl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 11.05.15
Wohnort: ---
Version: R2015a- Academic License
     Beitrag Verfasst am: 13.09.2015, 18:02     Titel:
  Antworten mit Zitat      
Vielen Dank, es funktioniert tadellos und ist zudem auch noch sehr schnell!

Ich wünsche noch einen schönen Sonntagabend. Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.09.2015, 20:02     Titel:
  Antworten mit Zitat      
Hallo,

zwei Hinweise: zum einen kann (ohne Umwandlung) mit int symbolisch integriert werden, zum anderen kann man die Umwandlung mit matlabFunction erledigen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 13.09.2015, 20:30     Titel: Re: Syms variablen in Anonymous Functions konvertieren
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
zwei Hinweise: zum einen kann (ohne Umwandlung) mit int symbolisch integriert werden,

ich denke das gilt nur für sein vereinfachtes minimalbeispiel nicht für das ursprüngliche problem oder?
MathMatl hat Folgendes geschrieben:
Die Funktion f soll nun nach s integriert werden, was jedoch analytisch nicht machbar ist und der klassische "int" Befehl mir keine Lösung gibt.

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.09.2015, 22:19     Titel:
  Antworten mit Zitat      
Hallo,

wohl wahr - ich hatte nicht den gesamten Thread gelesen.

Bleibt also vpa oder der Weg über Integral, wobei matlabFunction ein m.E. eleganterer Weg zur Umwandlung ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 13.09.2015, 23:52     Titel:
  Antworten mit Zitat      
Zitat:
wobei matlabFunction ein m.E. eleganterer Weg zur Umwandlung ist.

ja da muss ich dir rechgeben Smile
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.