Matlab - Como obtener el punto de intersección entre las dos curvas??

   
Vista:

Como obtener el punto de intersección entre las dos curvas??

Publicado por daniel (6 intervenciones) el 10/01/2018 04:01:26
Bueno me gustaría saber como encontrar las coordenadas del punto donde se cruzan esas dos curvas, mis funciones estan definidas como f y f1, estaba intentándolo hacer con la funcion find (g2 == h12), pero no me funciona, la verdad quisiera que me ayudaran o me explicaran el código para hacer esto, por su atención muchas gracias. Aqui les dejo mi codigo en matlab!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function perfil
 
A = [1.013 0.983 0.953 0.872 0.795 0.727 0.666 0.608 0.557 0.509 0.467 0.427 0.392 0.359 0.329 0.302 0.277 0.254 0.233 0.214 0.196 0.180 0.165 0.152 0.139 0.128 0.118];
%  Distancia
d = 60:95;
% Inverso cuadrado
I = 1./(d.^2);
% Factor 
n = 0:26;
F = (I(1 + n))/I(1);
 
 
a = 5;
b = 2.5;
p = 5;
t = 0.02;
w = 15;
x = -13:1:13;
 
 
a1 = 5;
b1 = 2.5;
p1 = 5;
t1 = 0.02;
w1 = 15;
 
f =(2)*((abs(x)>w/2).*(t+(0.5-t)*exp((-b/p)*(abs(x)-(w/2))))+(abs(x)<=w/2).*(1-(0.5)*exp((-a/p)*((w/2)-abs(x)))));
axis([-15 15 -2.2 2.2]);
hold on
f1 =(-2)*((abs(x)>w1/2).*(t1+(0.5-t1)*exp((-b1/p1)*(abs(x)-(w1/2))))+(abs(x)<=w1/2).*(1-(0.5)*exp((-a1/p1)*((w1/2)-abs(x)))));
 
%Campo 
 
 g2 =(f(n+1).*A(1,1))/F(2)-1.0;
 plot(x,g2,'r-');
 
 h12 = (f1(1+n)*A(1,11)/F(13))+2.3;
 plot(x,h12,'r-');
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de David Correa

Como obtener el punto de intersección entre las dos curvas??

Publicado por David Correa correa.dave30@gmail.com (1034 intervenciones) el 12/01/2018 02:57:24
Hola Daniel;

Deberías calcular la distancia entre las dos curvas por cada dato y luego ordenar de menor a mayor y finalmente tomar las dos coordenadas que tengan las menores distancias.

1
2
3
4
5
6
7
8
9
distancia = sqrt((g2-h12).*(g2-h12));
[ndist,ind] = sort(distancia);
 
figure
plot(x,g2,'r-');
hold on
plot(x,h12,'r-');
hold on
plot(x(ind(1:2)),g2(ind(1:2)),'*b')

muestra

Saludos
David Correa Ch.
correa.dave30@gmail.com
dcorrea@fismatlab.org
Servicios de Programación Matlab
http://fismatlab.org
https://www.facebook.com/fismatlabperu
http://fismatlab.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como obtener el punto de intersección entre las dos curvas??

Publicado por daniel (6 intervenciones) el 21/01/2018 09:03:17
Ok, muchas gracias por su respuesta, solo una cosa me podría explicar con mas detalle como funciona esta parte
[ndist,ind] = sort(distancia), una duda mas cuando acerco mi curva (imagen) me doy cuenta que no me marca los puntos donde se intersectan las curvas, mi objetivo es encontrar las coordenadas del punto exacto donde se intersectan, ojala me puedan explicar, de antemano muchas gracias!!
fgfgfg
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad