in Matlab, muss ich den symbolischen Gradienten einer Funktion mit f(x)
x
ein Vektor der Dimension berechnen 5.Matlab Gradienten
x=sym('x',[1,2,3,4,5]);
c=[1 2 4 3 5 3 4 5 4 3 4 34 5 6];
d=[1 0 1 0 0 1 1 1 0 0 0 1 0 1];
f [email protected](x) sum(-0.5*log(x(1))+x(1)*0.5*(x(2+d)/x(1)-c).^2-log(exp(x(2+d).*c+x(4+d))./(exp(x(2)*c+x(4))+exp(x(3)*c+x(5)))))
grad_f=gradient(f)
Die Meldung des Fehlers ist: ''
Undefinierte Operator 'für Eingabeargumente vom Typ' function_handle '.
Fehler im Gradienten> parse_inputs (Zeile 146) f = f. ';
Fehler im Gradienten (Zeile 48) [f, ndim, loc, rflag] = parse_inputs (f, varargin);
Wissen Sie, wo der Fehler ist?
Die Dokumente implizieren, dass die 'gradient' Funktion einen numerischen Vektor, nicht eine Funktion handle: http://www.mathworks.com/help/matlab/ref/gradient.html – Dan
@Dan gibt es eine symbolische' Steigung ' – Yvon
symbolischer' gradient' akzeptiert symbolische Funktion 'f' als Eingabe. Ihre Definition ist ein Funktions-Handle. Versuchen Sie, '@ (x)' http://www.mathworks.com/help/symbolic/gradient.html – Yvon