function [k, X, Y, pasos, hessiano] = vnnolineal(F, signoX, signoXF, k0, X0)
if nargin < 2, signoX = []; end
if nargin < 3, signoXF = []; end
if nargin < 4, k0 = []; end
if nargin < 5, X0 = []; end
if exist('OCTAVE_VERSION')
k = []; X = []; Y = []; pasos = []; hessiano = [];
disp('Atenci�n, esta funci�n no ha sido redactada para Octave');
else
v = version;
if v([1,2]) == '5.'
[k, X, Y, pasos, hessiano] = vnnolinealmatlab5(F, signoX, signoXF, k0, X0);
else
[k, X, Y, pasos, hessiano] = vnnolinealaux3(F, signoX, signoXF, k0, X0);
end
end
function [k, X, Y, pasos, HESS] = vnnolinealmatlab5(F, signoX, signoXF, k0, X0)
[F, signoX, signoXF] = formaproblema(F, signoX, signoXF, 1);
[filas, columnas, ancho] = size(F);
if isempty(k0), k0 = 1; end
if isempty(X0), X0 = ones(1, filas)/filas; end
OPTIONS = foptions;
OPTIONS(2) = 1e-12;
OPTIONS(3) = 1e-12;
OPTIONS(4) = 1e-12;
LB = [0, zeros(1, filas)];
UB = [Inf, Inf*ones(1, filas)];
[V, optsal, LAMBDA, HESS] = constr('vnnolinealaux1', [k0,X0], OPTIONS, LB, UB, 'vnnolinealaux2', F);
k = V(1);
X = V(2:filas+1);
Y = LAMBDA(1:columnas);
pasos = optsal(10);
[X, Y] = formasolucion(X, Y, signoX, signoXF, 1);