How can i solve an equation in matlab using Newton-Raphson method?

I want to solve monotonically increasing function g(lambda)and has a unique zero,by Newton-Raphson method in matlab.The equation is : g(lambda)= -zm'*inv(M)*inv(inv(M)+lambda.*Q)*Q*inv(inv(M)+lambda.*Q)*inv(M)*zm; the variable is lambda

 Accepted Answer

A specific Newton-Raphson routine is not provided in MATLAB (at least not that I have seen.) You can find MATLAB coding for it in a number of places.
I have to ask, though, whether any efficiency gains you might hypothetically gain using this instead of using fzero() will be worth the time you spend programming and debugging this? (I am not convinced that NR would be any faster than fzero()'s adaptive method, but that is a different point.) Has using NR been imposed on you? Or did fzero() fail?

8 Comments

I am trying to use NR to solve the equation just only,because i found out that it might be effective,also I wrote a function with fzero,but it gives me the error ''Error using ==> fzero
FZERO cannot continue because user supplied function_handle ==> f
failed with the error below.
Error using ==> fzero
FZERO cannot continue because user supplied funct
Error in ==> f at 4
lambda=fzero('f',[0 3.4726e+001]);''
The code is :
function y=f(x);
load saved_data;
% y=-zm'*inv(M)*inv(inv(M)+lambda.*Q)*Q*inv(inv(M)+lambda.*Q)*inv(M)*zm;
lambda=fzero('f',[0 3.4726e+001]);
y=-zm'*inv(M)*inv(inv(M)+lambda.*Q)*Q*inv(inv(M)+lambda.*Q)*inv(M)*zm;
I already showed the code to use fzero, and it did not look anything like that. Your function f() that you invoke from fzero() must NOT call fzero() in turn.
Loading those variables each time that f() is invoked is a waste of time. I showed already how to add additional parameters to the call to pass those values through. I also included some optimizations for you, since it is a waste of time to compute inv(M) each time through. See the code in http://www.mathworks.com/matlabcentral/answers/22336-code-assistance
Thanks a lot,but I am just now seeing the code for the first time.But it gives an error :
??? Undefined function or variable 'p'.
Error in ==> drive_zr17t9 at 7
Q = zeta*I-p*p';
I modified that code a moment ago to accept p as a parameter. It was not possible to tell which of your variables is being loaded by the "load" and which of your variables is being assigned before you get to this section. If there are other variables that are not loaded then you will need to pass them in.
I am sorry ,but it gives an error :
??? Error using ==> fzero
FZERO cannot continue because user supplied function_handle ==> @(lambda) zr17t9(lambda, Minv, Q, zm)
failed with the error below.
Variable 'zm' is used as a command function.
Error in ==> drive_zr17t901 at 21
lambda = fzero(@(lambda) zr17t9(lambda, Minv, Q, zm), bounds); %do the searching
Discussion of that code should switch to the other thread.
As cited above, http://www.mathworks.com/matlabcentral/answers/22336-code-assistance

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!