| | | |

Minicurso de Python para Matemáticas

Ayuda a mantener el sitio libre, gratuito y sin publicidad. ¡Colabora!

3.1 Ramificación

Una estructura de ramificación es una instrucción if-[elif-...-elif-else] para la toma de decisiones durante la ejecución de un programa.

3.1.1 if

Por ejemplo, el código siguiente calcula las raíces reales del polinomio

p(x)=ax2+bx+c, (3.1)

con a, b y c asignados al inicio del código.

1import math as m
2a = 1.
3b = -1.
4c = -2.
5dlta = b**2 - 4.*a*c
6if (dlta >= 0.):
7 x1 = (-b - m.sqrt(dlta))/(2.*a)
8 x2 = (-b + m.sqrt(dlta))/(2.*a)
9 print('x1 =', x1)
10 print('x2 =', x2)
x1 = -1.0
x2 = 2.0

En este código, el bloque de comandos (líneas 7-10) se ejecuta solo si el discriminante del polinomio es no negativo. ¡Verificar! Cambie los valores de a, b y c para que p tenga raíces complejas.

Observación 3.1.1.1.(Indentación)

En las líneas 7-10 del código anterior, la indentación de los comandos es obligatoria. El bloque de comandos indentados indica el alcance de la instrucción if.

3.1.2 if-else

Vamos a modificar el código anterior, de modo que las raíces complejas se calculen e impriman cuando sea necesario.

1import math as m
2a = 1.
3b = -4.
4c = 8.
5dlta = b**2 - 4.*a*c
6if (dlta >= 0.):
7 # raízes reais
8 x1 = (-b - m.sqrt(dlta))/(2.*a)
9 x2 = (-b + m.sqrt(dlta))/(2.*a)
10else:
11 # raízes complexas
12 rea = -b/(2.*a)
13 img = m.sqrt(-dlta)/(2.*a)
14 x1 = rea - img*1j
15 x2 = rea + img*1j
16print('x1 =', x1)
17print('x2 =', x2)
x1 = (2-2j)
x2 = (2+2j)
Observación 3.1.2.1.(Número complejo)

En Python, los números complejos pueden ser asignados como objetos de la clase complex. El número imaginario i=1 se denota por 1j y un número completo a+bi por a + b*1j.

3.1.3 if-elif-else

La instrucción elif es una conjunción de una secuencia de instrucciones else-if. Vamos a modificar el código anterior, de modo que el caso de raíces reales dobles se compute de manera apropiada.

1import math as m
2a = 1.
3b = 2.
4c = 1.
5dlta = b**2 - 4.*a*c
6if (dlta > 0.):
7 # raízes reais
8 x1 = (-b - m.sqrt(dlta))/(2.*a)
9 x2 = (-b + m.sqrt(dlta))/(2.*a)
10elif (dlta == 0.):
11 x1 = x2 = -b/(2.*a)
12else:
13 # raízes complexas
14 rea = -b/(2.*a)
15 img = m.sqrt(-dlta)/(2.*a)
16 x1 = rea - img*1j
17 x2 = rea + img*1j
18print('x1 =', x1)
19print('x2 =', x2)
x1 = -1.0
x2 = -1.0
Ejercicio 3.1.3.1.

Desarrolle un código para calcular la raíz del polinomio

f(x)=ax+b (3.2)

con datos dados a y b. El código debe manejar todos los casos posibles, a saber:

  1. a)

    única raíz (a0).

  2. b)

    infinitas raíces (a=b=0).

  3. c)

    no existe raíz (a=0 y b0).


1# parámetros
2a = 2.
3b = 1.
4# raíz
5if (a != 0.):
6 x = -b/a
7 print('raíz única x = ', x)
8elif (b == 0.):
9 print('infinitas raíces x')
10else:
11 print('no existe raíz')
Ejercicio 3.1.3.2.

Desarrolle un código en el que dados tres puntos A, B y C en el plano, verifique si ABC determina un triángulo. Si es afirmativo, clasifíquelo como un triángulo equilátero, isósceles o escaleno.


1import math
2# pts
3A = (0., 0.)
4B = (3., 0.)
5C = (3., 4.)
6# long. lados
7lado_1 = math.sqrt((B[0]-A[0])**2 + (B[1]-A[1])**2)
8lado_2 = math.sqrt((C[0]-B[0])**2 + (C[1]-B[1])**2)
9lado_3 = math.sqrt((C[0]-A[0])**2 + (C[1]-A[1])**2)
10# triangulo?
11if (lado_1 + lado_2 > lado_3) and \
12 (lado_1 + lado_3 > lado_2) and \
13 (lado_2 + lado_3 > lado_1):
14 print('ABC é triângulo:')
15 # equilátero?
16 if lado_1 == lado_2 == lado_3:
17 print('\tequilátero')
18 elif (lado_1 != lado_2 != lado_3):
19 print('\tescaleno')
20 else:
21 print('\tisósceles')
22else:
23 print('ABC não é triângulo')

Envía tu comentario

Aprovecho para agradecer a todas/os que de forma asidua o esporádica contribuyen enviando correcciones, sugerencias y críticas.

Opcional. Ingresa tu nombre para que pueda contactarte.
Opcional. Ingresa tu correo electrónico para que pueda contactarte.
La información ingresada se envía por correo electrónico al desarrollador del sitio y se trata de forma privada. Consulta la política de uso de datos para más información.

Licencia Creative Commons
Este texto se publica bajo los términos de la Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional. Los íconos y elementos gráficos pueden estar sujetos a condiciones adicionales.

Pedro H A Konzen
Sitio derivado de notaspedrok.com.br. Contiene traducciones al español realizadas con GitHub Copilot.
| | | |