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

asin von komplexem Winkel liefert nur reelles Ergebnis

 

franzhauke
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 06.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2014, 23:24     Titel: asin von komplexem Winkel liefert nur reelles Ergebnis
  Antworten mit Zitat      
Hallo,

ich schreibe gerade ein Programm zur Berechnung der optischen Eigenschaften einer dielektrischen Schicht. Dabei kommen für Totalreflexion komplexe Winkel heraus, die Matlab ja eigentlich berechnen können müsste.
Der Programmabschnitt sieht etwa so aus:

Code:

theta1 = einfallswinkel
theta2 = asin(n1/n2*sin(theta2))
theta3 = asin(n2/n3*sin(theta2))
 


n1 = 3
n2 = 2
n3 = 4
einfallswinkel = 80 grad bzw. 1,39 rad

Wenn ich die Zeilen plotte, ergibt sich für theta2 ein komplexer Winkel von 1.57 - 0,94i (das soll auch so sein). Abhängig hiervon soll theta3 berechnet werden, der ja eigentlich auch komplex sein müsste...
Das Problem ist jetzt: Für theta3 wird nur der Realteil ausgegeben. Da erhalte ich 0.83-0.00i. Sad

Wenn ich jetzt jedoch genau das Ergebnis von theta2 (1.57 - 0,94i) manuell in theta3 folgendermaßen einsetze (was ansich ja genau das gleiche ist),
Code:

theta3 = asin(n2/n1*sin(1.57 - 0,94i))
 

dann klappt es, und es wird mir das Ergebnis von 0,95-0,94i richtig angeziegt. Ich habe es auch schon versucht so zusammenzubauen:

Code:

theta3 = asin(n2/n1*sin(real(theta2) + i*imag(theta2))
 


Aber auch das klappt nicht.... Was mache ich da falsch, oder ist das ein bug von matlab? Oder wie kann ich den Fehler umgehen Confused Die variablen sind ganz normal als global definiert.
Eigentlich möchte ich daraus nachher noch einen Plot machen, bei dem ich über dem Einfallswinkel plotte, und da wird ab einem bestimmten Einfallswinkel das ja komplex. Also da muss ich das wohl als Variable einsetzen...
Vielen Dank schonmal im Voraus
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: 06.03.2014, 23:53     Titel:
  Antworten mit Zitat      
Hallo,

bitte konsequent Punkt als Dezimaltrennzeichen verwenden.

Bitte auch die Befehle in der Reihenfolge angeben, in der sie ausgeführt werden sollen.

Code:
n1 = 3
n2 = 2
n3 = 4
theta1 = 1.39
theta2 = asin(n1/n2*sin(theta1))
theta3 = asin(n2/n3*sin(theta2)

ergibt bei mir
theta2 =

1.5708 - 0.9402i


theta3 =

0.8298 - 0.0000i

Wenn du nun
Code:
theta3 = asin(n2/n1*sin(1.57 - 0.94i))

berechnest, dann arbeitest du ja mit 1.57 und 0.94 statt 1.5708 und 0.9402 (wobei selbst letztere Werte noch gerundet sind), es ist also kein Wunder, dass etwas anderes herauskommt.

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 06.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2014, 09:54     Titel:
  Antworten mit Zitat      
Vielen Dank Harald,

da hätte ich eigentlich auch selbst drauf kommen können Rolling Eyes
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.