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

Gleichung lösen

 

Izzzy
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 24.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2013, 13:04     Titel: Gleichung lösen
  Antworten mit Zitat      
Hallo Zusammen!
Ich würde gerne von Matlab eine Gleichung lösen lassen, die sich nicht analytisch lösen lässt. Ich bin relativ neu und weiss nicht so recht wie ich es angehen soll. Meine Gleichung sieht folgendermaßen aus:
r*t2/a*(((pt49-x)/p2)^a-1)-v1^2/2+r*t1/a*((p2/p1)^a-1)+x=0
Ich will x wissen, alle anderen Größen sind bekannt.
Sollte doch eigentlich mittels einem Solver lösbar sein?!

Ich bin dankbar für jede Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

das sollte mit FZERO oder FSOLVE gehen.
Code:

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 24.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2013, 17:14     Titel:
  Antworten mit Zitat      
Hallo! Erstmal danke für die Antowrt!
Ich habe den Teil nun folgendermaßen in Matlab eingegeben. Leider funktioniert es immer noch nicht. Es kommt der Fehler: Error using fzero (line 169)
If FUN is a MATLAB object, it must have an feval method.

syms x

fun=r_luft*t_a/a*(((pt_49-x)/p_a)^a-1)-v_e^2/2+r_luft*t_e/a*((p_a/p_e)^a-1)+x;
x0=50000;
z = fzero(fun,x0)

Kann mir nochmal jemand weiterhlefen?
Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.06.2013, 18:56     Titel:
  Antworten mit Zitat      
Hallo,

halte dich doch an die Doku. Da steht nirgends was von syms, dafür aber von Function Handles Wink

Code:

% Definiere alle Parameter außer x
fun=r_@(x) luft*t_a/a*(((pt_49-x)/p_a)^a-1)-v_e^2/2+r_luft*t_e/a*((p_a/p_e)^a-1)+x;
x0=50000;
z = fzero(fun,x0)


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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 24.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2013, 10:02     Titel:
  Antworten mit Zitat      
Vielen Dank! Mit fsolve hats funktioniert!
Private Nachricht senden Benutzer-Profile anzeigen
 
Izzzy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 24.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2013, 12:21     Titel:
  Antworten mit Zitat      
Hallo,
Matlab gibt mir einen Wert aus, der durchaus realistisch ist, allerdings bekomme ich folgende Fehlermeldung:

No solution found.

fsolve stopped because the problem appears regular as measured by the gradient,
but the vector of function values is not near zero as measured by the
default value of the function tolerance.

<stopping criteria details>

Ich verstehe nicht so ganz was das heißt...
Gruß Isi
Private Nachricht senden Benutzer-Profile anzeigen
 
Izzzy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 24.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2013, 12:31     Titel:
  Antworten mit Zitat      
Ich habe mir die Funktion einmal plotten lassen und das Minimum kommt stimmt mit dem Ergebnis überein, allerdings ist es nicht wirklich eine Nullstelle... kann das das Problem sein?

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  14.27 KB
 Heruntergeladen:  906 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.06.2013, 12:39     Titel:
  Antworten mit Zitat      
Hallo,

MATLAB versucht, ausgehend vom Startwert sich Richtung 0 zu bewegen. Wenn es keine Nullstelle gibt oder die zu weit weg vom Startwert liegt, ist es durchaus möglich, dass keine Nullstelle gefunden werden kann.

Um das ganze in einem Programm richtig abzufangen, würde ich mir immer auch den Parameter EXITFLAG zurückgeben lassen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 24.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2013, 20:46     Titel:
  Antworten mit Zitat      
Hallo,

also das klappt nun, allerdings wird mein Ergebnis komplex. Meine weiteren Ergebnisse, also das fsolve Ergebnis eingesetzt in eine weitere Gleichung, sind real.

Wie geht Matlab denn mit komplexen Zahlen um?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.06.2013, 21:09     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wie geht Matlab denn mit komplexen Zahlen um?

So wie man es auch in Schule / Uni gelernt hat.

Bitte die Frage konkretisieren. Am besten anhand eines Beispiels.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 24.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2013, 18:45     Titel:
  Antworten mit Zitat      
Hallo,

Also das mit der komplexen Zahl sollte passen.

Ich hätte nun aber eine andere Frage: Wenn ich aus Simscape einen Wert in Matlab importiere (To Workspace) schreibt Matlab mir die Werte in eine 1x1 Matrix, bei der Einstellung Timeseries. In meinem Fall Zeit und Temperatur.
Ich möchte ich die Temperatur zum Zeitpunkt t=0 übergeben, sodass

T=T(t=0) also ich möchte nur den Wert der Temperatur. Ist das möglich?

Ist es möglich das ganze über LOAD zu machen?

Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Izzzy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 24.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2013, 19:03     Titel:
  Antworten mit Zitat      
Habe das Problem bereits selbst gelöst Smile
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 - 2024 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.