Я работаю над проектом Matlab и хочу сделать градиент следующей функции в Matlab:
f(x) = c^T * x - sum (log(bi - (ai ^ T) * x)).
Где ai^T
— строки случайной матрицы A nxm, где n=2
и m=20
c — случайная матрица nx1, а x — тоже случайная nx1. b — случайная матрица mx1. Я сделал следующее, но результаты, которые я получаю, кажутся неправильными.
function gc0 = gc(x, c, b, A)
for k = 1 : length(A(:,1))
f1(k) = sum(log(b - A(k,:)'*x(k)));
end
gradient(-f1)
gc0 = c - gradient(f1)';
Есть идеи? Я был бы признателен за вашу помощь, я новичок в Matlab..
b(k)
. ТакжеA(k,:).'
на всякий случай.log
неlog10
на случай, если он вам понадобится. Вы не транспонируетеc
и не умножаете наx
- person Ander Biguri   schedule 12.04.2018sum (log(bi - (ai ^ T) * x))
неsum (log(bi - (ai ^ T) * x))
- person Ander Biguri   schedule 12.04.2018