40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
# COMPLETE a função abaixo.
|
|
# Veja os exemplos de utilização e resultados esperados.
|
|
|
|
# polynomial2(a,b,c) deve devolver uma função f tal que
|
|
# f(x) seja o polinómio de segundo grau ax²+bx+c.
|
|
def polynomial2(a, b, c):
|
|
return lambda x: a * x ** 2 + b * x + c
|
|
|
|
|
|
# DESAFIO EXTRA:
|
|
# Crie uma versão generalizada que cria polinómios de qualquer grau.
|
|
# (Não é tão fácil com expressões lambda.)
|
|
|
|
# polynomial(a), onde a=[a0, a1, ..., an], deve devolver uma função f tal que
|
|
# f(x) seja o polinómio a0*x**n + a1*x**(n-1) + ... + an.
|
|
def polynomial(coefs):
|
|
return lambda x: sum([coefs[i] * x ** (len(coefs) - i - 1) for i in range(len(coefs))])
|
|
|
|
|
|
def main():
|
|
xx = [0, 1, 2, 3] # Valores de x a testar
|
|
|
|
print("\nTestes à função polynomial2:")
|
|
p = polynomial2(1, 2, 3) # creates p(x)=x²+2x+3
|
|
print([p(x) for x in xx]) # [3, 6, 11, 18]
|
|
|
|
q = polynomial2(2, 0, -2) # creates q(x)=2x²-2
|
|
print([q(x) for x in xx]) # [-2, 0, 6, 16]
|
|
|
|
print("\nTestes à função polynomial:")
|
|
r = polynomial([1, 2, 3]) # same as p(x)
|
|
print([r(x) for x in xx]) # [3, 6, 11, 18]
|
|
|
|
s = polynomial([1, -1, 0, 100]) # creates s(x)=x³-x²+100
|
|
print([s(x) for x in xx]) # [100, 100, 104, 118]
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|