How to find the intersection values?
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
How to find the intersection values of line(black) and the curve(blue)
clc
close all
d1 = 0.4;d2 = 0.6;d = d1 + d2;
n1 = sqrt(12);n2 = 1;
lambda = linspace(400e-3,800e-3, 100000);
D1 = (2*pi*n1*d1)./lambda;D2 = (2*pi*n2*d2)./lambda;
RHS = cos(D1).*cos(D2) - 0.5*(n1^2+n2^2)/(n1*n2) * sin(D1) .*sin(D2);
plot(lambda,RHS)
hold on
yline(-1);
hold off
hold on
yline(1);
0 commentaires
Réponse acceptée
Bruno Luong
le 17 Août 2023
d1 = 0.4;d2 = 0.6;d = d1 + d2;
n1 = sqrt(12);n2 = 1;
lambda = linspace(400e-3,800e-3, 100000);
D1 = (2*pi*n1*d1)./lambda;D2 = (2*pi*n2*d2)./lambda;
RHS = cos(D1).*cos(D2) - 0.5*(n1^2+n2^2)/(n1*n2) * sin(D1) .*sin(D2);
plot(lambda,RHS)
hold on
for yx = [-1 1]
yline(yx);
ys = RHS-yx;
i = find(ys(1:end-1).*ys(2:end) <= 0);
% linear interpolation
i1 = i; ss1 = ys(i1);
i2 = i1 + 1; ss2 = ys(i2);
w = ss2./(ss2-ss1);
xx = w.*lambda(i1) + (1-w).*lambda(i2);
plot(xx, yx+zeros(size(xx)), 'rx')
end
Plus de réponses (1)
Torsten
le 17 Août 2023
format long
d1 = 0.4;d2 = 0.6;d = d1 + d2;
n1 = sqrt(12);n2 = 1;
D1 = @(lambda)(2*pi*n1*d1)./lambda;D2 = @(lambda)(2*pi*n2*d2)./lambda;
RHS = @(lambda)cos(D1(lambda)).*cos(D2(lambda)) - 0.5*(n1^2+n2^2)/(n1*n2) * sin(D1(lambda)) .*sin(D2(lambda));
% Case -1
start = [0.42,0.45,0.56,0.59,0.72];
offset = -1;
rhs = @(lambda) RHS(lambda)-offset;
for i = 1:numel(start)
sol(i) = fsolve(rhs,start(i),optimset('Display','none'));
end
sol
% Case 1
start = [0.4,0.47,0.52,0.63,0.67];
offset = 1;
rhs = @(lambda) RHS(lambda)-offset;
for i = 1:numel(start)
sol(i) = fsolve(rhs,start(i),optimset('Display','none'));
end
sol
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!