Ich versuche, eine Gleichung mit fzero in Matlab numerisch zu lösen. Es ist Teil einer größeren Übung. Ich habe nicht viel hier gepostet, also nicht sicher, wie viel Hintergrundinformationen Sie über diese Übung brauchen, also versuchen Sie es kurz zu halten.Numerische Lösung einer Gamma-Parameter-Schätzung
Dies ist mein Code:
fun = @(a)log(a/xBar) + (1/n) * log(dataProd) + diff(gamma(a))/gamma(a);
x0 = 0.8014;
x = fzero(fun,x0)
Dies sind die Werte: n = 209 XBar ist 0,6078 dataProd = 3.1554e-77
ich die folgende Fehlermeldung in Matlab erhalten:
Operanden zum || und & & Operatoren müssen in logische skalare Werte umwandelbar sein.
Fehler in fzero (Linie 306)
elseif ~ isfinite (fx) || ~ isreal (fx)
Irgendeine Idee, warum ich diese Fehlermeldung bekomme?
was ist 'diff' für dich? Weil 'diff' Unterschiede zwischen benachbarten Werten in einem Array berechnet. Der Unterschied zwischen Werten in einem 1-Wert-Array ist "inexistent" oder "[]", so dass "diff (gamma (a))" '[]' ist. Das macht 'fun (a)' return '[]' wenn 'a' ein einzelner Wert ist, scheitert dieses' fzero'. Eigentlich ist Ihr 'Spaß' nur für einzelne Werte definiert, also gibt es immer '[]' –
Wenn das, was Sie mit dem 'diff' meinen, eine Ableitung der Gamma-Funktion ist, dann schauen Sie sich die Matlab-Funktion' psi' an. Sie können damit Ableitungen von Gamma berechnen. Aber da wir nicht wissen, was Sie versuchen, ist das nur eine Vermutung. – Florian
Ich schaute auf diese Seite: https://se.mathworks.com/help/symbolic/differentiation.html. Deshalb dachte ich, Diff sei die Differenzierung einer Funktion. Was ich will, ist die Ableitung von Gamma am Punkt a geteilt durch Gamma. Ich denke, das ist, was Psi (a) ist. Ich änderte diff (gamma (a))/gamma (a) zu psi (a). Vielen Dank :) –