FindMinimum v. NMinimize and an external program

*To*: mathgroup at smc.vnet.net*Subject*: [mg125161] FindMinimum v. NMinimize and an external program*From*: EcoTheory <carroll.ian at gmail.com>*Date*: Sat, 25 Feb 2012 01:56:03 -0500 (EST)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com

Can anyone say whether the following behavior is expected and why? I'd like to avoid learning how to use MathLink, but I need to use FindMinimum on a large external calculation and my way is broken. Say there's a command line program called 'prog' that calculates y = (x-1)^2, reading x from a named pipe called 'in' and writing y to a named pipe called 'out'. Mathematica interacts with prog by reading and writing to the pipes. Like ... > in = OpenWrite["in"]; > f[x_?NumericQ]:=(Write[in, CForm[x]]; First[ReadList["!cat out", Number]]) Calling NMinimize on f gives the correct answer, but FindMinimum doesn't. Specifically, FindMinimum[f[x], {x, 0}] returns the message FindMinimum::fmgz. That is, Mathematica thinks the gradient is zero. I can't find a reason the two functions should behave differently. Any thoughts? A couple details for the DIYers. Here's prog: #include <stdio.h> #include <math.h> int main() { FILE * io; int j; double x,y; while((j = scanf("%lf", &x)) != EOF) { y = pow((x-1.0), 2); io = fopen("out", "w"); fprintf(io, "%e\n", y); fclose(io); } return; } Run prog with a redirect for stdin, as in /prog < in