# how to simplify differential form

I try the source code:

r,theta=var('r,theta')

U=CoordinatePatch((r,theta))

F=DifferentialForms(U)

x=DifferentialForm(F,0,r*cos(theta))

y=DifferentialForm(F,0,r*sin(theta))

a=x.diff().wedge(y.diff())

the output is: (r*cos(theta)^2 + r*sin(theta)^2)*dr/\dtheta


then I want to simplify_trig to the coefficients. Unfortunately a.simplify_trig() not working and all the map_coefficients and map_item are not defined.

Although in such case I can use: a[0,1]=a[0,1].simplify_trig() to do the job, for general case, maybe a 3 form depends on 6 variables, it is very cumbersome to apply simplify_trig to each coefficients.

One ugly method is: for i in a._components: a[i]=a[i].simplify_trig()

However it depends to real implementation not the interface. I want to ask whether there is an elegant way to do the same job, but just rely on the interface of class sage.tensor.differential_form_element.DifferentialForm

edit retag close merge delete

Sort by » oldest newest most voted

With Sage 7.5.1, you can use the exterior calculus on manifolds instead of DifferentialForm; the advantage is that the simplification is automatic (no need to invoke simplify_trig by hand): your example becomes:

sage: U = Manifold(2, 'U')
sage: X.<r, theta> = U.chart(r"r:(0,+oo) theta:(0,2*pi):\theta")
sage: x = U.scalar_field(r*cos(theta))
sage: y = U.scalar_field(r*sin(theta))
sage: a = x.differential().wedge(y.differential())
sage: a
2-form on the 2-dimensional differentiable manifold U
sage: a.display()
r dr/\dtheta


See http://doc.sagemath.org/html/en/refer... for more details.

more