Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Fortran element by element array multiplication

  1. Jan 10, 2012 #1
    1. The problem statement, all variables and given/known data

    Hello,

    I'm having a problem in multiplying two vectors together in a specific way in Fortran. I can do it in Matlab, but can't work out how to do it in Fortran.

    The problem is that i want to multiply two vectors together, but only each element by it's corresponding element in the other vector. In Matlab you simply use A.*B which works perfectly.



    2. Relevant equations

    For example if A = [1 2 3]'

    and B = [4 5 6]'

    Then A.*B = [4 10 18]



    3. The attempt at a solution

    Any attempt i make in Fortran tries to multiply all the elements together (usually by dot product etc), but i just want the first element multiplied by the first element, and then the second mulitplied by the second etc.

    Sorry about the strange formatting, i tried to crowbar this question into the template...
     
    Last edited by a moderator: Jan 10, 2012
  2. jcsd
  3. Jan 10, 2012 #2

    Mark44

    Staff: Mentor

    Assuming that all variables and the three arrays are declared and that A and B are initialized, this should work.
    Code (Text):

    N = 3
    DO I = 1, N
      C(I) = A(I) * B(I)
    END DO
     
     
  4. Jan 11, 2012 #3
    Ah yes, that would work. Although i'm surprised there isn't a function for it.

    Thanks a lot though!
     
  5. Jan 11, 2012 #4
    Vector times vector can also be a scalar, 32.
     
  6. Jan 11, 2012 #5

    hotvette

    User Avatar
    Homework Helper

    If you are using at least Fortran 90, I believe the following will work:

    C = A*B

    or

    C(1:N) = A(1:N)*B(1:N)

    The 1st version assumes A,B,C have the same dimension. The 2nd version is safer.
     
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook