Ejercicio: 1Eva_2021PAOII_T2 Intersección de funciones – Obstrucción Radioenlace
Planteamiento del ejercicio
Para analizar la obstrucción se usan las expresiones del polinomio encontrado en el tema anterior y la función descrita en el enunciado. Se debe encontrar las distrancias en las que ambas expresiones son iguales, o también:
p(d)- f(d) = 0
a. Establezca un intervalo de análisis para cada raíz.
Según la gráfica presentada en el Tema 1 se tendrán que encontrar dos raíces:
[0,700] y [700,1300]
La expresión a usar en el ejercicio se obtiene como:
p_{3}(d) = 85.0+ 0.05941 d - 0.0001015 d^2 +3.842x10^{-8}d^3
y para el radio de fresnel:
f(d) = h_{antena} - r
r = \sqrt{\frac{n \lambda d_1 d_2}{d_1+d_2}}
d_2 = d_{enlace} - d_1
reemplazando los valores en las expresiones
f(d) = 100 - \sqrt{\frac{1 (0.3278 d_1 (3700-d_1}{3700}}
La expresión para el ejercicio en el intervalo de obstrucción según la gráfica del tema 1 es:
g(d) = p(d)- f(d) = 0
g(d) = 85.0+ 0.05941 d - 0.0001015 d^2 +3.842x10^{-8}d^3 -
- 100 - \sqrt{\frac{1 (0.3278 d_1 (3700-d_1}{3700}}
Dado que es un ejercicio que se utiliza muchas veces en el análisis de radioenlaces, se utilizaría un algoritmo para aplicarlo en diferentes situaciones.
b. Realice al menos 3 iteraciones con el método de la Bisección para encontrar la primera raíz (izquierda)
a = 0, b = 700
con a = 0
g(0) = p(0)- f(0) = -15
p(0) = 85.0+ 0.05941 (0) - 0.0001015 (0)^2 +3.842x10^{-8}(0)^3 = 85
f(d) = 100 - \sqrt{\frac{1 (0.3278 d_1 (3700-d_1}{3700}} =100
con b = 700
g(700) = p(700)- f(700) = 3.67
p(700) = 85.0+ 0.05941 (700) - 0.0001015 (700)^2 +3.842x10^{-8}(700)^3
f(700) = 100 - \sqrt{\frac{1 (0.3278 (700) (3700-(700)}{3700}}
como hay cambio de signo entre g(a) y g(b), debe existir una raiz en el intervalo
iteración 1
c= \frac{a+b}{2} = \frac{700-0}{2} = 350
p(350) = 85.0+ 0.05941 (350) - 0.0001015 (350)^2 +3.842x10^{-8}(350)^3
f(350) = 100 - \sqrt{\frac{1 (0.3278 (350) (3700-(350}{3700}}
g(350) = p(350)- f(350) = 5.199
como la referencia es
g(0) = -15
g(700) = 3.67
hay cambio de signo entre [0,350]
error estimado = 350-0 = 350
iteración 2
c= \frac{a+b}{2} = \frac{350-0}{2} = 175
p(175) = 85.0+ 0.05941 (175) - 0.0001015 (175)^2 +3.842x10^{-8}(175)^3
f(175) = 100 - \sqrt{\frac{1 (0.3278 (175) (3700-(175}{3700}}
g(175) = -113.1
como la referencia es
g(0) = -15
g(350) = 5.199
hay cambio de signo entre [175,350]
error estimado = 350-175 = 175
iteración 3
c= \frac{a+b}{2} = \frac{175-350}{2} = 262.5
p(262.5) = 85.0+ 0.05941 (262.5) - 0.0001015 (262.5)^2 +3.842x10^{-8}(262.5)^3
f(262.5) = 100 - \sqrt{\frac{1 (0.3278 (262.5) (3700-(262.5}{3700}}
g(262.5) = 3.23
Instrucciones en Python
resultado usando el algoritmo:
[ i, a, c, b, f(a), f(c), f(b), tramo]
1 0.000 350.000 700.000 -15.000 5.199 3.670 700.000
2 0.000 175.000 350.000 -15.000 -0.113 5.199 350.000
3 175.000 262.500 350.000 -0.113 3.237 5.199 175.000
4 175.000 218.750 262.500 -0.113 1.755 3.237 87.500
5 175.000 196.875 218.750 -0.113 0.872 1.755 43.750
6 175.000 185.938 196.875 -0.113 0.393 0.872 21.875
7 175.000 180.469 185.938 -0.113 0.143 0.393 10.938
8 175.000 177.734 180.469 -0.113 0.016 0.143 5.469
9 175.000 176.367 177.734 -0.113 -0.048 0.016 2.734
10 176.367 177.051 177.734 -0.048 -0.016 0.016 1.367
11 177.051 177.393 177.734 -0.016 -0.000 0.016 0.684
12 177.393 177.563 177.734 -0.000 0.008 0.016 0.342
13 177.393 177.478 177.563 -0.000 0.004 0.008 0.171
14 177.393 177.435 177.478 -0.000 0.002 0.004 0.085
15 177.393 177.414 177.435 -0.000 0.001 0.002 0.043
16 177.393 177.403 177.414 -0.000 0.000 0.001 0.021
17 177.393 177.398 177.403 -0.000 0.000 0.000 0.011
18 177.393 177.395 177.398 -0.000 -0.000 0.000 0.005
19 177.395 177.397 177.398 -0.000 0.000 0.000 0.003
20 177.395 177.396 177.397 -0.000 0.000 0.000 0.001
21 177.395 177.396 177.396 -0.000 0.000 0.000 0.001
raiz: 177.39558219909668
raiz en: 177.39558219909668
error en tramo: 0.000667572021484375
# Algoritmo de Bisección
# [a,b] se escogen de la gráfica de la función
# error = tolera
import numpy as np
import matplotlib.pyplot as plt
# INGRESO
p = lambda d: 85.0 + 0.05941*d - 0.0001015*d**2 +3.842e-8*d**3
f = lambda d: 100 - np.sqrt(1*(0.3278)*d*(3700-d)/3700)
fx = lambda d: p(d)- f(d)
a_todo = 0
b_todo = 1300
a = 0
b = 700
tolera = 0.001
muestras = 41
# PROCEDIMIENTO
# PROCEDIMIENTO
tabla = []
tramo = b-a
fa = fx(a)
fb = fx(b)
i = 1
while (tramo>tolera):
c = (a+b)/2
fc = fx(c)
tabla.append([i,a,c,b,fa,fc,fb,tramo])
i = i + 1
cambia = np.sign(fa)*np.sign(fc)
if (cambia<0):
b = c
fb = fc
else:
a=c
fa = fc
tramo = b-a
c = (a+b)/2
fc = fx(c)
tabla.append([i,a,c,b,fa,fc,fb,tramo])
tabla = np.array(tabla)
raiz = c
# SALIDA
np.set_printoptions(precision = 4)
print('[ i, a, c, b, f(a), f(c), f(b), tramo]')
# print(tabla)
# Tabla con formato
n=len(tabla)
for i in range(0,n,1):
unafila = tabla[i]
formato = '{:.0f}'+' '+(len(unafila)-1)*'{:.3f} '
unafila = formato.format(*unafila)
print(unafila)
print('raiz: ',raiz)
print(' raiz en: ', c)
print('error en tramo: ', tramo)
# GRAFICA
xi = np.linspace(a_todo,b_todo,muestras)
yi = fx(xi)
pi = p(xi)
ri = f(xi)
plt.plot(xi,yi,label='g(d)=p(d)-f(d)')
plt.plot(xi,pi,label='p(d)')
plt.plot(xi,ri,label='f(d)_Fresnel')
plt.axhline(0, color='grey')
plt.xlabel('d')
plt.legend()
plt.title('obstruccion Fresnel')
plt.show()
c. Desarrolle al menos 3 iteraciones con el método del Punto fijo para encontrar el segundo punto (derecha)
La siguiente raíz se encuentra con algoritmo presentado o también con el algoritmo del siguiente literal usando la misma expresion g(d).
a = 700 b= 1300
raiz en: 867.1000480651855
error en tramo: 0.00057220458984375