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 mit der Schleife lösen

 

SerKuz
Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 07.11.12
Wohnort: ---
Version: MATLAB R2016b
     Beitrag Verfasst am: 23.04.2014, 18:56     Titel: Gleichung mit der Schleife lösen
  Antworten mit Zitat      
Hallo Community,

ich möchte folgende Gleichung:


kappa=1.4
Ma=4
delta=20°
theta=gesucht

Mein Ansatz sieht so aus:

Code:
Ma=input('Geben Sie die Machzahl an: ');
delta=input('Geben Sie die delta an [°]: ');
delta=delta*pi/180;
k=input('Geben Sie die kappa an: ');
N=1000;
theta=linspace(0,pi,N);
i=0;
theta=0;
while theta<delta
    i=i+1;
    tan(delta)=2*cot(theta(i)).*(Ma^2*sin(theta(i)).^2-1)/...
        (Ma^2*(k+cos(2*theta(i).))+2);
end
theta=theta*180/pi;
disp('Winkel ist ')
theta(i)


Da ich das ganze im Forum poste, klappt es selbstverständlich nicht. Deswegen bitte um Hilfe.
Bin ich total auf dem falschem Dampfer ?

Danke im Voraus.

Gruß
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: 23.04.2014, 19:11     Titel:
  Antworten mit Zitat      
hallo. welche fehlermeldungen treten denn auf? ich kann mir schon vorstellen welche aber sowas ist immer wichtig mitzuposten.
delta nd theta werden in der schleife nicht geändert. also wird an der while bedingung auch nichts geändert.
Code:
ist eine zuweisung. wenn du also tan als variablen namen überspeichert hast und delta eine positive ganze zahl ist geht das . sonst nicht.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
SerKuz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 07.11.12
Wohnort: ---
Version: MATLAB R2016b
     Beitrag Verfasst am: 23.04.2014, 19:21     Titel:
  Antworten mit Zitat      
Winkow hat Folgendes geschrieben:
hallo. welche fehlermeldungen treten denn auf? ich kann mir schon vorstellen welche aber sowas ist immer wichtig mitzuposten.
delta nd theta werden in der schleife nicht geändert. also wird an der while bedingung auch nichts geändert.
Code:
ist eine zuweisung. wenn du also tan als variablen namen überspeichert hast und delta eine positive ganze zahl ist geht das . sonst nicht.


Danke für die schnelle Antwort.
Fehlermeldung:
Subscript indices must either be real positive integers or logicals.

Error in Triebwerke_Berechnung_theta_aus_delta (line 13)
tan(delta)=2*cot(theta(i)).*(Ma^2*sin(theta(i)).^2-1)/...


Ähm, die Frage wird wahrscheinlich ziemlich trivial erscheinen, aber wie bewältigt man das Problem ?
Private Nachricht senden Benutzer-Profile anzeigen
 
SerKuz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 07.11.12
Wohnort: ---
Version: MATLAB R2016b
     Beitrag Verfasst am: 23.04.2014, 19:37     Titel:
  Antworten mit Zitat      
Winkow hat Folgendes geschrieben:
...und delta eine positive ganze zahl ist geht das . sonst nicht.

Delta ist 0.3491(20°in rad umgerechnet).
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.04.2014, 20:54     Titel: Re: Gleichung mit der Schleife lösen
  Antworten mit Zitat      
Hallo SerKuz,

Was soll denn diese Zeile bewirken:
Code:
tan(delta) = 2*cot(theta(i)).*(Ma^2*sin(theta(i)).^2-1)/...
        (Ma^2*(k+cos(2*theta(i).))+2);

Da steht auf der linken Seite ein Ausdruck, der berechnet wird, nämlich "tan(delta)". Das erlaubt aber keine Zuweisung. Winkow hatte bereits darauf hingewiesen.

Meinst Du vielleicht:
Code:

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
SerKuz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 07.11.12
Wohnort: ---
Version: MATLAB R2016b
     Beitrag Verfasst am: 23.04.2014, 21:10     Titel: Re: Gleichung mit der Schleife lösen
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo SerKuz,

Was soll denn diese Zeile bewirken:
Code:
tan(delta) = 2*cot(theta(i)).*(Ma^2*sin(theta(i)).^2-1)/...
        (Ma^2*(k+cos(2*theta(i).))+2);

Da steht auf der linken Seite ein Ausdruck, der berechnet wird, nämlich "tan(delta)". Das erlaubt aber keine Zuweisung. Winkow hatte bereits darauf hingewiesen.

Meinst Du vielleicht:
Code:

Gruß, Jan

Hallo Jan,

die Zeile sollte im Prinzip den Ausdruck auf der rechten Seiten auf den Ausdruck auf der linken Seite angleichen. Also quasi die Gleichung ins Gleichgewicht bringen.
Ich verstehe nicht so wirklich, was ich anstatt der Zuweisung benutzt werden sollten.

Gruß SerKuz

P.S.:
Ist der logische Operator sinnvoller ?

Code:
tan(delta)==2*atan(theta(i))...
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: 23.04.2014, 21:40     Titel:
  Antworten mit Zitat      
Hallo,

wenn du die Gleichung nach theta auflösen willst, wie die eingängliche Beschreibung nahelegt, dann ist die Vorgehensweise nicht sinnvoll.

Schau dir stattdessen mal fzero oder fsolve an.

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

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.04.2014, 04:17     Titel: Re: Gleichung mit der Schleife lösen
  Antworten mit Zitat      
Hallo Harald,

So weit ich es verstehe, geht es um delta, und das steht nur auf der linken Seite.

Hallo SerKuz,

Der "="-Operator weist der Variablen auf der linken Seite den Wert zu, der auf der rechten Seite berechnet wird. Der "=="-Operator vergleicht zwei Werte.

In Deinem Fall steht bei "tan(delta) = ..." aber keine Variable auf der linken Seite, sondern ein mathematischer Ausdruck. Mit "tan" meinst Du ja keinen Vektor, sondern die Tangens-Funktion, oder?
Eigentlich suchst Du aber doch nach dem wert für delta, oder?

Wenn Du nun eine Gleichung für "tan(delta) = x" hast, kann man auf beiden Seiten die ArcusTangens-Funktion anwenden und die Gleichung so auflösen, dass man "delta = atan(x)" erhält.

Hilft das? Wenn nicht, beschreibe doch bitte, was der gezeigte Code machen soll. Nur auf Grundlage eines Codes mit einem Fehler kann man ja einen Verbesserungsvorschlag nur erraten.

Gruß, Jan
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: 24.04.2014, 09:21     Titel:
  Antworten mit Zitat      
Hallo Jan,

Zitat:
So weit ich es verstehe, geht es um delta, und das steht nur auf der linken Seite.

Das ist die entscheidende Frage, die wohl nur der Fragesteller endgültig beantworten kann. Ich verstehe es andersherum, da eingangs steht:
Zitat:
delta=20°
theta=gesucht

Die folgenden input-Befehle unterstützen die Vermutung.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 07.11.12
Wohnort: ---
Version: MATLAB R2016b
     Beitrag Verfasst am: 24.04.2014, 19:52     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

wenn du die Gleichung nach theta auflösen willst, wie die eingängliche Beschreibung nahelegt, dann ist die Vorgehensweise nicht sinnvoll.

Schau dir stattdessen mal fzero oder fsolve an.

Grüße,
Harald


Hallo Harald,

danke für den Tipp.

Gruß SerKuz
Private Nachricht senden Benutzer-Profile anzeigen
 
SerKuz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 07.11.12
Wohnort: ---
Version: MATLAB R2016b
     Beitrag Verfasst am: 24.04.2014, 19:57     Titel: Re: Gleichung mit der Schleife lösen
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo Harald,

So weit ich es verstehe, geht es um delta, und das steht nur auf der linken Seite.

Hallo SerKuz,

Der "="-Operator weist der Variablen auf der linken Seite den Wert zu, der auf der rechten Seite berechnet wird. Der "=="-Operator vergleicht zwei Werte.

In Deinem Fall steht bei "tan(delta) = ..." aber keine Variable auf der linken Seite, sondern ein mathematischer Ausdruck. Mit "tan" meinst Du ja keinen Vektor, sondern die Tangens-Funktion, oder?
Eigentlich suchst Du aber doch nach dem wert für delta, oder?

Wenn Du nun eine Gleichung für "tan(delta) = x" hast, kann man auf beiden Seiten die ArcusTangens-Funktion anwenden und die Gleichung so auflösen, dass man "delta = atan(x)" erhält.

Hilft das? Wenn nicht, beschreibe doch bitte, was der gezeigte Code machen soll. Nur auf Grundlage eines Codes mit einem Fehler kann man ja einen Verbesserungsvorschlag nur erraten.

Gruß, Jan


Hallo Jan,

mit der Schleife wollte ich theta bestimmen. Da es für die Gleichung keine analytische Lösung gibt, dachte ich, dass es mit der while-Schleife klappen würde den Wert "theta" auf der rechten Seite so anzupassen, dass er dem tan(delta) gleich ist. So war der Grundgekannte beim Angehen des Problems.


Gruß SerKuz
Private Nachricht senden Benutzer-Profile anzeigen
 
SerKuz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 07.11.12
Wohnort: ---
Version: MATLAB R2016b
     Beitrag Verfasst am: 24.04.2014, 20:01     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo Jan,

Zitat:
So weit ich es verstehe, geht es um delta, und das steht nur auf der linken Seite.

Das ist die entscheidende Frage, die wohl nur der Fragesteller endgültig beantworten kann. Ich verstehe es andersherum, da eingangs steht:
Zitat:
delta=20°
theta=gesucht

Die folgenden input-Befehle unterstützen die Vermutung.

Grüße,
Harald


Jan S hat Folgendes geschrieben:

Hallo Harald,

So weit ich es verstehe, geht es um delta, und das steht nur auf der linken Seite.

Hallo SerKuz,

Der "="-Operator weist der Variablen auf der linken Seite den Wert zu, der auf der rechten Seite berechnet wird. Der "=="-Operator vergleicht zwei Werte.

In Deinem Fall steht bei "tan(delta) = ..." aber keine Variable auf der linken Seite, sondern ein mathematischer Ausdruck. Mit "tan" meinst Du ja keinen Vektor, sondern die Tangens-Funktion, oder?
Eigentlich suchst Du aber doch nach dem wert für delta, oder?

Wenn Du nun eine Gleichung für "tan(delta) = x" hast, kann man auf beiden Seiten die ArcusTangens-Funktion anwenden und die Gleichung so auflösen, dass man "delta = atan(x)" erhält.

Hilft das? Wenn nicht, beschreibe doch bitte, was der gezeigte Code machen soll. Nur auf Grundlage eines Codes mit einem Fehler kann man ja einen Verbesserungsvorschlag nur erraten.

Gruß, Jan


Verzeihung, wenn ich mich zweideutig ausgedrückt habe.
Harald hat recht. Meine Absicht ist es den Wert "theta" zu bestimmen.

Vielen Dank an euch für die Tipps und aktive Hilfe. Ich werde es noch mit dem
Code:
Ansatz probieren an das Problem ranzugehen.

Gruß SerKuz
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.