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

 
Vista:
sin imagen de perfil

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
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

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

Publicado por David Correa (1094 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.
[email protected]
[email protected]
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
sin imagen de perfil

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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

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

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 24/09/2018 17:54:45
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
39
40
41
42
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,'b-');
 [f3,pos]=min((g2-h12).^2);
 plot(x(pos), g2(pos),'x')
 g2(pos)=inf;
   [f3,pos]=min((g2-h12).^2);
 plot(x(pos), g2(pos),'x')

graficas


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/
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 susojuarez (2 intervenciones) el 15/07/2023 19:24:41

Hola ¿sigue alguien pendiente de este hilo?
Es para hacer una consulta.
Gracias.

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