Pregunta acerca de la programación en Python


#1

Hola, tengo duda acerca de la introducción de funciones con dos variebles, generalmente cuando depende de una variable suelo realizar la siguiente función:

from sympy import * 
f1=factorial(2*k+7)/factorial(k-3)
#o si quiero que me realice alguna funcion que no esta definida:
def comb(m, n):
    factorm = factorial(m)
    factorn = factorial(n)
    factormn = factorial(m - n)
    a = factorm / (factorn * factormn)
    return a
def poten(m, n):
    a=m**n
    return a
#y despues defino la función como:
f2=poten(-1,k)*comb(n,k)/factorial(k)  (por ejemplo)

mi problema es al querer hacer esto con dos variables:
no se como poder definir funciones por ejemplo:
f(n,k)=2^k**comb(n,k)

Alguien podría ayudarme?


#3

Estás mezclando conceptos, aquí f2 NO es una función, es una variable que almacena un resultado:

f2=poten(-1,k)*comb(n,k)/factorial(k)

Se ve mejor con un ejemplo:

>>> i = 1
>>> j = 2
>>> def a(v): return v
... 
>>> def b(v): return v
... 
>>> f = a(i)*b(j)
>>> f
2
>>> type(f)
<type 'int'>


>>> f() = a(i)*b(j)
  File "<stdin>", line 1
SyntaxError: can't assign to function call
>>> f = a*b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for *: 'function' and 'function'

Necesitas definir una función real:

>>> def f(n,k): return n + k
... 
>>> f(a(i), b(j))
3

En tu caso podría ser algo parecido a:

def f(n,k):
    return 2^k**comb(n,k)

#4

muchas gracias, es que es la primera vez que trabajo con python y por eso mezclo cosas…
me estoy jugando el aprobado en un trabajo que debo hacer…
:slight_smile:


#5

Uff, yo no me he enterado mucho. Luego me lo leo de nuevo.
Lo mismo quieres que la funcion no te devuelva un solo valor, sino que te devuelva varios. Lo tienes fácil. Haz que devuelva una lista.


#8

si tengo un polinomio por ejemplo
2x^2+3x
El coeficiente lider es 2 (el que acompaña al mayor grado)
hay alguna función de Sympy que lo haga?
sabeis paginas donde puedo consultar?

Poly(polinomio).nth(Poly(polinomio).degree())

da error


#9

Vas bien encaminada:

>>> from sympy import degree, symbols, Poly
>>> x = symbols('x')
>>> Poly(2*x**2 + 3*x).degree()
2