2016-05-10 3 views
0

Пусть функция f в зависимости от символьного вектора переменной длины 5, x. Я хочу получить символический градиент f.Градиент Matlab при отсутствии переменных

c=1 
d=2 
x=sym('x',[1 5]); 
f=-0.5*log(x(1))+x(1)*0.5*(x(2+d)/x(1)-c)^2 
gradient(f) 

Это дает вектор длины 2, поскольку некоторые переменные отсутствуют в f. Можно ли иметь вектор длины 5 с 0, когда переменная отсутствует в функции?

ответ

1

Как легко, как говорил gradient, которые являются символические переменные:

gradient(f,x)

ans = 

(x4/x1 - 1)^2/2 - 1/(2*x1) - (x4*(x4/x1 - 1))/x1 
               0 
               0 
             x4/x1 - 1 
               0 
+0

Спасибо большое, Ander –

+1

@AnthonyHauser рассмотреть вопрос о принятии asnwer, как действительный затем (нажав в green tick) –

+1

Просто небольшая информация: второй параметр 'v' является необязательным и будет выводиться следующим образом:' По умолчанию v - вектор, построенный из всех символических переменных foun d в f. Порядок переменных в этом векторе определяется symvar.' (https://de.mathworks.com/help/symbolic/gradient.html). Именно проблема @AnthonyHauser встречается, потому что его 'f' содержит только 2 сим-переменных :-) – tim

Смежные вопросы