Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
06_rotinas/newton.sci //Método de Newton-Raphson // // Calcula a aproximação da solução // de f(x)=0 no intervalo [a, b]. // //Entrada // f - função f(x) // fl - derivada de f(x) // p0 - aproximação inicial da solução // TOL - tolerância // N - número máximo de iterações // //Saída // p - solução aproximada de f(x)=x function [p] = newton(f, fl, p0, TOL, N) i = 1 while (i <= N) p = p0 - f(p0)/fl(p0) //calcula p_i disp([i, p, abs(p-p0)]) //condição de parada if (abs(p - p0) < TOL) then return p end i = i + 1 p0 = p //atualiza p_0 end error ('Método falhou!') endfunction 06_rotinas/ponto_fixo.sci //Método do Ponto Fixo // // Calcula a aproximação do ponto fixo // de f(x) no intervalo [a, b]. // //Entrada // f - função f(x) // p0 - aproximação inicial do ponto fixo // TOL - tolerância // N - número máximo de iterações // //Saída // p - solução aproximada de f(x)=x function [p] = ponto_fixo(f, p0, TOL, N) i = 1 while (i <= N) p = f(p0) //calcula p_i //imprime na tela disp ([i, p, p-p0]) //condição de parada if (abs(p - p0) < TOL) then return p end i = i + 1 p0 = p //atualiza p_0 end error ('Método falhou!') endfunction 06_rotinas/bissec_tab.sci //Método da bissecção (com tabela) // // Calcula a aproximação de uma solução // de f(x) = 0 no intervalo [a, b]. // //Entrada // f - função f(x) // a - limite inferior do intervalo [a, b] // b - limite superior do intervalo [a, b] // TOL - tolerância // N - número máximo de iterações // pe - solução exata f(pe) = 0 // //Saída // p - aproximação da solução de f(x) = 0 // tab - tabela com informações sobre a conv. function [p, tabela] = bissec_tab(f, a, b, TOL, N, pe) //verifica condição de existência if (f(a) * f(b) >= 0) then error ('Condição de existência falhou!') end //verifica validade do intervalo if (a >= b) then error ('Intervalo [a, b] degenerado!') end i = 1 fa = f(a) tabela = []; while (i <= N) p = a + (b-a)/2 fp = f(p) //calcula o erro absoluto erro = abs(p - pe); //imprime tabela tabela = [tabela; ... i, a, b, p, erro] //condição de parada if ((fp == 0) | ((b-a)/2 < TOL)) then return p end //bissecta o intervalo i = i+1 if (fa * fp > 0) then a = p fa = fp else b = p end end error ('Número máximo de iterações excedido!') endfunction 06_rotinas/bissec.sci //Método da bissecção // // Calcula a aproximação de uma solução // de f(x) = 0 no intervalo [a, b]. // //Entrada // f - função f(x) // a - limite inferior do intervalo [a, b] // b - limite superior do intervalo [a, b] // TOL - tolerância // N - número máximo de iterações // //Saída // p - aproximação da solução de f(x) = 0 function [p] = bissecsao(f, a, b, TOL, N) //verifica condição de existência if (f(a) * f(b) >= 0) then error ('Condição de existência falhou!') end //verifica validade do intervalo if (a >= b) then error ('Intervalo [a, b] degenerado!') end i = 1 fa = f(a) while (i <= N) p = a + (b-a)/2 fp = f(p) //condição de parada if ((fp == 0) | ((b-a)/2 < TOL)) then return p end //bissecta o intervalo i = i+1 if (fa * fp > 0) then a = p fa = fp else b = p end end error ('Número máximo de iterações excedido!') endfunction
Compartilhar