Вычисление производных в Mathematica / Mathlink

Я пытаюсь понять, как использовать Mathematica из C через Mathlink.

Если я просто хочу вычислить значение встроенной функции, я могу сделать

        MLPutFunction( lp, "RiemannSiegelZ", 1L);
        MLPutDouble(lp, val);

, и все в порядке .

Теперь, если мне нужно значение производной, все становится еще хуже:

MLPutFunction( lp, "RiemannSiegelZ'", 1L);
MLPutDouble(lp, val);

не работает. Я попытался вставить функцию "D", но у меня ничего не получалось. Лучший способ, который я смог найти так далеко, - это

char query[128];
sprintf(query, "N[RiemannSiegelZ'[%.20lf]]", val);
MLPutFunction(lp, "ToExpression", 1);
MLPutString(lp, query);

, что он действительно работает, но он очень медленный, вероятно, потому, что я прошу Mathematica проанализировать выражение, а не просто вызвать функцию ... Есть ли способ лучше?

1
задан rcollyer 5 August 2011 в 03:37
поделиться