Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Topic: fminsearch and functions
Replies: 3   Last Post: Feb 1, 2013 5:24 AM

 Messages: [ Previous | Next ]
 Alan Weiss Posts: 1,392 Registered: 11/27/08
Re: fminsearch and functions
Posted: Jan 31, 2013 1:20 PM

On 1/31/2013 11:57 AM, Robert Ahrens wrote:
> I should preface this post by saying that I have never used fminsearch
> for multivariable functions and I am not a heavy user of anonymous
> functions.
>
> I have defined a function myfun2:
>
> function f = myfun2(x,y,xc,yc)
>
> n = length(x)
> f = sqrt((sum((sqrt((xc - x).^2 + (yc - y).^2) - ...
> sum(sqrt((xc - x).^2 + (yc - y).^2)/n)).^2)/n))
> end
>
> where x and y are vectors (of length upwards of 10,000) and xc and yc
> are scalars. Basically, I have known x and y vectors and I want to
> find xc and yc such that f is minimized. I've read through the
> fminsearch documentation and posts on the Matlab newgroups and I have
> not been able to find any information as to how to do so.
>
> Any and all help is appreciated.
> Bob

There is an example showing you exactly how to do this case:
http://www.mathworks.com/help/matlab/math/example-curve-fitting-via-optimization.html

The main idea is fminsearch wants a function of one variable, say x.
I believe, from your description, that the variables you want to
minimize are xc and yc.
So in your function you should write something like

function f = myfun3(x,xdata,ydata)

xc = x(1) % the first scalar variable
yc = x(2) % the second variable
n = length(xdata);
...

Put the xdata and ydata vectors in your workspace, create an initial
guess x0, then call

xolution = fminsearch(@(x)myfun3(x,xdata,ydata),x0)

http://www.mathworks.com/help/optim/ug/passing-extra-parameters.html#bskkr4z

Alan Weiss
MATLAB mathematical toolbox documentation

Date Subject Author
1/31/13 Robert Ahrens
1/31/13 Alan Weiss
2/1/13 Marc
2/1/13 Johan Lofberg