Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Compiled function with NIntegrate

  • To: mathgroup at smc.vnet.net
  • Subject: [mg52574] Compiled function with NIntegrate
  • From: Alexei Akolzin <akolzine at uiuc.edu>
  • Date: Thu, 2 Dec 2004 02:21:50 -0500 (EST)
  • Organization: University of Illinois at Urbana-Champaign
  • Sender: owner-wri-mathgroup at wolfram.com

Hello,

I wonder why NIntegrate gives the following error with compiled functions:

In:  f = Sin[x];
In:  fc = Compile[{x},f];

In:  fc[1]
Out: 0.841471

In:  NIntegrate[fc[x], {x, 0, 1}]
Out: CompiledFunction::"cfsa" : Argument x at position 1 should be a
machine-size real number.
or 
Out: CompiledFunction::cfsa: Argument NIntegrate`Private`XX7 at position 1
should be a machine-size real number.

It is true that NIntegrate compiles functions by default. This was one of
the suggestions found in the archive if not to deal, but to get around the
problem. However, my particular function f takes around 10 minutes to
evaluate for a single argument value. I never had patience to wait long
enough (hours) for a result from NIntegrate to appear, with "Compiled"
option set or not.

To speed things up I used optimization package "optimize.m": 

In:  fc = Compile[{x},Optimize[f]].

This helped a lot, with fc[1] ("1", for example) being evaluated in a matter
of mere seconds. But the problem now is that NIntegrate does not want to
work with my function. 

So, the question is: is there any way to get my compiled function, as it is,
into NIntegrate?

Thanks,
Alexei.


  • Prev by Date: JLink to remote kernel not possible?
  • Next by Date: Re: Compile ReplacePart
  • Previous by thread: Re: JLink to remote kernel not possible?
  • Next by thread: Re: Compiled function with NIntegrate