Integration for n-times
Hi all,
I was wondering if there is any way to do a definite integral for n times (say n=50) at different points for an input variable (here P) and put the result of each integral in a wave.
Let me explain it a little bit more.
Suppose I have a function P*x^2 that I need to integrate from x=0 to x=2 with respect to x at different values of P and put each result of the integration in a wave. P runs from 0 to 49, i.e. P=0,1,2,.......,49. So I need to do the integration 50 times for 50 different values of P.
I can run the integration once for one single value of P but to do it 50 times, is there any simple way to do it in Igor? I can't pass the number of integration as a parameter in the userfunc.
#pragma rtGlobals=3 // Use modern global access method and strict wave access.
Function MyN()
Make/O/N=50 x
Make/O/N=50 Y
Variable n
For (n=1; n<=50; n+=1)
x[n]=n
Variable R = Integrate1D(userfunc,0,2,0)
Y[n]=R
Printf "%.10f\r" R
endfor
End
Function userFunc(v)
Variable v
return 1*v^2 //Integrating function Y = P*x^2, in this case P =
End
Integrate1D(userfunc,0,2,0)
Thanks,
Ann
I must be missing something. In this case, for each P value the integral is simply P * Integral of 1*v^2 for v 0..2. No need to do integration 50x, just once.
November 19, 2021 at 01:30 pm - Permalink
I think that you're asking how to make a wave assignment with Integrate1D where some parameter to be used in the integration function is taken from the wave.
Because the only way to supply extra parameters to integrate1D is as a parameter wave, you need a 'wrapper' function, something like this:
make /free pwave={var}
return Integrate1D(UserFunctionName, 0, 2, 2, 0, pwave)
end
then, in your example, you can use a wave assignment like
y = WrappperForIntegrate1D(p)
November 20, 2021 at 02:28 am - Permalink
Using x, y and r as names for waves and variables is a bad idea, each if these has a special meaning in Igor.
Also execute
November 20, 2021 at 02:38 am - Permalink
Thank you all for your suggestions. Now I have figured out the solution to it.
Ann
November 21, 2021 at 06:56 am - Permalink
In reply to Thank you all for your… by Ann
Don't forget to share that solution with the class!
Thanks.
November 21, 2021 at 07:58 am - Permalink