2016-12-06 1 views
0

sur le graphique ci-dessous, les deux courbes se croisent à 3 points. Un sur le côté gauche, un au milieu et un sur le côté droit. J'ai besoin de trouver les coordonnées (x, y) pour les trois points d'intersection, mais j'ai du mal à comprendre comment faire cela. Ci-dessous mon code à ce jour et l'intrigue:MATLAB- Comment trouver plusieurs points d'intersection x et y à partir de deux courbes

Click here for plot

Voici mon code:

% Define 

b1=3.5; 
b2=4.5; 
rho1=2.7; 
rho2=3.3; 
h=40; 
u2=(b2^2)*rho2; 


f1=.15; 
w1=2*pi*f1; 
cvec=3.5:.01:4.5; 
p2=1./cvec; 
lhs=tan(h*w1.*sqrt((1./b1.^2)-(p2.^2))); 
rhs=(u2.*sqrt((p2.^2)-(1./b2.^2)))./(u1.*sqrt((1./b1.^2)-(p2.^2))); 

plot(cvec,rhs,cvec,lhs) 
xlim([3.6 4.6]) 

Répondre

1

Votre code n'exécute (u1 manque). Mais de toute façon, vous pouvez soustraire LHS-rhs et ensuite chercher les résultats zero-crossing

à savoir

zci = @(v) find(v(1:end-1).*circshift(v(2:end), [-1 0]) <= 0); % Returns Zero-Crossing Indices Of Argument Vector 
zx = zci(lhs-rhs); 
cross_points = cvec(zx)