       Re: Mathlink and BorlandC++

• To: mathgroup at smc.vnet.net
• Subject: [mg30435] Re: [mg30391] Mathlink and BorlandC++
• From: Omega Consulting <omega_consulting at yahoo.com>
• Date: Sat, 18 Aug 2001 04:04:59 -0400 (EDT)
• Sender: owner-wri-mathgroup at wolfram.com

```At 12:03 AM 8/15/2001, konraad dullaert wrote:
>Hey,
>
>
>I'm writting a program in Borland where I need to solve a differential
>equation (have to use NDSolve).
>After opening a link to Mathlink, you have to put the function that you want
>to use.
>
>         MLPutFunction (alink, "NDSolve, 3)
>
>But how do I send the two equations (namely the differential equation and the
>initial value) and the interval in which the equation has to solved to the
>Mathematica Kernel?
>
>Thanks for the effort,
>

You have to send the full expression out on the link piece by piece. Take
the following.

NDSolve[{D[y[x],x]==y[x],y==2},y,{x,0,3}]

To see the full expression, use FullForm

HoldForm[FullForm[NDSolve[{D[y[x],x]==y[x],y==2},y,{x,0,3}]]]

NDSolve[List[Equal[D[y[x],x],y[x]],Equal[y,2]],y,List[x,0,3]]

Or maybe TreeForm works better for you.

HoldForm[TreeForm[NDSolve[{D[y[x],x]==y[x],y==2},y,{x,0,3}]]]

So you would do the following

MLPutFunction (alink, "NDSolve", 3);
MLPutFunction (alink, "List", 2);
MLPutFunction (alink, "Equal", 2);
MLPutFunction (alink, "D", 2);
MLPutFunction (alink, "y", 1);
MLPutFunction (alink, "y", 1);
MLPutFunction (alink, "Equal", 2);
MLPutFunction (alink, "y", 1);
MLPutSymbol (alink, "y", 1);
MLPutFunction (alink, "List", 3);

If you're uncomfortable with FullForm, you can send an InputForm string and
have M_ turn it into an expression with the ToExpression command.

MLPutFunction (alink, "ToExpression", 1);