In modern Scilab these functions are called from Fortran library. Here is its source <http://gitweb.scilab.org/?p=scilab.git;a=blob;f=scilab/modules/special_functions/src/fortran/dbesjg.f> .
With best regards, maintainer of Mathieu functions toolbox for Scilab <http://atoms.scilab.org/toolboxes/Mathieu>, IEEE member, Ph.D., Nikolay Strelkov. 2015-01-24 20:21 GMT+03:00 Claus Futtrup <[email protected]>: > Hi Nikolay, et al. > > You're right, I should have checked Scilab help for Bessel functions > before trying to do my own. > > I executed besselj(0,x_array) as well as besselj(1,x_array) ... it seems > that this function works exactly like what I made myself. And the output is > indistinguishable (for the range I'm interested in). > > Trying to find the Scilab code for besselj, I see that it's an uneditable > and hard coded. Is there anywhere I can study in detail how besselj was > coded? > > Best regards, > Claus > > > On 24-01-2015 18:01, Nikolay Strelkov wrote: > > Dear Claus! > > For me it seems that using standard functions is always better, than > writing them from scratch. > > So I recommend to use built-in Scilab functions besseli, besselj, > besselk, bessely, besselh > <http://help.scilab.org/docs/5.5.1/en_US/bessel.html>. > > With best regards, > maintainer of Mathieu functions toolbox for Scilab > <http://atoms.scilab.org/toolboxes/Mathieu>, > IEEE member, Ph.D., > Nikolay Strelkov. > > > 2015-01-24 19:53 GMT+03:00 Claus Futtrup <[email protected]>: > >> Hi >> >> I've made a small script to play around with Bessel functions of the >> first kind... but this is very basic and I'm wondering if there's a smarter >> way. >> >> Below is the script I made (the function + a small test which plots the >> result). >> >> Best regards, >> Claus >> >> // bessel_test.sce >> function z=Jn(n, x) >> // The following power series approximates the nth Bessel >> // function of the first kind for each input x >> // In acoustics x = 2ka, defines the iput frequency k = omega / c and >> size >> // of the piston radiator >> powerseries = 0; >> for m=0:19 // actually it should be infinity, but 10 approximates OK ... >> powerseries_m = ((-1)^m / (factorial(m) * factorial(m + n))) * >> (x/2)^(2*m); >> powerseries = powerseries + powerseries_m; // sum the powerseries >> end >> z = ((x/2)^n) .* powerseries;endfunction >> x_array = 0:0.1:9.9; // define 100 points on the x-axis >> // with 2ka (x) from 0 to 10, and with m = 0-19, >> // this approximation is reasonably good for 2ka < 10 >> z_0_array = Jn(0,x_array); // Calculate J0 >> z_1_array = Jn(1,x_array); // Calculate J1 >> scf();a = >> gca();plot(x_array,z_0_array,'-b');plot(x_array,z_1_array,'-r');xtitle("Bessel >> functions","x (2ka)","output (z)");legend("J0","J1"); >> >> >> >> _______________________________________________ >> users mailing list >> [email protected] >> http://lists.scilab.org/mailman/listinfo/users >> >> > > > _______________________________________________ > users mailing > [email protected]http://lists.scilab.org/mailman/listinfo/users > > > > _______________________________________________ > users mailing list > [email protected] > http://lists.scilab.org/mailman/listinfo/users > >
_______________________________________________ users mailing list [email protected] http://lists.scilab.org/mailman/listinfo/users
