Why is (N dot N) different for magnitude than for X, Y, Z components?

In summary, the conversation discusses the calculation of a function using data from a single time step. The data is represented by X, Y, and Z components, and the function involves finding the magnitude of the average of these components. There is confusion about whether to compute the magnitude of the average or the average of the magnitude, and the conversation concludes that the correct order is to first compute the average vector and then find its length. An example is given to illustrate the difference between the two methods of computation.
  • #1
bumblebee77
56
2
TL;DR Summary
I have data in terms of X, Y, and Z components. There is also a "Total" value for each set of X, Y, Z data. I see that SQRT(X^2 + Y^2 + Z^2) = Total. So I think "Total" is a vector magnitude. Now I have to use the data in a calculation: (the equation is "N dot N") but can't figure out the correct way to do it. If I (in Python) square "Total," the answer is different than if I do: X^2 + Y^2 + Z^2. Is it obvious to anyone whether I should use "Total" or "X^2 + Y^2 + Z^2"?
I have to perform a calculation on my data. Here is an example of data from just one time step (data from other time steps would appear as additional rows).

XYZTotal
2213

Total = SQRT(X2 + Y2 + Z2).

The calculation I have to do is: (N • N), where "N" is an average.

I tried doing this in Python and realized I don't understand what I have to do. The result is not the same when I use "Total" as when I use the components. For example,

np.average(X)**2 + np.average(Y)**2 + np.average(Z)**2

is not the same as

np.average(Total)**2

Can anyone help explain which is the most likely way to do it? The only information I have makes it unclear if "N" in the equation is "Total" (the vector magnitude) or (np.average(X)**2 + np.average(Y)**2 + np.average(Y)**2) and I have no idea if there's a way to tell from what I have asked. I'm not a mathematician.
 
Last edited:
Physics news on Phys.org
  • #2
Well, I think it is clear that is not the same the magnitude of the average, that the average of the magnitude. Since taking the magnitude of a vector is not a linear operation.
As for whether you must compute one or the other, I don't think any of us can help you... Both quantities are physically interesting and no one here will have a better idea of what you were asked to do than you...
 
  • #3
Gaussian97 said:
Well, I think it is clear that is not the same the magnitude of the average, that the average of the magnitude. Since taking the magnitude of a vector is not a linear operation.
As for whether you must compute one or the other, I don't think any of us can help you... Both quantities are physically interesting and no one here will have a better idea of what you were asked to do than you...
Thank you, Gaussian. It's not homework. I'm old. I'm using an old paper to calculate something I need for another calculation and there's no more information than what I posted here.

I was hoping someone who is familiar with vector calculus might know of a relationship between vector magnitude and the components that might make it make sense somehow! Sounds like I'm stuck though unless I can track down someone else who has used the equation and has provided better parameter definitions.

I don't understand your first sentence, sorry. Do you mean my definition of the magnitude is incorrect?
 
  • #4
Well, anyway without more information is impossible to give you an answer. But maybe this can help you:

The magnitude of the average gives you information about how the system moves as a whole. While the average of the magnitude gives you information about how the system spreads in all directions, even when there is not a general movement in a certain direction.

bumblebee77 said:
I don't understand your first sentence, sorry. Do you mean my definition of the magnitude is incorrect?
No, what I'm saying is that the definition (the one you have is correct) is not linear, so the magnitude of a sum is not the sum of magnitudes.
 
  • Like
Likes bumblebee77
  • #5
The definition of ##\vec A \cdot \vec B = |A||B|cos(\theta)## where ##\theta## is the angle between the two vectors.

In your case, ##\vec N \cdot \vec N = |N|^2 ## since ##\theta## is zero and ##cos(0)## is one.

In xyz coordinates, we can use the Pythagorean formula to compute |N| and from that ##|N|^2## : ##x^2 + y^2 + z^2##
 
  • Like
Likes bumblebee77
  • #6
bumblebee77 said:
np.average(X)**2 + np.average(Y)**2 + np.average(Y)**2

is not the same as

np.average(Total)**2
Just checking, that has two Ys and no Z's in the first part, is that your entire problem?
 
  • Like
Likes bumblebee77
  • #7
Thank you, Gaussian97, that is interesting.
Office_Shredder said:
Just checking, that has two Ys and no Z's in the first part, is that your entire problem?
Thank you for pointing that out. That's a typo. It is "Z" in my code. I will edit the question.
 
  • #8
jedishrfu said:
The definition of ##\vec A \cdot \vec B = |A||B|cos(\theta)## where ##\theta## is the angle between the two vectors.

In your case, ##\vec N \cdot \vec N = |N|^2 ## since ##\theta## is zero and ##cos(0)## is one.

In xyz coordinates, we can use the Pythagorean formula to compute |N| and from that ##|N|^2## : ##x^2 + y^2 + z^2##
Thank you, jedishrfu, that is interesting. I am still not getting it though. Would anyone happen to have time to elaborate?

1. So the Pythagorean formula says the same thing my original question said, that "Total" is the square root of the sum of squares of the X, Y, Z components:

Pythagorean formula:
##|N|^2## : ##x^2 + y^2 + z^2##

My code ("**2" means "squared"):
Total**2 = X**2 + Y**2 + Z**2

2. The problem is that I get a different answer for (N • N) when I do this (np.average means "take the mean of"):
i. np.average(Total)**2

compared to this:
ii. np.average(X)**2 + np.average(Y)**2 + np.average(Z)**2

Using (i) gives leads to an answer that's reasonable. Using (ii) doesn't but I don't understand why. If anyone can see what I'm missing, I would be grateful to know.
 
  • #9
You are conflating two notions here:
- computing an average vector
- length of an average vector

You must compute them in that order any other order will yield incorrect results.
 
  • #10
To put it another way, consider the two vectors (1,0,0) and (-1,0,0). np.average(X)=np.average(Y)=np.average(Z)=0, but np.average(total)=1.

It's probably worth meditating for a bit on this example.
 
  • Like
Likes bumblebee77 and jedishrfu
  • #11
Office_Shredder said:
To put it another way, consider the two vectors (1,0,0) and (-1,0,0). np.average(X)=np.average(Y)=np.average(Z)=0, but np.average(total)=1.

It's probably worth meditating for a bit on this example.

Thank you, Office_Shredder (and jedishrfu), this is very helpful indeed. I understand the difference between the two methods you have provided in your example,
(1,0,0) (-1,0,0).

1. np.average(X)=np.average(Y)=np.average(Z)=0 because
Average = sum/count = 1+(-1)/2 = 0/2 = 0

However, I think this is different from what my equation describes:
(N•N), where N is an average of each column in my table. If I understand correctly, this should be:
np.average(X**2)=np.average(Y**2)=np.average(Z**2)=0

and I think it would end up being:
First square: 1*(-1) + 0*0 + 0*0 = 1
Then take the average: 1

2. Then in second part of your example, np.average(total)=1 because
Total = 1*(-1) + 0*0 + 0*0 = 1

I apologize because I know I'm being very slow, but I am still not certain I am getting this. From my update to your first method, it looks like both examples should lead to the same result. But they don't in my Python calculation.

I have thought about this so long and the result is so important for what I'm trying to do that I'm second guessing myself and would like to make sure not to proceed based on something that's wrong. If you see anywhere I'm getting something wrong, I'd appreciate it a lot if you would let me know. Thank you both for your patience!
 
Last edited:
  • #12
bumblebee77 said:
Thank you, Office_Shredder (and jedishrfu), this is very helpful indeed. I understand the difference between the two methods now based on your example,
(1,0,0) (-1,0,0):

1. np.average(X)=np.average(Y)=np.average(Z)=0 because
Average = sum/count = 1+(-1)/2 = 0/2 = 0

2. np.average(total)=1 because
Total = 1*(-1) + 0*0 + 0*0 = 1

I apologize because I know I'm being very slow, but I am still not certain which one is the right approach in my situation. If we know that Total = SQRT(X**2 + Y**2 + Z**2), then how should I calculate (N•N), where N is an average? It's method (2), right?

I have thought about this so long and the result is so important for what I'm trying to do that I'm second guessing myself and would like to make sure not to proceed based on something that's wrong. Thank you both for your patience!
As I told you at the beginning, if you don't tell us what is ##N## there's absolutely no way to tell you which way is correct, both approaches are correct.
It's like saying, "I need to know what is the result of ##x+1##, if I put ##x=0## I get 1 as a result, but if I put ##x=1## then I get 2, what is the correct one?"
If ##\vec{N}## is the average of all the points, i.e. $$\vec{N}=\text{average}\{\vec{r}\}$$ then you must first take the average and then compute the dot product (i.e, the magnitude) of the vector ##\vec{N}##. But without a precise definition of ##N## there's no way no one can help you to know which way is the correct one.
So please, give us more information on what are you trying to compute.
 
  • #13
Gaussian97 said:
As I told you at the beginning, if you don't tell us what is ##N## there's absolutely no way to tell you which way is correct, both approaches are correct.
It's like saying, "I need to know what is the result of ##x+1##, if I put ##x=0## I get 1 as a result, but if I put ##x=1## then I get 2, what is the correct one?"
If ##\vec{N}## is the average of all the points, i.e. $$\vec{N}=\text{average}\{\vec{r}\}$$ then you must first take the average and then compute the dot product (i.e, the magnitude) of the vector ##\vec{N}##. But without a precise definition of ##N## there's no way no one can help you to know which way is the correct one.
So please, give us more information on what are you trying to compute.

Gaussian97, I edited what you quoted although I don't think it affects what you have written. I suspect that we do know enough about N to solve this problem but I'm too inexperienced to figure it out.

What I know about N is that it's provided in bold, so it is a vector. I also know that the components (X, Y, Z) are represented by my data table columns. I know that Total is the square root of the sum of squares of the components.

I don't know if it's OK to use Total in "(N)•(N)" (here I have used () to denote "average" so that "(N)•(N)" means "average N dotted with average N"). Using Total gives me a different result than using (X)•(X) + (Y)•(Y) + (Z)•(Z).

This is the second term in the expression for "variance" if that helps.
 
  • #14
Well, if ##\vec{N}## is a vector, then ##\vec{N}\cdot \vec{N}## is the norm of that vector and therefore computing the average of the magnitudes is clearly not what we want.
Also, the variance of a vector quantity can be computed as
$$V[\vec{r}] = <r^2>-<\vec{r}>^2$$
So indeed the variance is really the difference between the two number you compute. If you say that you want the second term, i.e. ##<\vec{r}>^2## then definitively you must first take the average over the positions, and then compute the norm of the resulting vector.
 
  • Like
Likes bumblebee77
  • #15
Gaussian97 said:
Well, if ##\vec{N}## is a vector, then ##\vec{N}\cdot \vec{N}## is the norm of that vector and therefore computing the average of the magnitudes is clearly not what we want.
Also, the variance of a vector quantity can be computed as
$$V[\vec{r}] = <r^2>-<\vec{r}>^2$$
So indeed the variance is really the difference between the two number you compute. If you say that you want the second term, i.e. ##<\vec{r}>^2## then definitively you must first take the average over the positions, and then compute the norm of the resulting vector.
Thank you, Gaussian. To make sure I'm clear (not certain that I am):

I need to compute:
$$V[\vec{r}] = <r^2>-<\vec{r}>^2$$
I am OK with the first term. It's the second term I need help with.

1. Do I understand you correctly that I cannot use this method to calculate the first term? (This is the method that gives me a reasonable answer when I use the result in another calculation.)
np.average(Total)**2

because "Total" is a magnitude as in:
Total = SQRT(X^2 + Y^2 + Z^2) = ##\vec{N}\cdot \vec{N}##

2. Do I understand correctly that you're saying I should instead calculate
##<\vec{r}>^2##

by first averaging each column in my table (X then Y then Z). Then doing:
X*X + Y*Y + Z*Z?

3. I thought <\vec{r}>^2$$ (which is what I need) = ##\vec{N}\cdot \vec{N}##. Is that not true because in ##\vec{N}\cdot \vec{N}##, the Ns are not averaged?
 
Last edited:
  • #16
I think you will get equality if you do np.average(total**2) instead of np.average(total)**2
 
  • #17
Office_Shredder said:
I think you will get equality if you do np.average(total**2) instead of np.average(total)**2
Office_Shredder, thank you. I'm not sure if you saw my reply to Gaussian97 above. What I'm trying to do here is use the data in my table to calculate the second term in:

$$V[\vec{r}] = <r^2>-<\vec{r}>^2$$

I may be wrong, but I'm not sure if np.average(total**2) would work.

1. First of all, I'm not sure if it's OK to use "Total" (the square root of the sum of squares of X, Y, Z), which I think is the vector "norm" or if r is X + Y + Z.

2. Also, I think it would be similar to calculating the first term, which first involves squaring "r" and then taking the average of that result.

I apologize for my slowness on this. I think my main problem is that I don't understand if r in $$V[\vec{r}] = <r^2>-<\vec{r}>^2$$ is "Total" or if it is X + Y + Z.
 
  • #18
bumblebee77 said:
I apologize for my slowness on this. I think my main problem is that I don't understand if r in $$V[\vec{r}] = <r^2>-<\vec{r}>^2$$ is "Total" or if it is X + Y + Z.
##\vec{r}## is the position vector, and ##r## is the magnitude of ##\vec{r}##.
In other words, the first term is first to compute the magnitude of each vector and then average the results, while the second is to average all the positions and then compute the magnitude of the resulting vector.
 
  • Like
Likes bumblebee77
  • #19
Gaussian97 said:
##\vec{r}## is the position vector, and ##r## is the magnitude of ##\vec{r}##.
In other words, the first term is first to compute the magnitude of each vector and then average the results, while the second is to average all the positions and then compute the magnitude of the resulting vector.
Aha. So it sounds like the notation (the little arrow over r in ##\vec{r}## in the second term) is what solves my problem. So do I understand correctly that I cannot do this to calculate the second term:
##\vec{r}## = np.average(total**2)

Instead I have to do this?
##\vec{r}## = <X*X > + <Y*Y> + <Z*Z> (where <> means "average)
##\vec{r}## =np.average(X**2)=np.average(Y**2)=np.average(Z**2) (in Python)
 
  • #20
bumblebee77 said:
Aha. So it sounds like the notation (the little arrow over r in ##\vec{r}## in the second term) is what solves my problem. So do I understand correctly that I cannot do this to calculate the second term:
##\vec{r}## = np.average(total**2)
No, of course, this is precisely the first term and what we discussed at the beginning that of course, the average of the magnitude is not the magnitude of the average
bumblebee77 said:
Instead I have to do this?
##\vec{r}## = <X*X > + <Y*Y> + <Z*Z> (where <> means "average)
##\vec{r}## =np.average(X**2)=np.average(Y**2)=np.average(Z**2) (in Python)
The first equation is clearly wrong, in the LHS you have a vector, in the RHS you have a number. The second I don't really understand what you mean, but sure enough, all those quantities will be different.

You must first take the average of the positions, this results in a single vector, and then compute the magnitude of that vector using the Pythagorean theorem.
 
  • Like
Likes bumblebee77
  • #21
Gaussian97 said:
No, of course, this is precisely the first term and what we discussed at the beginning that of course, the average of the magnitude is not the magnitude of the average

The first equation is clearly wrong, in the LHS you have a vector, in the RHS you have a number. The second I don't really understand what you mean, but sure enough, all those quantities will be different.

You must first take the average of the positions, this results in a single vector, and then compute the magnitude of that vector using the Pythagorean theorem.
Thank you for your patience, Gaussian. I'm clear now that in the first term, it is correct to use np.average(total**2) (where "total" is the norm).

Here's the part I may not understand--how to calculate the second term, where you say this:
"You must first take the average of the positions, this results in a single vector, and then compute the magnitude of that vector using the Pythagorean theorem." Is this what I need to do?

- First calculate the average of X, the average of Y, and the average of Z. I will then have three numbers (a vector).

- Then compute the magnitude/norm of that vector by doing this:
SQRT(X^2 + Y^2 + Z^2)?
 
  • #22
Yes, that's exactly what you need to do to compute the second term
 
  • Like
Likes bumblebee77
  • #23
Gaussian97, thank you so much. I can't tell you how grateful I am to be on the way to understanding this at last and that you and the other commenters have been so generous with your time. Wish I could buy you all a beverage.

I tried to use the solutions we discussed and unfortunately, it looks like I'm still doing something wrong because the second term is very large compared to the first term and my result from my subsequent calculation is not reasonable. I'll continue to go over what you said in case I'm still misunderstanding something.

I need to calculate Term 1 and Term 2 from my table of data at the top of this thread:
$$V[\vec{r}] = <r^2>-<\vec{r}>^2$$

Here's how I did it in Python:
Term1 = np.average(total**2) # "total" is SQRT(X^2 + Y^2 + Z^2)

Term2:
Term2x = np.mean(X) # First calculate average of X, Y, and Z data (columns) from table.
Term2y = np.mean(Y)
Term2z = np.mean(Z)

Term2 = np.sqrt(Term2x**2 + Term2y**2 + Term2z**2)
# Then square the averages and take the square root.

I think what I need to do is not use a square root in the second term and do it like this:
Term2 = Term2x**2 + Term2y**2 + Term2z**2

I realized that I need to modify the equation I'm using this result in and the result I'm getting is now reasonable with my update (in red) to Term2. Whew. I really need to review my vector calculus. Thanks again, everyone.
 
Last edited:

1. Why is the magnitude of a vector different than its X, Y, Z components?

The magnitude of a vector is the length of the vector, while the X, Y, Z components represent the individual parts of the vector in a specific coordinate system. Therefore, the magnitude and components are measuring different aspects of the vector and cannot be directly compared.

2. How is the magnitude of a vector calculated?

The magnitude of a vector is calculated using the Pythagorean theorem, which states that the square of the length of the hypotenuse of a right triangle is equal to the sum of the squares of the other two sides. In the case of a vector, the magnitude is equal to the square root of the sum of the squares of its X, Y, and Z components.

3. Why is the magnitude of a vector important?

The magnitude of a vector is important because it represents the strength or size of the vector. It can also be used to calculate the direction of the vector and is an essential component in many mathematical and scientific calculations.

4. How is the magnitude of a vector different in different coordinate systems?

The magnitude of a vector will remain the same regardless of the coordinate system used to represent it. However, the X, Y, Z components of the vector may change depending on the coordinate system, which can affect the calculation of the magnitude.

5. Can the magnitude of a vector be negative?

No, the magnitude of a vector is always a positive value. This is because it represents the distance or length of the vector, which cannot be negative. However, the X, Y, Z components of the vector can be negative, which can affect the direction of the vector.

Similar threads

Replies
3
Views
1K
Replies
14
Views
1K
  • Linear and Abstract Algebra
Replies
13
Views
1K
  • Calculus
Replies
7
Views
2K
  • Programming and Computer Science
Replies
15
Views
1K
  • Classical Physics
Replies
2
Views
1K
  • General Math
Replies
4
Views
3K
  • Calculus and Beyond Homework Help
Replies
2
Views
439
  • Calculus
Replies
1
Views
1K
Back
Top