| | | |

Minicurso de Python para Matemática

Material disponível para compra: e-book livro. Consulte outras formas de colaboração aqui!

3.3 Funções

Em Python, uma função é definida pela instrução def. Por exemplo, o seguinte código implementa a função

f(x)=2x3 (3.6)

e imprime o 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
Observação 3.3.1.

Para funções pequenas, pode-se utilizar a instrução lambda de funções anônimas. Por exemplo,

1f = lambda x: 2*x - 3
2print(f'f(3) = {f(3)}')
f(3) = 3
Exemplo 3.3.1.(Funções com parâmetros)

O seguinte código, implementa o polinômio de primeiro grau

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

com parâmetros predeterminados a=1 e b=0 (função identidade).

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.))
E. 3.3.1.

Implemente uma função para computar as raízes de um polinômio de grau 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
E. 3.3.2.

Implemente uma função que computa o produto escalar de dois vetores

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

Dica: considere que os vetores são alocados com lists.


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

Implemente uma função que computa o determinante de matrizes 2×2. Dica: considere que a matriz está alocada com um list encadeado.


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

Implemente uma função que computa a multiplicação matriz - vetor Ax, com A matriz 2×2 e x um vetor de dois elementos. Assuma que a matriz e o vetor estão alocados 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

Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a política de uso de dados para mais informações.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Pedro H A Konzen
| | | |