How to solve complex equations?
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Navaneeth
am 13 Feb. 2024
Kommentiert: Navaneeth
am 14 Feb. 2024
I am trying to solve the following equation.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1616073/image.png)
I have the following script to solve for theta, but getting erro when I am running the program.
Any suggestions is much appreciated.
Thank you.
clc;
clear;
close all;
syms theta
assume(0 <= theta <= 2*pi)
t = 0.4e-3;
n = 1.523;
delta_y = 3;
S1 = solve(delta_y == t*sind(theta)*(1 - sqrt((1-sind(theta)^2)/n^2 - sind(theta)^2)),theta);
3 Kommentare
Akzeptierte Antwort
Torsten
am 13 Feb. 2024
Bearbeitet: Torsten
am 13 Feb. 2024
Your equation has only complex solutions.
Note that you used sind instead of sin in the function definition. Thus assuming theta in radians is wrong.
clc;
clear;
close all;
syms theta
%assume(0 <= theta <= 2*pi)
t = 0.4e-3;
n = 1.523;
delta_y = 3;
S1 = solve(delta_y == t*sind(theta)*(1 - sqrt((1-sind(theta)^2)/(n^2 - sind(theta)^2))),theta,'ReturnConditions',1,'MaxDegree',3)
vpa(S1.theta)
S1.parameters
S1.conditions
5 Kommentare
Torsten
am 14 Feb. 2024
Bearbeitet: Torsten
am 14 Feb. 2024
If you use the new parameters, you get back some real solutions:
clc;
clear;
close all;
syms theta
t = 0.7e-3;
n = 1.533;
delta_y = 21.2991*1e-6;
S1 = vpa(solve(delta_y == t*sind(theta)*(1 - sqrt((1-sind(theta)^2)/(n^2 - sind(theta)^2))),theta,'MaxDegree',3))
format long
S1 = double(S1(abs(imag(S1))<1e-6))
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!