En el lápiz-y-papel sentido, su matriz Jacobiana es correcta. Supongo que el código da errores debido al hecho de que el interpreta las flechas $*$ en $$A\stackrel\downarrow*(x^t*A*x)$$ as a product of matrices, rather than as the multiplication matrix-by-scalar. Thus it checks the dimensions, it sees that you are trying to multiply a $(d\veces d)$ vector by a $(1\times 1)$ vector, and it concludes that you are making a syntax error. We humans implicitly assume $$A(x^tAx)=A\cdot (x^t*A*x)$$
Donde $*$ es el mapa que hace que el producto de una $(n\times k)$ $(k\times m)$ matriz de obtener un $(n\times m)$ matriz, y $\cdot$ es el mapa que se asigna a un $(n\times m)$ matriz y un escalar (número de id est, $(1\times1)$ de la matriz) el apropiado cosa. Sin embargo, como justificados y útil como es, sigue siendo un uso incoherente (en realidad, la falta de uso) de la notación.
La máquina no puede hacer tal cosa.
Para verlo más claramente, observe lo que ocurre con el cálculo de la \begin{align}f(x+h)-f(x)&=A(x+h)((x+h)^tA(x+h))-Ax(x^tAx)=\\&=Ax(h^tAx)+Ax(x^tAh)+Ah(x^tAx)+o(\lvert h\rvert)=\\&= 2Axx^tAh+Ah(x^tAx)+o(\lvert h\rvert)\end{align}
Observe que no hay ningún problema en escribir $A*x*\alpha$, debido a que $A:(d\times d)$, $x:(d\times 1)$ y $\alpha:(1\times1)$.
El cálculo anterior muestra que el diferencial de $D_xf$ es en realidad el mapa de $D_xf(h)= 2Axx^tAh+Ah(x^tAx)$. Podría escribir como que si su propósito es el de evaluar.
Sin embargo, si usted desea una matriz de $\nabla_xf$ tal que $\nabla_xfh=D_xf(h)$, se puede obtener con la identidad de $h*\alpha=(\alpha\cdot I)*h$ donde $I$ $d\times d$ matriz identidad,
de modo que $$\nabla_xf=2*A*x*x^t*A+A*((x^t*A*x)\cdot I)$$
Cómo se producen los escalares múltiples de la matriz de identidad podría depender del lenguaje de programación, pero no debe haber varias opciones, una vez que sabemos que el problema está ahí.
Otro camino podría ser escrito $((x^t*A*x)*A)$, debido a que algunos lenguajes de programación tienen sólo el escalar por la matriz producto de la sobrecarga en el símbolo $*$, en lugar de la matriz por escalar producto.