| | | |

Minicurso de Python para Matemáticas

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

3.3 Funciones

En Python, una función se define con la instrucción def. Por ejemplo, el siguiente código implementa la función

f(x)=2x3 (3.6)

e imprime el valor de f(2).

1def f(x):
2 y = 2*x - 3
3 return y
4
5z = f(2)
6print(f'f(2) = {z}')
f(2) = 1
Observación 3.3.0.1.

Para funciones pequeñas, puede usarse la instrucción lambda de funciones anónimas. Por ejemplo,

1f = lambda x: 2*x - 3
2print(f'f(3) = {f(3)}')
f(3) = 3
Ejemplo 3.3.1.(Funciones con parámetros)

El siguiente código implementa el polinomio de primer grado

p(x)=ax+b, (3.7)

con parámetros predeterminados a=1 y b=0 (función identidad).

1def p(x, a=1., b=0.):
2 y = a*x + b
3 return y
4
5print('p(2) =', p(2.))
6print('p(2, 3, -5) =', p(2., 3., -5.))
Ejercicio 3.3.0.1.

Implemente una función para calcular las raíces de un polinomio de grado 2 p(x)=ax2+bx+c.


1import math
2def raiz_poli2(a, b, c):
3 dlta = b**2 - 4.*a*c
4 if (dlta > 0.):
5 x1 = (-b + math.sqrt(dlta))/(2.*a)
6 x2 = (-b - math.sqrt(dlta))/(2.*a)
7 elif (dlta == 0.):
8 x1 = -b/(2.*a)
9 x2 = x1
10 else:
11 x1 = None
12 x2 = None
13 return x1, x2
Ejercicio 3.3.0.2.

Implemente una función que calcula el producto escalar de dos vectores

x=(x0,x1,,xn1), (3.8)
y=(y0,y1,,yn1). (3.9)

Consejo: considere que los vectores se asignan con lists.


1def dot(x, y):
2 s = 0.
3 for xi, yi in zip(x,y):
4 s += xi*yi
5 return s
Ejercicio 3.3.0.3.

Implemente una función que calcula el determinante de matrices 2×2. Consejo: considere que la matriz se asigna con un list encadenado.


1def det(A):
2 d = A[0][0]*A[1][1] \
3 - A[0][1]*A[1][0]
4 return d
Ejercicio 3.3.0.4.

Implemente una función que calcula la multiplicación matriz - vector Ax, con A matriz 2×2 y x un vector de dos elementos. Asuma que la matriz y el vector se asignan usando list.


1def matVet(A, x):
2 n = len(A)
3 y = [0.]*n
4 for i in range(n):
5 for j in range(n):
6 y[i] += A[i][j]*x[j]
7 return y

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.
| | | |