[GiNaC-list] Question regarding symbolic differentiation

Jens Vollinga jens.vollinga at googlemail.com
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



More information about the GiNaC-list mailing list