* Bugs 5824, 7732, 15344 fixed: datafit() upgraded + page overhauled
[scilab.git] / scilab / modules / optimization / demos / datafit / datafit.dem.sce
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) ????-2008 - INRIA
3 // Copyright (C) 2010 - DIGITEO - Allan CORNET
4 //
5 // This file is released under the 3-clause BSD license. See COPYING-BSD.
6
7 function demo_datafit()
8
9     function y = FF(x)
10         // parametric function model
11         y = a*(x-b)+c*x.*x;
12     endfunction
13
14     function e = G(p, z)
15         // datafit external computes the error
16         a = p(1),
17         b = p(2),
18         c = p(3),
19         y = z(1),
20         x = z(2),
21         e = y - FF(x)
22     endfunction
23
24     // create the experimental data
25     X = [];
26     Y = [];
27     a = 34;
28     b = 12;
29     c = 14;
30     for x=0:.1:3, Y=[Y,FF(x)+100*(rand()-.5)];X=[X,x];end
31     Z = [Y; X];
32     //show the data points
33     my_handle = scf(100001);
34     clf(my_handle, "reset");
35     demo_viewCode(SCI + "/modules/optimization/demos/datafit/datafit.dem.sce");
36     plot(X, Y, "+");
37     f = gcf();
38     l=legend(_("Experimental data"),2);
39     sleep(500);
40     // solve the non linear data fitting
41     [p,err] = datafit(G,Z,[3;5;10]);
42     if is_handle_valid(f) then // If the window is still open after the sleep
43         // show the fitting curve
44         drawlater()
45         plot(X,FF(X), "r")
46         delete(l);
47         l = legend([_("Experimental data"); _("Fitting function")],2);
48         drawnow()
49     end
50
51 endfunction
52
53 demo_datafit();
54 clear demo_datafit;