Я новичок в Matlab и мне интересно, как ввести вектор в символическую функцию.В документе сказано, что создание векторов по x = sym('x',[50 1])
и использование его для генерации целевой функции f(x)
, но это не сработает, если я хочу проверить значение функции, когда x = one (50,1), так каквход ожидает 50 переменных.
Как я могу изменить свой код для достижения этого?
m = 100;
n = 50;
A = rand(m,n);
b = rand(m,1);
c = rand(n,1);
% initialize objective function
syms x
f = symfun([c'* x - sum(log(A*x + b))],x);
tolerance = 1e-6
% Max iterations
N =1000;
% start point
xstart = ones(n,1)
% Method: gradient descent
% store step history
xg = zeros(n,N);
% initial point
xg(:,1) = xstart;
fprintf('Starting gradient descent.')';
for k = 1:(N-1)
d = - gradient(f,xg(:,k));
if norm(d) < tolearance
xg = xg(:,1:k);
break;
end