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

Maximalen Wert einer symbolischen Variable berechnen

 

at0m_t0mato
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.04.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 02.05.2017, 21:53     Titel: Maximalen Wert einer symbolischen Variable berechnen
  Antworten mit Zitat      
Hallo zusammen,

kann mir jemand sagen, wie ich den maximalen Wert einer symbolischen Variable ermitteln kann?

Mein code-Ausschnitt ist:
Code:

syms t
Y=int(A*sin(2*pi*f2*t));
 


Ich habe schon viel gegoogelt und auch ein bisschen was gefunden. Zum einen wurde in einem etwas älteren thread gesagt, man solle mal
Code:


ausprobieren. Da hat mich Matlab aber schon auf den Befehl "vpa" verwiesen:
Code:

Ymax = vpa(Y)
 


Da gibt mir das Command-Window folgendes raus:
Ymax = -0.0000034028605658161345003563798646754*cos(125.66370614359172953850573533118*t)

Nach weiterem Suchen kam ich dann auf so Sachen wie:
Code:

Ymax = feval(symengine,'max',Y);
 


...woraufhin mir folgendes ausgegeben wird:
Y_max =
-(788812420860653*cos(40*pi*t))/(73786976294838206464*pi)


Ich kann mit beiden Vorschlägen nicht so richtig was anfangen. Ich will ja nur den Wert ermitteln, wo die Amplitude meiner -cos Funktion maximal ist. Könnt ihr mir weiterhelfen? Bin ich schon auf dem richtigen Weg???

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

Wie sind A und f2 vorher definiert?

Grundsätzlich würde ich da den Ansatz verfolgen, den man schon in der Schule gelernt hat: ableiten (diff) und auf 0 setzen (solve).

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
at0m_t0mato
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.04.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 02.05.2017, 22:47     Titel:
  Antworten mit Zitat      
Sowohl A, als auch f2 sind feste Zahlen:
A = 4.2762e-04;
f2 = 20;

Ich hab keine Ahnung, wie ich mit diesen symbolischen Variablen umgehen muss....
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.05.2017, 07:16     Titel:
  Antworten mit Zitat      
Hallo,

die benötigten Befehle diff und solve habe ich dir ja genannt.
Der nächste Schritt wäre dann ein Blick in die Doku der Befehle:
https://www.mathworks.com/help/symbolic/diff.html
https://www.mathworks.com/help/symbolic/solve.html

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
at0m_t0mato
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.04.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 06.05.2017, 13:44     Titel:
  Antworten mit Zitat      
Hallo,

also es hat zwar etwas gedauert, aber ich habe nun alle Nullstellen der abgeleiteten Funktion bestimmen können.
Danke für die Hilfe bis hierher.

Es fehlt mir nur noch ein aller letzter kleiner Schritt:
Wenn ich nun eine Nullstelle der abgeleiteten Funktion in meine Ausgangsfunktion einsetze, erhalte ich das Maximum der Ausgangsfunktion. Klar soweit. Bei meiner Ausgangsfunktion handelt es sich allerdings immer noch um ein "1x1 sym". Würde es sich um einen "double" handeln, würde ich einfach abfragen, welchen Wert die Funktion an der Stelle x0 hat, mit:
Code:

y2_max = y2(x0(2));    %y2 ist die Ausgangsfunktion
 


Wie kann ich das aber nun ermitteln, wenn es sich dabei um eine symbolische Variable handelt?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.05.2017, 14:05     Titel:
  Antworten mit Zitat      
Hallo,

einsetzen in symbolische Ausdrücke geht mit subs.
Auch eval kann in solchen Fällen helfen.
Leider ist mir die Situation nicht 100%ig klar. Dazu wäre ein (reproduzierbares) Beispiel hilfreich.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
at0m_t0mato
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 04.04.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 06.05.2017, 14:22     Titel:
  Antworten mit Zitat      
Hallo,

ok, dann sehe ich mir die Befehle subs und eval mal an und schaue was sich damit anstellen lässt.

Ansonsten habe ich meinen Code mal stark eingekürzt, um das aktuelle Problem etwas besser verständlich zu machen.
Code:

clear all
close all
clc

Fs=2560;
Ts=1/Fs;
t=0:Ts:0.5;
A=1;
f=20;

y1=A*sin(2*pi*f*t);       %sin-Funktion Geschwindigkeit
x0=t(diff(sign(y1))~=0);  %findet alle NST von y1      

%Darstellung der gefilterten Funktion======================================
figure(2);
subplot(2,1,1)
plot(t, y1); grid on;        %Darstellung der sin-Funktion
xlabel('Zeit [s]');
ylabel('Geschwindigkeit [ms^-1]');
title('Geschwindigkeit');

syms t;                    %Symbolic Math Toolbox
y2=int(A*sin(2*pi*f*t));    %unbestimmt integrierte Funktion Weg

subplot(2,1,2)
fplot(matlabFunction(y2), [0, 0.5]) %Darstellung der integrierten sin-Funktion
grid on;
xlabel('Zeit [s]');
ylabel('Weg [m]');
title('Weg');

%Max Wert der Amplitude der Auslenkung bestimmen===========================
 


Wie schon gesagt, möchte ich "nur" die maximale Amplitude der 2. Funktion (-cos), die ein <1x1 sym> ist, rausfinden.

Grüße


EDIT:
Yo, habs schon hinbekommen!
Habe nun subs verwendet:
Code:

%Max Wert der Amplitude der Auslenkung bestimmen===========================
y2_max = subs(y2,t,x0(2))
 


Vielen Dank! Sie haben mir sehr geholfen! Vielen, vielen Dank!

Grüße
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.