function [k, X, Y, pasos] = vnnewton(F, signoX, signoXF, k)1%vnnewton2% [k, X, Y] = vnnewton(F)3%4% busca la soluci�n de VN intentando resolver la ecuaci�n u(k) = 05% mediante el m�todo de Newton, donde u(k) es la distancia al crecimiento6% proporcional establecida como el valor del juego para la matriz de7% pagos F(k) convertida a la forma can�nica.8%9% [k, X, Y] = vnnewton(F, signoX, signoXF, k0)10% F recetas en tiempo discreto o continuo11% signoX signo de las intensidades; por defecto X >= 012% signoXF signo de los balances materiales; por defecto X F(k) = 013% k0 factor con el que se inicia la iteraci�n; por defecto 114% k, X, Y factor, intensidades y valores soluci�n15%16% Los c�digos para los signos son 0 = 1 >= 2 <= 3 >=<1718% necesita cpdistancia.m, forma0.m, forma1.m1920if nargin < 2, signoX = []; end21if nargin < 3, signoXF = []; end22if nargin < 4, k = []; end2324cero = 1e-14; %define la precisi�n del cero25if isempty(k), k = 1; end %si no est� definida, define k como 126for pasos = 1:100 %inicia una iteraci�n de hasta 100 pasos27kmem = k; %almacena la magnitud de k28[u, X, Y] = cpdistancia(forma0(F,k), signoX, signoXF); %calcula la distancia al crecimiento proporcional29du = X * forma1(F, k) * Y; %establece la derivada de la distancia = X F'(k) Y30if abs(du)<cero, disp('Atenci�n, derivada nula'); return; end %si la derivada es nula avisa e interrumpe31k = k - u / du; %establece la nueva k32if k <= 0, disp('Atenci�n, factor no positivo'); return; end %si el nuevo factor no es positivo avisa e interrumpe33if abs(kmem - k) < cero; return, end %si k cambia poco interrumpe34end %repite la iteraci�n35disp('Atenci�n, se ha superado el m�ximo de iteraciones'); %avisa de que se ha superado el m�ximo de iteraciones363738