On Tue, Oct 7, 2008 at 12:26 AM, Alan Bromborsky <[EMAIL PROTECTED]> wrote: > > Ondrej Certik wrote: >> On Tue, Oct 7, 2008 at 12:07 AM, Alan Bromborsky <[EMAIL PROTECTED]> wrote: >> >>> Ondrej Certik wrote: >>> >>>> On Mon, Oct 6, 2008 at 11:28 PM, Alan Bromborsky <[EMAIL PROTECTED]> wrote: >>>> >>>> >>>>> Suppose I have two symbols A and B that I wish to declare implicit >>>>> functions of say the symbols x1, x2, and x3. Then I wish to calculate >>>>> the derivative of A*B with respect to x1 and x2 and x3. Can I do this >>>>> and if so how? >>>>> >>>>> >>>> Yes, for example this way: >>>> >>>> In [2]: A = Function("A") >>>> >>>> In [3]: B = Function("B") >>>> >>>> In [4]: var("x1 x2 x3") >>>> Out[4]: (x₁, x₂, x₃) >>>> >>>> In [5]: f = A(x1, x2, x3)*B(x1, x2, x3) >>>> >>>> In [6]: f >>>> Out[6]: A(x₁, x₂, x₃)⋅B(x₁, x₂, x₃) >>>> >>>> In [7]: diff(f, x1) >>>> Out[7]: >>>> d d >>>> A(x₁, x₂, x₃)⋅───(B(x₁, x₂, x₃)) + B(x₁, x₂, x₃)⋅───(A(x₁, x₂, x₃)) >>>> dx₁ dx₁ >>>> >>>> >>>> >>>> >>>> Ondrej >>>> >>>> >>> Is there anyway of suppressing the arguments so you could write f = A*B >>> and then d(A*B)/dx1 = dA/dx1*B+A*dB/dx1. I guess what I am saying is >>> that writing A(x1,x2,x3) could get very long especially if the A's and >>> B's are components of vectors or matrices and you are differentiating >>> all of them. It would be very useful to declare the independent >>> variables when you declare A as a function so you do not have to write >>> out A(x1,x2,x3) every time you use A in an expression or differentiate it. >>> >> >> Like below? >> >> In [1]: var("x1 x2 x3") >> Out[1]: (x₁, x₂, x₃) >> >> In [2]: A = Function("A")(x1, x2, x3) >> >> In [3]: B = Function("B")(x1, x2, x3) >> >> In [4]: f = A*B >> >> In [5]: diff(f, x1) >> Out[5]: >> d d >> A(x₁, x₂, x₃)⋅───(B(x₁, x₂, x₃)) + B(x₁, x₂, x₃)⋅───(A(x₁, x₂, x₃)) >> dx₁ dx₁ >> >> >> >> Ondrej >> >> > >> > Yes almost, but can you suppress the (x1,x2,x3) in the output so that > the output would be > > A*dB/dx1+B*dA/dx1 ?
I see. Isn't this just a way of printing the expression? E.g. a matter of creating a new Printer class. It's true that if you just use symbols, you'll get 0, as they don't depend on x1: In [1]: var("x1 A B") Out[1]: (x₁, A, B) In [2]: diff(A*B, x1) Out[2]: 0 Feel free to create a new issue for that and let's start implementing it. Ondrej --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to sympy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sympy?hl=en -~----------~----~----~----~------~----~------~--~---