Search All of the Math Forum:

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

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Constrained non linear system, fmincon: User supplied objective
function must return a scalar value.

Replies: 1   Last Post: Feb 12, 2013 1:13 PM

 Alan Weiss Posts: 1,430 Registered: 11/27/08
Re: Constrained non linear system, fmincon: User supplied objective
function must return a scalar value.

Posted: Feb 12, 2013 1:13 PM

On 2/12/2013 12:44 PM, Pl Pl wrote:
> Hi all,
>
> I have a non linear differential equation:
>
> dm(1) = f1(m(1),m(2),m(3))
> dm(2) = f2(m(1),m(2),m(3))
> dm(3) = f3(m(1),m(2),m(3))
>
> whose solutions must lie on the unit sphere. I'm trying to compute the
> fixed points of the system so I have to solve the system:
>
> f1(m(1),m(2),m(3)) = 0
> f2(m(1),m(2),m(3)) = 0
> f3(m(1),m(2),m(3)) = 0
>
> I first tried to use fsolve but this gave irrelevant solutions, not
> even lying on the unit sphere. I then tried to use fmincon by
> squaring my dm-vector so that it becomes positive. Here is what my
> code looks like:
>
> Differential equation:
>
> function dm = llgfix(t,m,param)
> dm = zeros(3,1);
>
> dm(1) = f1(m(1),m(2),m(3));
> dm(2) = f2(m(1),m(2),m(3));
> dm(3) = f3(m(1),m(2),m(3));
>
> dm = dm.^2;
> end
>
> Constraints:
>
> function [c, ceq] = unitsphere(x)
> c = [];
> ceq = x(1)^2 + x(2)^2 + x(3)^2 - 1;
>
> Minimisation:
>
> m0 = rand(1,3);
> options = optimset('Display','iter','Algorithm','active-set');
> fix =
> fmincon(@llgfix,m0./norm(m0),[],[],[],[],[],[],@unitsphere,options)
>
> However, when running the code, I always get the same error:
>
> Error using fmincon (line 674)
> User supplied objective function must return a scalar value.
>
> and I can't figure out why, does anybody have an idea?