¿Cómo se puede lograr lo siguiente en Mathematica?¿Hay una función incorporada de Mathematica para encontrar operadores en lugar de números en ecuaciones?
In[1] := Solve[f[2,3]==5,f ∈ {Plus,Minus,Divide}]
Out[1] := Plus
¿Cómo se puede lograr lo siguiente en Mathematica?¿Hay una función incorporada de Mathematica para encontrar operadores en lugar de números en ecuaciones?
In[1] := Solve[f[2,3]==5,f ∈ {Plus,Minus,Divide}]
Out[1] := Plus
la sintaxis de la expresión deseada se puede transformar en un conjunto de Solve
expresiones:
fSolve[expr_, f_ ∈ functions_List] :=
Map[Solve[(expr /. f -> #) && f == #, f] &, functions] // Flatten
Uso de la muestra:
In[6]:= fSolve[f[2,3] == 5, f ∈ {Plus, Subtract, Divide}]
Out[6]= {f -> Plus}
In[7]:= fSolve[f[4,2] == 2, f ∈ {Plus, Subtract, Divide}]
Out[7]= {f -> Subtract, f -> Divide}
La ventaja de este enfoque es que toda la potencia de Solve
permanece disponible para expresiones más complejas, p.
In[8]:= fSolve[D[f[x], x] < f[x], f ∈ {Log, Exp}]
Out[8]= {f -> ConditionalExpression[Log, x Log[x]∈Reals && x>E^ProductLog[1]]}
In[9]:= fSolve[D[f[x], x] <= f[x], f ∈ {Log, Exp}]
Out[9]= {f -> ConditionalExpression[Log, x Log[x]∈Reals && x>=E^ProductLog[1]],
f -> ConditionalExpression[Exp, E^x ∈ Reals]}
También es una solución muy agradable, buena integración con el estándar Solve – magma
Muy agradable. Ojalá hubiera pensado en eso. +1 –
No conozco la función incorporada, pero no es difícil escribir una tú mismo. Este es uno de los enfoques que se pueden utilizar:
[email protected];
correctOperatorQ[expr_, value_,
operators_] := (expr == value) /. Head[expr] -> # & /@ operators
Por cierto, el operador correcta para 2-3
es Subtract
, no Minus
. El resultado de su ejemplo:
correctOperatorQ[f[2, 3], 5, {Plus,Subtract,Divide}]
Out[1]={True, False, False}
Por favor, dime si esto hace lo que quiere:
findFunction[expr_, head_ ∈ {ops__}] :=
[email protected][{ops}, expr /. head -> # & /@ {ops}]
findFunction[f[2, 3] == 5, f ∈ {Plus, Minus, Divide}]
(* Out[]= {Plus} *)
Por cierto, sé que la respuesta se devuelve como una lista, pero como es concebible que coincidan más de una función, creo que no debería devolver solo la primera. –
@ Mr Nice solución! – magma
De hecho se puede lograr mucho más que esto http://stackoverflow.com/questions/3947937/algorithm-for-permutations-of-operators-and-operands/3948113#3948113 –
la cuestión ya estaba ligado entre mis favoritos o__O ... thx para el enlace! –
No estoy seguro de lo que pretendía, pero es posible que esté confundiendo 'Minus' y' Substract', FYI. –