function demo_colebrook % In questa demo studiamo l'equazione di colebrook % 1/sqrt(lambda)=-2*log10( (e/3.51*d) + 2.52/(NR*sqrt(lambda)) ) % dove e,d,NR sono fissati dal problema e "1/sqrt(lambda)" è l'incognita % ---- parametri colebrook ---- e=1; d=1; NR=10; % ---- parametri punto fisso ---- x0=1; toll=1e-8; maxit=100000; % ---- metodo punto fisso ---- % risolviamo x=-2*log10( (e/3.51*d) + 2.52*x/NR ) (per x ≥ 0) e poi % poniamo x=1/sqrt(lambda) ovvero lambda=1/xˆ2. phi=@(x) -2*log10( (e/3.51*d) + 2.52*x/NR ); [solF, xvF, stepF] = puntofisso (phi, x0, toll, maxit); % ---- statistiche ---- fprintf('\n \t soluzione : %1.15e',solF); fprintf('\n \t iterazioni : %8.0f',stepF); fprintf('\n \t abs(x-g(x)), iterata n-1: %1.1e',abs(xvF(end-1)-phi(xvF(end-1)))); fprintf('\n \t abs(x-g(x)), ultima iter: %1.1e',abs(xvF(end)-phi(xvF(end)))); fprintf('\n \n'); % ---- metodo Newton ---- % risolviamo ora l'equazione anche con il metodo di Newton f = @(x) -2*log10( (e/3.51*d) + 2.52*x/NR ) - x; Df = @(x) - (1+2/log(10)*(2.52/NR)/((e/3.51*d) + 2.52*x/NR)); [solN,xvN,stepN] = newton(f,Df,x0,toll,maxit); % ---- statistiche ---- fprintf('\n \t soluzione : %1.15e',solN); fprintf('\n \t iterazioni : %8.0f',stepN); fprintf('\n \t abs(x-g(x)), iterata n-1: %1.1e',abs(xvN(end-1)-phi(xvN(end-1)))); fprintf('\n \t abs(x-g(x)), ultima iter: %1.1e',abs(xvN(end)-phi(xvN(end)))); fprintf('\n \n');