Which solver to use? I cannot get an answer, though I know there is one.
조회 수: 4 (최근 30일)
이전 댓글 표시
Greetings, I am looking to solve a nonlinear equation for a single variable. I have tried using MATLAB's 'solve' function, but it cannot find an answer. I know there is an answer, because I've plotted the left and right hand side, and there is an intersection point. Help? My code is as follows:
clear all;
clc;
close all;
micrometers = 1;
nanometers = micrometers / 1000;
degrees = pi/180;
eps1 = 2.5; % Permittivity, superstrate
epsg = 3; % Permittivity, grating
eps3 = 2.5; % Permittivity, substrate
theta = 0; % [deg.]
period = 1000 * nanometers; % Grating period
gthick = 1000 * nanometers; % Grating thickness
ido = 1; % diffractive order
pol = 'TE';
syms L
kwv = 2*pi/L;
Bi = ((2*pi/L)*(sqrt(epsg)*sin(theta*degrees)-ido*L/period));
ki = (epsg*kwv^2-Bi^2)^(1/2);
gi = (Bi^2-eps1*kwv^2)^(1/2);
di = (Bi^2-eps3*kwv^2)^(1/2);
lhs = tan(ki*gthick);
rhs = ((ki*(gi+di))/(ki^2-gi*di));
solve('lhs = rhs','L')
I get an answer of: Warning: Explicit solution could not be found. > In solve at 81 In Resonance_Calculator at 51
ans =
[ empty sym ]
If you plot LHS and RHS against each other, the intersection is around 1.670
댓글 수: 0
채택된 답변
추가 답변 (1개)
Babak
2012년 8월 23일
편집: Babak
2012년 8월 23일
It seems that in yoru problem you ahve numerical value for all the variables and want to find L.
To do so, I don't recommend using the Symbolic Math Toolbox, but use the Optimization Toolbox.
Use fsolve() instead if you have MATLAB Optimization Toolbox License.
댓글 수: 1
Babak
2012년 8월 23일
Type
help fsolve
in MATLAB Command window to see if you have it or not.
참고 항목
카테고리
Help Center 및 File Exchange에서 Get Started with Symbolic Math Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!