Problemas de Matlab relacionados con el procesamiento de argumentos de funciones
1. getmaths no es una función propia de MATLAB. Lo único que se puede encontrar es una publicación en Baidu Tieba, que dice: function?g?=getmaths(y)
g. ?= ?matlabFunction(sym?(y));
end
La pregunta formulada es similar a la tuya A juzgar por la identificación, debería ser tuya, ¿verdad?
2. Primero, aclaremos la terminología:
Función de manejo: la "función de manejo" que mencionaste debe ser la función generada por getmaths. No se llama "función de manejo". Pero "función anónima". Esto no se llama "función de control", sino "función anónima". En mi opinión, no existe una "función de identificador", pero existe un concepto general de identificador de función.
Funciones y variables independientes: Las funciones y variables independientes que mencionaste en el título son conceptos matemáticos, y sus conceptos correspondientes en MATLAB son expresiones simbólicas y variables simbólicas (variables). Tenga en cuenta en particular que el concepto de función en los lenguajes de programación es diferente del de las matemáticas, y el concepto de variable es diferente del de argumento.
3. Después de aclarar los términos anteriores, ahora podemos decir: La función de matlabFunction llamada por getmaths en el código anterior es convertir la expresión simbólica en una función anónima (por supuesto, si es necesario, puede hacerlo). también se puede convertir en un archivo m).
Lo que hace tu código 2 es obtener la función anónima y a partir de la conversión de la cadena s. En este momento, hay dos variables sey en el espacio de trabajo de MATLAB, y luego el código 3 intenta usar diff(y,a) para encontrar la derivada parcial, pero desde la perspectiva del lenguaje de programación, no hay ninguna variable (nota , no el sentido matemático de la variable independiente), por lo que, por supuesto, algo saldrá mal.
4. Al usar syms, una declaración esencialmente crea una variable de tipo sym a. Vale la pena mencionar que existen múltiples funciones de diferenciación en el sistema MATLAB (puede usar diff -all para verlas), y MATLAB decidirá qué función llamar en función de los tipos de parámetros de entrada, los tipos de estas funciones y sus Orden en el camino.
5. Si desea obtener las variables independientes de la función y, puede usar la función symvar o findsym, pero se requiere cierta conversión del parámetro de entrada y. Por ejemplo, symvar(char(y))
symvar(sym(y))
findsym(sym(x))
¿El motivo de la llamada? diff(y,a) No se requiere conversión porque los parámetros de entrada primero se convertirán dentro de la función diff, pero no las funciones symvar o findsym (la versión específica puede ser diferente). Por cierto, usando diff puedes obtener derivadas parciales de funciones anónimas, pero no todos los identificadores de funciones, aunque esto es sintácticamente posible.