<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hello,</p>
<p>The usual way to compute a primitive would be to use ode, like
this:</p>
<pre style="font-family:Monospaced;font-style:normal;font-size:12.0;"><span style="color:rgb(176,24,19);">function</span> <span style="color:rgb(131,67,16);font-weight:bold;">out</span><span style="color:rgb(92,92,92);">=</span><span style="color:rgb(0,0,0);text-decoration:underline;">f</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(131,67,16);font-weight:bold;">x</span><span style="color:rgb(0,0,0);">, </span><span style="color:rgb(131,67,16);font-weight:bold;">y</span><span style="color:rgb(0,0,0);">, </span><span style="color:rgb(131,67,16);font-weight:bold;">x1</span><span style="color:rgb(0,0,0);">, </span><span style="color:rgb(131,67,16);font-weight:bold;">y1</span><span style="color:rgb(0,0,0);">, </span><span style="color:rgb(131,67,16);font-weight:bold;">d1</span><span style="color:rgb(74,85,219);">)</span>
<span style="color:rgb(131,67,16);font-weight:bold;">out</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">interp</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(131,67,16);font-weight:bold;">x</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(131,67,16);font-weight:bold;">x1</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(131,67,16);font-weight:bold;">y1</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(131,67,16);font-weight:bold;">d1</span><span style="color:rgb(74,85,219);">)</span>
<span style="color:rgb(176,24,19);">endfunction</span>
<span style="color:rgb(0,0,0);">x0</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">0</span>
<span style="color:rgb(0,0,0);">x1</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(188,143,143);">0</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(188,143,143);">0.01</span><span style="color:rgb(255,170,0);">:</span><span style="color:rgb(188,143,143);">2</span><span style="color:rgb(92,92,92);">*</span><span style="color:rgb(218,112,214);">%pi</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">y1</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">sin</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">x1</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">d1</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">splin</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">x1</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(0,0,0);">y1</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(0,0,0);">;</span>
<span style="color:rgb(0,0,0);">y</span> <span style="color:rgb(92,92,92);">=</span> <span style="color:rgb(50,185,185);">ode</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);">x0</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(188,143,143);">-1</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(0,0,0);">x1</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(50,185,185);">list</span><span style="color:rgb(74,85,219);">(</span><span style="color:rgb(0,0,0);text-decoration:underline;">f</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(0,0,0);">x1</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(0,0,0);">y1</span><span style="color:rgb(0,0,0);">,</span><span style="color:rgb(0,0,0);">d1</span><span style="color:rgb(74,85,219);">)</span><span style="color:rgb(74,85,219);">)</span></pre>
<div class="moz-cite-prefix">Your proposition is very slow because
you are recomputing the spline many times. <br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">S.<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Le 10/02/2020 à 20:52, Federico Miyara
a écrit :<br>
</div>
<blockquote type="cite"
cite="mid:79e31a97-9afb-414e-9723-082735e6c903@fceia.unr.edu.ar">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<br>
<font face="Courier New">Dear all,<br>
<br>
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<br>
<br>
</font>
<blockquote><font face="Courier New">x = integrate(expr, v, x0, x1
[, atol [, rtol]])</font><br>
<br>
<font face="Courier New">expr: </font><font face="Courier New">a
character string defining a Scilab expression.<br>
v: a character string, the integration variable name<br>
</font></blockquote>
<font face="Courier New"><br>
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.<br>
<br>
One way to circumvent this is using as the expression some sort
of interpolator such as <br>
<br>
x = integrate("interp1(xk, yk, x, ''spline'')", "x", x0, x1)<br>
<br>
This works, but for some reason I don't quite understand it is
very slow.<br>
<br>
For instance,<br>
<br>
x0 = 0<br>
x1 = 0:0.01:2*%pi;<br>
y1 = sin(x1);<br>
<br>
tic<br>
X = integrate("interp1(x1, y1, x, ''spline'')", "x", x0, x1);<br>
toc<br>
<br>
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.<br>
<br>
Changing "spline" to "linear" even worsens it rising to 33 s.<br>
<br>
Has anybody an idea of what can be happening?<br>
<br>
Maybe it computes the full interpolator for each single point?
Even if so, I have only 629 values of the independent variable.<br>
<br>
Regards,<br>
<br>
Federico Miyara<br>
<br>
<br>
<br>
</font> <br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:users@lists.scilab.org">users@lists.scilab.org</a>
<a class="moz-txt-link-freetext" href="https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users">https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users</a>
</pre>
</blockquote>
<pre class="moz-signature" cols="72">--
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
<a class="moz-txt-link-freetext" href="http://www.utc.fr/~mottelet">http://www.utc.fr/~mottelet</a>
</pre>
</body>
</html>