1
$\begingroup$

I would like to define a tensor according to its components, something like the following:

[F(x)]_i,j = Integrate[f(x,y)A_i(y)B_j(y),y]

where i and j are components between 1 and 3, i.e. A_i(y)B_j(y) is a 2nd rank tensor. F is also a 2nd rank tensor, with components i and j. Now, I don't want to explicitly enter the separate values for this definition, i.e.

[F(x)]_1,1 = Integrate[f(x,y)A_1(y)B_1(y),y]
[F(x)]_1,2 = Integrate[f(x,y)A_1(y)B_2(y),y]

etc. How can I do it generally? Also, I would not like to enter specific values for A and B components, but keep it general for arbitrary A and B.


EDIT

Suppose I have the following:

f = 5 x + 3 y;
A = {8 y^2, 5 y, 17 y^3 + 3};
B = {7 y + 3, 4 y, 5 y + 3 y^2};

Now, I don't know my exact input (that's what I am asking) but it would be something like that:

F[i,j]=Integrate[f A[[i]] B[[j]],{y,0,8}]

I want it to be defined as a tensor, so that later I will be able to contract its indices with other tensors. My output should look like:

F = {{Integrate [f*A[[1]] B[[1]], {y, 0, 8}], 
      Integrate [f*A[[1]] B[[2]], {y, 0, 8}], 
      Integrate [f*A[[1]] B[[3]], {y, 0, 8}]},
     {Integrate [f*A[[2]] B[[1]], {y, 0, 8}], 
      Integrate [f*A[[2]] B[[2]], {y, 0, 8}], 
      Integrate [f*A[[2]] B[[3]], {y, 0, 8}]},
     {Integrate [f*A[[3]] B[[1]], {y, 0, 8}], 
      Integrate [f*A[[3]] B[[2]], {y, 0, 8}], 
      Integrate [f*A[[3]] B[[3]], {y, 0, 8}]}}

I want this to work when I don't define explicitly A, B, f. without definitions, I want Mathematica to write the answer in terms of A[[1]] etc, and understand it as a tensor, so I can use it later. I hope now it's clear.

$\endgroup$
5
  • $\begingroup$ Does Array or Table help? $\endgroup$
    – Szabolcs
    Jun 18, 2014 at 22:13
  • $\begingroup$ I was wondering if it was possible without entering the values explicitly, i.e. writing the expression using i,j and their range (1-3) and the progra would know what the 9 values I mean are $\endgroup$
    – Dave
    Jun 18, 2014 at 22:18
  • $\begingroup$ Can you give a specific example of an input you might have and an output you would desire, so the question is completely clear? Please use Mathematica code (what you posted is not). I'm asking this because I can imagine a number of different interpretations of your question, based on Mathematica's capabilities. An example would help a lot and would save us both time (we won't have to have a long comment thread for clarifications). $\endgroup$
    – Szabolcs
    Jun 18, 2014 at 23:42
  • $\begingroup$ BTW depending on how A and B are defined you may be able to use the Listable attribute, Map or MapThread. $\endgroup$
    – Szabolcs
    Jun 18, 2014 at 23:52
  • $\begingroup$ Thanks for the clarification. I posted an answer. Does this solve the problem? $\endgroup$
    – Szabolcs
    Jun 19, 2014 at 1:52

2 Answers 2

2
$\begingroup$

Or using Outer:

Outer[Integrate[f #1 #2, {y, 0, 8}] &, A, B]
{{5873664/5 + 307200 x, 3145728/5 + 163840 x, 3932160 + 991232 x},
 {115200 + (96800 x)/3, 61440 + (51200 x)/3, 371712 + (294400 x)/3},
 {83059424/5 + 4164232 x, 8919040 + 2230144 x, 399099392/7 + 13936480 x}}
$\endgroup$
1
$\begingroup$

You can use Table to achieve this:

f = 5 x + 3 y;
A = {8 y^2, 5 y, 17 y^3 + 3};
B = {7 y + 3, 4 y, 5 y + 3 y^2};

Table[Integrate[f a b, {y, 0, 8}], {a, A}, {b, B}]

(* {{5873664/5 + 307200 x, 3145728/5 + 163840 x, 
  3932160 + 991232 x}, {115200 + (96800 x)/3, 61440 + (51200 x)/3, 
  371712 + (294400 x)/3}, {83059424/5 + 4164232 x, 
  8919040 + 2230144 x, 399099392/7 + 13936480 x}} *)
$\endgroup$
3
  • $\begingroup$ Hey, when did Outer appear there? ;-p $\endgroup$
    – Mr.Wizard
    Jun 19, 2014 at 1:56
  • $\begingroup$ @Mr.Wizard About 1 second before you posted! The "new answer" notifcation really came just after I pressed the post button ... sorry $\endgroup$
    – Szabolcs
    Jun 19, 2014 at 1:59
  • $\begingroup$ If you include shorter form to satisfy my need for terse code I'll delete my redundant answer. $\endgroup$
    – Mr.Wizard
    Jun 19, 2014 at 2:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.