Changeset 4f055cf in tol


Ignore:
Timestamp:
Dec 18, 2009, 5:16:19 PM (17 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
f4eff5d
Parents:
e0aa1f8
Message:

Testing also first derivative

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@1857 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol_pkg/MulVarFunAprox/test/test_0001/test.tol

    re0aa1f8 r4f055cf  
    1414
    1515//Random seed setting
    16 Real PutRandomSeed(1096004697);
     16Real PutRandomSeed(2131234);
    1717Real rndSeed = GetRandomSeed(0);
    1818WriteLn("Current Random Seed = "<<rndSeed);
    … …  
    3333  }))
    3434};
    35 VMatrix X = generate.nodal.points(15000,2);
     35VMatrix X = generate.nodal.points(5000,2);
    3636/* * /
    3737MulVarFunAprox::@DesignC2 design = {
    … …  
    4646    Real do.build.border = False)};
    4747/* */
    48 Real design::max.deg := 6;
     48Real design::max.deg := 3;
     49Real design::use.compact.base := False;
     50Real design::min.contrast.surface := 2.5;
    4951
    5052Real t0 = Copy(Time);
    … …  
    6668FunRn2R::@FunC2 base.random.fun=FunRn2R::@FunC2.InBaseC2::Random(b, 1);
    6769
     70
     71//////////////////////////////////////////////////////////////////////////////
     72VMatrix fun.eval.intra.base(VMatrix X)
     73//////////////////////////////////////////////////////////////////////////////
     74{
     75  VMatrix X1 =SubCol(X,[[1]]);
     76  VMatrix X2 =SubCol(X,[[2]]);
     77  VMatrix one = X1*0+1;
     78  one*7 -X1 +X2*2 -X1$*X1*3 +X1$*X2 +X1$*X1$*X1*0.4 -X1$*X2$*X2*0.1
     79};
     80//////////////////////////////////////////////////////////////////////////////
     81VMatrix der.1.eval.intra.base(VMatrix X)
     82//////////////////////////////////////////////////////////////////////////////
     83{
     84  VMatrix X1 =SubCol(X,[[1]]);
     85  VMatrix X2 =SubCol(X,[[2]]);
     86  VMatrix one = X1*0+1;
     87    -one    -X1*6  +X2 +X1$*X1*1.2 - X2$*X2*0.1
     88};
     89//////////////////////////////////////////////////////////////////////////////
     90VMatrix der.2.eval.intra.base(VMatrix X)
     91//////////////////////////////////////////////////////////////////////////////
     92{
     93  VMatrix X1 =SubCol(X,[[1]]);
     94  VMatrix X2 =SubCol(X,[[2]]);
     95  VMatrix one = X1*0+1;
     96   one*2 +X2 -X1$*X2*0.2
     97};
     98
    6899//////////////////////////////////////////////////////////////////////////////
    69100VMatrix fun.eval.extra.base(VMatrix X)
    70101//////////////////////////////////////////////////////////////////////////////
    71102{
    72    BinGroup("$*",For(1,design::_.n,VMatrix(Real i)
    73    {
    74      VMatrix Xi = SubCol(X,[[i]]);
    75      If(i%2==1,Sin(Xi),Cos(Xi))
    76    }))
    77    $* RPow(SubCol(X,[[1]]),2)
    78 };
     103  VMatrix X1 =SubCol(X,[[1]]);
     104  VMatrix X2 =SubCol(X,[[2]]);
     105  Sin(X1)$*Cos(X2)
     106};
     107//////////////////////////////////////////////////////////////////////////////
     108VMatrix der.1.eval.extra.base(VMatrix X)
     109//////////////////////////////////////////////////////////////////////////////
     110{
     111  VMatrix X1 =SubCol(X,[[1]]);
     112  VMatrix X2 =SubCol(X,[[2]]);
     113  Cos(X1)$*Cos(X2)
     114};
     115//////////////////////////////////////////////////////////////////////////////
     116VMatrix der.2.eval.extra.base(VMatrix X)
     117//////////////////////////////////////////////////////////////////////////////
     118{
     119  VMatrix X1 =SubCol(X,[[1]]);
     120  VMatrix X2 =SubCol(X,[[2]]);
     121  -Sin(X1)$*Sin(X2)
     122};
     123
     124Real use_extra = True;
     125
     126Code fun.eval   = If(use_extra,  fun.eval.extra.base,  fun.eval.intra.base);
     127Code der.1.eval = If(use_extra,der.1.eval.extra.base,der.1.eval.intra.base);
     128Code der.2.eval = If(use_extra,der.2.eval.extra.base,der.2.eval.intra.base);
    79129
    80130//Real b::upgrade.cache(design::_.X,0,0);
    81131//Code fun.eval = base.random.fun::eval.function.v;
    82 Code fun.eval = fun.eval.extra.base;
    83 
     132
     133VMatrix F_X= fun.eval(design::_.X);
    84134
    85135Real t0 := Copy(Time);
    … …  
    87137MulVarFunAprox::@ModelC2 model = MulVarFunAprox::@ModelC2::New(
    88138   design,
    89    fun.eval(design::_.X));
     139   F_X);
    90140Real t.estimating = Copy(Time)-t0;
    91141WriteLn("Estimated model in "<<t.estimating+" seconds");
     142
     143
     144VMatrix dF_X1 = der.1.eval(design::_.X);
     145VMatrix dF_X2 = der.2.eval(design::_.X);
     146
     147VMatrix dF_X1_ = model::evaluate.partial.derivative.1(design::_.X, 1);
     148VMatrix dF_X2_ = model::evaluate.partial.derivative.1(design::_.X, 2);
     149
     150VMatrix dF_X1_cmp = dF_X1 | dF_X1_;
     151VMatrix dF_X2_cmp = dF_X2 | dF_X2_;
     152
     153VMatrix dF_X1_err = dF_X1 - dF_X1_;
     154VMatrix dF_X2_err = dF_X2 - dF_X2_;
     155
     156Real dF_X1_err.avr = VMatAvr (dF_X1_err);
     157Real dF_X1_err.ste = VMatStDs(dF_X1_err);
     158Real dF_X2_err.avr = VMatAvr (dF_X2_err);
     159Real dF_X2_err.ste = VMatStDs(dF_X2_err);
     160
    92161
    93162VMatrix X2 = { design::generate.internal.points(
    … …  
    135204
    136205
    137 
    138206Real numErr1 = Copy(NError);
    139207Real numWar1 = Copy(NWarning);
Note: See TracChangeset for help on using the changeset viewer.