[Scilab-users] Command integrate() is too slow under certain expressions

Stéphane Mottelet stephane.mottelet at utc.fr
Tue Feb 11 08:23:26 CET 2020


Sorry the ode call should be (y0 first, then x0)

y  =  ode(-1,x0,x1,list(f,x1,y1,d1))


The elapsed time seems OK:

--> tic;y = ode(-1,x0,x1,list(f,x1,y1,d1));toc
  ans  =

    0.002235

S.

Le 11/02/2020 à 08:17, Stéphane Mottelet a écrit :
>
> Hello,
>
> The usual way to compute a primitive would be to use ode, like this:
>
> function  out=f(x, y, x1, y1, d1)
>      out  =  interp(x,x1,y1,d1)
> endfunction
>
> x0  =  0
> x1  =  0:0.01:2*%pi;
> y1  =  sin(x1);
>
> d1  =  splin(x1,y1);
>
> y  =  ode(x0,-1,x1,list(f,x1,y1,d1))
> Your proposition is very slow because you are recomputing the spline 
> many times.
>
> S.
>
> Le 10/02/2020 à 20:52, Federico Miyara a écrit :
>>
>> Dear all,
>>
>> The function integrate() is very handy to obtain a numerical primtive 
>> of a function, particularly useful when there is no closed form for 
>> the primitive or it is too involved. According to the documentation
>>
>>     x = integrate(expr, v, x0, x1 [, atol [, rtol]])
>>
>>     expr: a character string defining a Scilab expression.
>>     v:    a character string, the integration variable name
>>
>>
>> However there is a case that would be interesting to handle, and it 
>> is when one has a set of experimental (or simulated) data xk, yk. 
>> Here there is no expression defining a function.
>>
>> One way to circumvent this is using as the expression some sort of 
>> interpolator such as
>>
>> x = integrate("interp1(xk, yk, x, ''spline'')", "x", x0, x1)
>>
>> This works, but for some reason I don't quite understand it is very slow.
>>
>> For instance,
>>
>> x0 = 0
>> x1 = 0:0.01:2*%pi;
>> y1 = sin(x1);
>>
>> tic
>> X = integrate("interp1(x1, y1, x, ''spline'')", "x", x0, x1);
>> toc
>>
>> Requires 27 s to execute. In the meantime, control is seemingly 
>> returned to the console, one can enter instructions, but then the 
>> program freezes until the integrate comand finishes.
>>
>> Changing "spline" to "linear" even worsens it rising to 33 s.
>>
>> Has anybody an idea of what can be happening?
>>
>> Maybe it computes the full interpolator for each single point? Even 
>> if so, I have only 629 values of the independent variable.
>>
>> Regards,
>>
>> Federico Miyara
>>
>>
>>
>>
>> _______________________________________________
>> users mailing list
>> users at lists.scilab.org
>> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users
> -- 
> Stéphane Mottelet
> Ingénieur de recherche
> EA 4297 Transformations Intégrées de la Matière Renouvelable
> Département Génie des Procédés Industriels
> Sorbonne Universités - Université de Technologie de Compiègne
> CS 60319, 60203 Compiègne cedex
> Tel : +33(0)344234688
> http://www.utc.fr/~mottelet
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users

-- 
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20200211/bda88d3f/attachment.htm>


More information about the users mailing list