Changeset 2fb8329 in tol


Ignore:
Timestamp:
Dec 9, 2009, 8:59:51 AM (17 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
dea29fb
Parents:
9776d22
Message:

Preparing for derivation and integration methods

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

Location:
tol_pkg/MulVarFunAprox
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • tol_pkg/MulVarFunAprox/DesignC2.tol

    r9776d22 r2fb8329  
    44// PURPOSE: Defines Class @DesignC2
    55//////////////////////////////////////////////////////////////////////////////
     6
    67
    78//////////////////////////////////////////////////////////////////////////////
    … …  
    9192
    9293  //////////////////////////////////////////////////////////////////////////////
    93     VMatrix build.obs(VMatrix X, VMatrix X.h)
     94    VMatrix build.obs.eval(VMatrix X, VMatrix X.h, FunRn2R::@BaseC2.Eval eval)
    9495  //////////////////////////////////////////////////////////////////////////////
    9596  {
    … …  
    109110    WriteLn("TRACE "+_MID+"2");
    110111    Set X.weight = get.X.weight(X.dif);
    111     WriteLn("TRACE "+_MID+"2");
    112     FunRn2R::@BaseC2 b = get.base(0);
    113112    WriteLn("TRACE "+_MID+"2");
    114113    Matrix QX.triplet = Group("ConcatRows", For(1,_.X.maxNeighbour,Matrix(Real i)
    … …  
    120119      VMatrix Xdif.i = SubRow(X.dif[i],sel.rows);
    121120      VMatrix X.j.i = SubRow(X.j,sel.rows);
    122       Real b::upgrade.cache(Xdif.i,0);
     121      Real eval::upgrade.cache(Xdif.i);
    123122      Group("ConcatRows", For(1,_.K,Matrix(Real k)
    124123      {
    125         VMatrix pk = b::function.v(k,Xdif.i);
     124        VMatrix pk = eval::evaluate.v(k,Xdif.i);
    126125        VMatrix qk = wi$*pk;
    127126        VMat2Mat(X.j.i | (X.hiK+k) | qk)
    … …  
    130129    Pack(Convert(Triplet(QX.triplet, m, _.N),"Cholmod.R.Sparse"))
    131130  })};
     131
     132  //////////////////////////////////////////////////////////////////////////////
     133    VMatrix build.obs(VMatrix X, VMatrix X.h)
     134  //////////////////////////////////////////////////////////////////////////////
     135  {
     136    FunRn2R::@BaseC2.Eval.Function eval =
     137     FunRn2R::@BaseC2.Eval.Function::New(get.base(0));
     138    build.obs.eval(X,X.h,eval)
     139  };
     140  //////////////////////////////////////////////////////////////////////////////
     141    VMatrix build.obs.partial.derivative.1(VMatrix X, VMatrix X.h, Real s)
     142  //////////////////////////////////////////////////////////////////////////////
     143  {
     144    FunRn2R::@BaseC2.Eval.Partial.Derivative.1 eval =
     145     FunRn2R::@BaseC2.Eval.Partial.Derivative.1::New(get.base(0), s);
     146    build.obs.eval(X,X.h,eval)
     147  };
     148  //////////////////////////////////////////////////////////////////////////////
     149    VMatrix build.obs.partial.derivative.2(VMatrix X, VMatrix X.h,
     150                                           Real s1, Real s2)
     151  //////////////////////////////////////////////////////////////////////////////
     152  {
     153    FunRn2R::@BaseC2.Eval.Partial.Derivative.2 eval =
     154     FunRn2R::@BaseC2.Eval.Partial.Derivative.2::New(get.base(0), s1, s2);
     155    build.obs.eval(X,X.h,eval)
     156  };
     157  //////////////////////////////////////////////////////////////////////////////
     158    VMatrix build.obs.partial.integrate.1(VMatrix X, VMatrix X.h, Real s)
     159  //////////////////////////////////////////////////////////////////////////////
     160  {
     161    FunRn2R::@BaseC2.Eval.Partial.Integrate.1 eval =
     162     FunRn2R::@BaseC2.Eval.Partial.Integrate.1::New(get.base(0), s);
     163    build.obs.eval(X,X.h,eval)
     164  };
    132165  //////////////////////////////////////////////////////////////////////////////
    133166    VMatrix build.border.prior(Real void)
  • tol_pkg/MulVarFunAprox/ModelC2.tol

    r9776d22 r2fb8329  
    4141
    4242  //////////////////////////////////////////////////////////////////////////////
     43    Static @ModelC2 New.Monomial.Spheric.Disconnected(
     44     VMatrix Fx,
     45     VMatrix X,
     46     Real max.deg,
     47     Real min.contrast.surface,
     48     Real radius.margin,
     49     Real radius,
     50     Real do.build.border)
     51  //////////////////////////////////////////////////////////////////////////////
     52  {
     53    Text _MID = "[@ModelC2::New.Monomial.Spheric.Disconnected] ";
     54    MulVarFunAprox::@DesignC2 design = {
     55      MulVarFunAprox::@DesignC2.Monomial.Spheric.Disconnected::New(
     56        VMatrix X,
     57        Real radius.margin,
     58        Real radius,
     59        Real do.build.border)};
     60    Real design::max.deg := max.deg;
     61    Real design::min.contrast.surface := min.contrast.surface;
     62    Real t0 = Copy(Time);
     63    WriteLn("TRACE"+_MID+"Building model design for "<<design::_.J+" points "<<
     64      "of dimension "<<design::_.n+" ...");
     65    Real deg = design::build.model.design(0);
     66    Real t.building = Copy(Time)-t0;
     67    WriteLn("TRACE"+_MID+"Built model design in "<<t.building+" seconds");
     68    Real t0 := Copy(Time);
     69    WriteLn("TRACE"+_MID+"Building decomposition for design matrix ("<<
     70      design::_.M+"x"<<design::_.N+") ...");
     71    Real design::build.decomposition(0);
     72    Real t.decomposition = Copy(Time)-t0;
     73    WriteLn("TRACE"+_MID+"Input decomposed in "<<t.decomposition+" seconds");
     74    Real t0 := Copy(Time);
     75    WriteLn("TRACE"+_MID+"Running regression model for design matrix "<<design::_.Q);
     76    MulVarFunAprox::@ModelC2 model = MulVarFunAprox::@ModelC2::New(
     77       design,
     78       Fx);
     79    Real t.estimating = Copy(Time)-t0;
     80    WriteLn("TRACE"+_MID+"Estimated model in "<<t.estimating+" seconds");
     81    model
     82  };
     83
     84  //////////////////////////////////////////////////////////////////////////////
    4385    Real estimate(Real void)
    4486  //////////////////////////////////////////////////////////////////////////////
    … …  
    5799
    58100  //////////////////////////////////////////////////////////////////////////////
    59     VMatrix evaluate(VMatrix X)
     101    VMatrix evaluate.eval(VMatrix X, FunRn2R::@BaseC2.Eval eval)
    60102  //////////////////////////////////////////////////////////////////////////////
    61103  {
    … …  
    66108    Real m.1 = VRows(X.1);
    67109    VMatrix X.1.h = _.design::closest.reference.index(X.1);
    68     VMatrix QX.1 = _.design::build.obs(X.1, X.1.h);
     110    VMatrix QX.1 = _.design::build.obs.eval(X.1, X.1.h, eval);
    69111    VMatrix F.1 = QX.1*_.alpha;
    70112    Matrix triplet.1 = SetCol(X.select)|Rand(m.1,1,1,1)|VMat2Mat(F.1);
    71113    Pack(Convert(Triplet(triplet.1,m,1),"Cholmod.R.Sparse"))
     114  };
     115
     116  //////////////////////////////////////////////////////////////////////////////
     117    VMatrix evaluate(VMatrix X)
     118  //////////////////////////////////////////////////////////////////////////////
     119  {
     120    FunRn2R::@BaseC2.Eval.Function eval =
     121     FunRn2R::@BaseC2.Eval.Function::New(_.design::get.base(0));
     122    evaluate.eval(X,eval)
     123  };
     124  //////////////////////////////////////////////////////////////////////////////
     125    VMatrix evaluate.partial.derivative.1(VMatrix X, Real s)
     126  //////////////////////////////////////////////////////////////////////////////
     127  {
     128    FunRn2R::@BaseC2.Eval.Partial.Derivative.1 eval =
     129     FunRn2R::@BaseC2.Eval.Partial.Derivative.1::New(_.design::get.base(0), s);
     130    evaluate.eval(X,eval)
     131  };
     132  //////////////////////////////////////////////////////////////////////////////
     133    VMatrix evaluate.partial.derivative.2(VMatrix X,
     134                                          Real s1, Real s2)
     135  //////////////////////////////////////////////////////////////////////////////
     136  {
     137    FunRn2R::@BaseC2.Eval.Partial.Derivative.2 eval =
     138     FunRn2R::@BaseC2.Eval.Partial.Derivative.2::New(_.design::get.base(0), s1, s2);
     139    evaluate.eval(X,eval)
     140  };
     141  //////////////////////////////////////////////////////////////////////////////
     142    VMatrix evaluate.partial.integrate.1(VMatrix X, Real s)
     143  //////////////////////////////////////////////////////////////////////////////
     144  {
     145    FunRn2R::@BaseC2.Eval.Partial.Integrate.1 eval =
     146     FunRn2R::@BaseC2.Eval.Partial.Integrate.1::New(_.design::get.base(0), s);
     147    evaluate.eval(X,eval)
    72148  }
    73  
    74149};
    75150
Note: See TracChangeset for help on using the changeset viewer.