Optimization demos: fix derivative
[scilab.git] / scilab / modules / optimization / demos / optim / optim_withderivative.sce
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2009 - DIGITEO - Michael Baudin
3 // Copyright (C) 2010 - DIGITEO - Allan CORNET
4 // Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
5 //
6 // This file must be used under the terms of the CeCILL.
7 // This source file is licensed as described in the file COPYING, which
8 // you should have received as part of this distribution.  The terms
9 // are also available at
10 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
11
12 function demo_derivative()
13
14     mprintf(_("Running optimization ...\n"));
15
16     function f = rosenbrock ( x )
17         f = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
18     endfunction
19
20     function [ f , g , ind ] = rosenbrockCost2 ( x , ind )
21         if ind == 1 | ind == 4 then
22             f = rosenbrock ( x );
23             g = numderivative ( rosenbrock , x.' , [], order = 4 );
24         end
25     endfunction
26
27     x0 = [-1.2 1];
28     [ f , x ] = optim ( rosenbrockCost2 , x0 );
29
30     //
31     // Display results
32     //
33     mprintf("x = %s\n",strcat(string(x)," "));
34     mprintf("f = %e\n",f);
35
36     //
37     // Load this script into the editor
38     //
39     m = messagebox(_("View Code?"), "Question", "question", [_("Yes") _("No")], "modal")
40     if m == 1
41         filename = "optim_withderivative.sce";
42         dname = get_absolute_file_path(filename);
43         editor ( dname + filename );
44     end
45 endfunction
46
47
48 demo_derivative();
49 clear demo_derivative;