[GiNaC-list] Question regarding symbolic differentiation

Sun Jul 22 19:43:15 CEST 2012

```Hi,

On 22.07.2012 19:29, Martin Ettl wrote:
> I have to variables a(t) and b(t), both are dependent from time (t).
> Suppose, this two variables are multiplied liked this:
>
>               a(t) * b(t)
>
> Is it possible to derive this expression (a(t)*b(t)) according time with
> ginac.

yes, and like your notation already suggests, you need to define a and b
as functions of t.

A simple code example would be:

#include <ginac/ginac.h>
using namespace GiNaC;
#include <iostream>
using namespace std;

DECLARE_FUNCTION_1P(a)
DECLARE_FUNCTION_1P(b)

REGISTER_FUNCTION(a, dummy())
REGISTER_FUNCTION(b, dummy())

int main()
{
symbol t("t");

ex expr = a(t) * b(t);

cout << expr << endl;
cout << expr.diff(t,1) << endl;

return 0;
}

But you will get fderivative objects in the result (printed as something
like D[0], because with dummy() in the function definition macro you
have not told GiNaC what the partial derivative of a or b with respect
to t is supposed to be. You can look in the tutorial in section 6.2.2
for a more elaborate example.

Regards,
Jens

```