scilab - newton raphson
O Método de Newton consiste em um método baseado em tangente, isto é, utiliza-se a derivada da função inicial, para que assim encontre-se a raiz da função inicial através de repetidas tentativas de aproximação da função e sua tangente. Geometricamente, esse método equivale a aproximar um arco da curva por uma reta tangente traçada a partir de um ponto da curva, o que faz que seja conhecido também como método das tangentes.
Desafio 1
Objetivo:
Deve-se projetar um algoritmo, além de codificá-lo em Scilab, que encontre a raiz da equação pelo método Newtoniano, sendo que o valor inicial de x ("chute inicial") deverá ser lido durante a execução do programa.
Algoritmo:
//Algoritmo
//Declare chute, E, numérico
//Declare funcao(x), funcaoderivada(x) numérico funcao y = funcao(x) y←x^3 + x^2 - 10
Fim função; funcao y = funcaoderivada(x) y←3×x^2 + 2×x
Fim função;
Leia o valor de chute: x = chute
E = 0,1^5 repita se funcao(x) ≤ E entao interrompa fim-se x = x - funcao(x)÷funcaoderivada(x) fim repita
Escreva x
Scilab:
function y = funcao(x) y= x^3 + x^2 - 10; endfunction function y = funcaoderivada(x) y= 3*x^2 + 2*x; endfunction chute = input("Digite o valor de chute:") x = chute
E = 0.1^5 while%t if abs(funcao(x)) exec('D:\funcao.sci', -1)
Digite o valor de chute:5
Valor da raiz da função
1.8674600246D+00
A vantagem do fsolve é o fato de não usar derivação analítica o que torna o processamento mais rápido, porém o fato de fazer uma aproximação numérica da derivada pode gerar erros numéricos o que com certeza será propagado para o valor encontrado
O fsolve pode ser usado também para o caso f(x) = 0, basta definir sua subrotina onde, ao invés de entrar um vetor de variáveis, entra o valor da variável, e ao invés de sair um vetor com os valores das funções sai o valor da função.
Fica a sugestão de usar o código simbólico para este segundo caso e comparar os resultados encontrados incluindo o tempo de