2011-05-30 11 views

Respuesta

12

Las suposiciones subyacentes, por así decirlo, se aplican por los usos internos de PossibleZeroQ. Si esa función no puede considerar que una expresión es cero, se considerará que no es cero, por lo tanto, es elegible para usar como un pivote en la reducción de filas (que generalmente es lo que se usa para el NullSpace simbólico).

--- --- edición

Se planteó la cuestión con respecto a lo que podría ser visible en las pruebas de cero en álgebra lineal simbólica. Por defecto, las llamadas al PossibleZeroQ pasan por rutas internas. PossibleZeroQ fue construido más allá de esos.

Siempre hay una pregunta en el desarrollo del código del kernel de Mathematica de lo que debe pasar por el circuito principal del evaluador y qué (por ejemplo, para la velocidad) debe cortocircuitarse. Solo el primero es fácil de rastrear.

Se puede influir en el proceso de álgebra lineal simbólica especificando una prueba de cero no predeterminada. Podría ser, p.

myTest[ee_]:= (Print[zerotesting[ee]]; PossibleZeroQ[ee]) 

y luego usar ZeroTest->myTest en NullSpace.

--- --- final de edición

+0

@Daniel Lichtblau ¿Es posible saber qué llamadas a qué llamadas se realizaron a PossibleZeroQ? –

+3

@Tyson Williams Ver edición –

+0

@Daniel Lichtblau ¿Hay alguna manera más natural de decirle al comando NullSpace qué polinomios son cero? Intenté 'En [4]: ​​= m = {{a, b}, {c, d}};' 'En [5]: = Suponiendo que [ad == bc, NullSpace [m]]' 'Out [5] = {}' pero no funcionó. –

4

encontrado esto:

En este caso, si expande su matriz mediante una columna, la suposición muestra arriba:

NullSpace[{{a, b, 1}, {c, d, 1}}] 

{{-((-b+d)/(-b c+a d)),-((a-c)/(-b c+a d)),1}} 

Quizás útil en algunas situaciones

Cuestiones relacionadas