Use a root finding method to find a root of the derivative of the function
Show older comments
So I have been given an encrypted function (I can't alter it or view it) that can be invoked within matlab like so:
FabCorpV6(DesignParameter,Ncycles)
where FabCorpV6 is the encrypted function that I do not have a means of directly examining, Design Parameter is a value between -1 and 1 and Ncycles is a fixed integer from 1 to infinity. Basically, I need to use a root-finding method to determine what value of the DesignParameter would yield the minimum value possible for FabCorpV6. Any help with this is much appreciated. Right now I am hung up on how I'm supposed to use Matlab to evaluate the derivative of FabCorpV6 as a function of a fixed value for Ncycles of 5 and a range of values for the DesignParameter(ACCURATELY and EFFICIENTLY) in order to determine what values of the DesignParameter yield a value of zero for the derivative of FabCorpV6. Then I can evaluate the function at these extremes to determine which one is the absolute minimum of the function FabCorpV6. If anyone doesn't understand what I'm asking about, please don't hesitate to get clarification.
10 Comments
Walter Roberson
on 24 Mar 2014
Is a root finding method imposed upon you? Or just finding minima? Do you need the global minimum or will any local minima do? Do you have the Global Optimization Toolbox?
Matt
on 24 Mar 2014
Joseph Cheng
on 24 Mar 2014
Edited: Joseph Cheng
on 24 Mar 2014
One text book that should help you out would be the "Numerical Methods for Engineers" by Steven C. Chapra and Raymond P. Canale. Which has multiple chapters that goes into detail about the different methods of finding roots of equations using graphical methods, bisectioning, false positioning, incremental searches, newton-raphson, secant, etc.
Matt
on 24 Mar 2014
Walter Roberson
on 24 Mar 2014
root finding methods applied to an opaque function can never be sure they have found the global minima.
Joseph Cheng
on 25 Mar 2014
However seeing that it is an assignment question with specific bounds and conditions, the function should be simple enough that the found global minimum has a fairly high certainty.
Matt
on 25 Mar 2014
Joseph Cheng
on 25 Mar 2014
What do you have so far?
Matt
on 25 Mar 2014
Matt
on 25 Mar 2014
Accepted Answer
More Answers (1)
Walter Roberson
on 25 Mar 2014
0 votes
Pick a random point (D0, n0) in (D,n) . Initialize the minima M0 to f(D0,n0) . Then if there is any better minima, f(D1, n1) it will have to occur at a root crossing of (f(D, n) - M0). You will, however, not be able to know if a point is a root crossing unless you have probed at least one other nearby point and found it to have lower value in (f-M0). Take that lower point and assign it as the new minima M1. Repeat the sequence. When you can no longer find a root crossing then either your root crossing finding algorithm is not powerful enough or else you have found the minima over (D,n).
You may also want to research "gradient search". Or perhaps numeric estimation of Jacobian. Or simplex search.
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!