Мне нужно решить систему из 44 уравнений с 44 неизвестными (x) следующего вида
(- 1 / (1 - x (t))) + (phi (t) * (1 / T) * Σ_ {h = 45} ^ {60} β ^ {ht})) = 0
где phi_t принимает значение 0 для t <= 25 и значение 1 везде, а где T = phi (1) x (1) + phi (2) x (2) + ... + phi (44) x (44). </p>
У меня есть два типа ограничений. Во-первых, все х должны быть между 0,1 и 0,5, а Т должен быть ниже 0,9.
РЕДАКТИРОВАТЬ: Следующие ссылки представляют собой картинки с полной проблемой и связанной системой уравнений, которые представляют решение, переполнение стека не позволяет мне публиковать картинки. Задача максимизации и система уравнений . Ограничение в основном означает, что x (t) \ in [0,1, 0,5] для всех t и phi (25) x (25) + phi (26) x (26) ... + phi (43) x (43) + фи (44) х (44) <= 0,9 </p>
Я использую fmincon от Matlab, и решение, которое оно возвращает, удовлетворяет ограничивающему месту на τ, , но возвращает результат для T, который значительно превышает значение 0,9 , которое предполагается получить как максимум.
Я использую следующий Основной файл:
clear all
clc
% Solve restricted problem
global beta phi w C R D
C = 25;
R = 40;
D = 55;
beta = 0.99;
phi = [0,1];
w = ones(1,R-1);
phiB = phi(1)*ones(1,R-1);
for i=C:R-1
phiB(i) = phi(2);
end
lb = 0.1*ones(1,R-1); % Lower bound constraint
ub = 0.5*ones(1,R-1); % Lower bound constraint
rng default % reproducible initial point
x0 = 0.01*ones(R-1,1);
opts = optimoptions(@fmincon,'Algorithm','interior-point','Display','off');
sol = fmincon(@(x)0,x0,phiB,0.9,[],[],lb,ub,@fminconstr,opts)
Где функция fmincon представляет максимизацию константы и, следовательно, единственное, что должно быть выполнено, - это ограничения равенства и неравенства. Вызывает функцию fminconstr , вида
function [c,ceq] = fminconstr(x)
c = []; % nonlinear inequality
ceq = fbnd(x); % the fsolve objective is fmincon constraints
end
где ограничение - система уравнений, определяемая функцией fbnd
function F = fbnd(x)
global R C D
global beta
global phi
global w
phiB = phi(1)*ones(1,R-1);
for i=C:R-1
phiB(i) = phi(2);
end
T = phiB * x;
F = NaN(1,R-1);
for i=1:C
betaM = beta*ones(1,D-R);
for j = 1:D-R
betaM(j) = beta^(R+j-i-1);
end
F(i) = ((-1/(w(i)-x(i))) + phi(1)*(1/T)*sum(betaM));
end
for i=C-1:R-1
betaM = beta*ones(1,D-R);
for j = 1:D-R
betaM(j) = beta^(R+j-i-1);
end
F(i) = ((-1/(w(i)-x(i))) + sum(phi(2)*betaM'*(1/T)));
end
end
Программа возвращает значения для х в диапазоне от 0,1 до 0,5, поэтому эти ограничения работают. Но при вычислении T, как описано в задаче (в нотации fmincon я бы понял, что это ограничение Ax <= b), я получаю значения для T около 4,6, что намного выше значения 0,9, определенного ограничением. </p>
Я также попытался определить это ограничение как c (x) <= 0, изменив код как </p>
sol = fmincon(@(x)0,x0,[],[],[],[],lb,ub,@fminconstr2,opts)
где fminconstr2 сейчас
function [c,ceq] = fminconstr2(x)
global phi
global R
global C
c = fbnd2(x); % nonlinear inequality
ceq = fbnd(x); % the fsolve objective is fmincon constraints
end
и fbnd2 is
function T = fbnd2(x)
global R C
global phi
phiB = phi(1)*ones(1,R-1);
for i=C:R-1
phiB(i) = phi(2);
end
T = phiB * x - 0.9;
end
и получите тот же результат с Т около 4,6.
Я хочу решить ту же систему уравнений, но мне нужно получить значение T, которое находится в указанном мною ограничении.