Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

camarneirobruno

[MATLAB] Questão método das secantes

Recommended Posts

camarneirobruno

Não sei se este é o sítio correcto para colocar a minha dúvida mas cá vai:

Eu tenho de fazer um trabalho sobre o método das secantes, mas não estou a conseguir (provavelmente é um errozeco estúpido que eu não estou a apanhar)

este é o meu código da função:

function x = metSecantes(f,x0,x1,k_max,tol)

k = 1;
x(k) = x0;
k=k+1;
x(k) = x1;
while(k <= k_max+1)

 x(k+1) = (x(k-1)*feval(f,x(k))-x(k)*(feval(f,x(k-1))))/(feval(f,x(k))-feval(f,x(k-1)));

 if(abs((x(k+1)-x(k))/x(k+1)) < tol)
   return;
 end
 k = k+1;
end

e chamo a função através do comando:

metSecantes(str2func(f),x0,x1,k_max,tol);

na variável f tenho:

f='4*cos(x)-exp(x)'

Será que me podem ajudar?

(Já agora, este comunidade está fantástica)

Esqueci-me do mais importante

Log do Erro:

>> metSecantes(str2func(f),x0,x1,k_max,tol);
Warning: The input to STR2FUNC "4*cos(x)-exp(x)" is not a valid function name. This will generate an error in a future release. 
??? Error using ==> feval
Undefined function or method '4*cos(x)-exp(x)' for input arguments of type
'double'.

Error in ==> metSecantes at 9
x(k+1) =
(x(k-1)*feval(f,x(k))-x(k)*(feval(f,x(k-1))))/(feval(f,x(k))-feval(f,x(k-1)))

Share this post


Link to post
Share on other sites
camarneirobruno

problema resolvido

esqueci-me do function_handle

(Dãããh  :wallbash:)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.