¿La derivada de la Norma [xt, 2] ^ 2 dada por Mathica coincide con lo que se supone que es su derivada?

Todo está confundido. ¿Por qué estás, en In [9], dando una entrada de x (que aparentemente se supone que representa un vector) a una función cuyo argumento es theta (que aparentemente se supone que es un escalar)? ¿Y por qué llama a la función en x cuando la función ya invoca x independientemente de su argumento?

Entonces, primero piense en lo que quiere decir. Luego, al rescatarlo, tenga en cuenta que Mathematica trata algo como una lista si y solo si tiene encabezado List (teniendo en cuenta que {} es azúcar sintáctico para List []) en el momento en que Mathematica lo está procesando realmente . Por lo tanto, incluso si su función proporciona resultados razonables cuando se llama como dJd [{1,2,3}], es probable que haga algo estúpido si la llama como dJd [x] a menos que x se evalúe de inmediato en una lista. Por ejemplo, si su función llama a Longitud [], entonces la Longitud [{1,2,3}] será 3 pero la Longitud [x] será 0. Volver atrás y poner un valor vectorial con una sustitución manual más tarde es poco probable que revierte cualquier cosa estúpida que ya haya sucedido.

La norma [] es una función muy probable que haga cosas estúpidas en este contexto, porque se aplica de manera diferente a números, vectores y matrices.

Entonces, como mínimo,

* Deshágase de la Norma [] y escriba la suya que sea más predecible.

* Utilice los patrones como ventaja para detener cualquier función que solo proporcione resultados razonables para que las listas reales acepten cualquier cosa que no sea una lista.

mynorm [x_List, t_List]: = Sqrt [ [correo electrónico protegido] @ (xt) ^ 2]

o, incluso más exigente,

mynorm [x_List, t_List]: = Sqrt [ [correo electrónico protegido] @ (xt) ^ 2] /; VectorQ [x] && VectorQ [t]