Select the vector component if the real part is sufficiently small

  • Context: Mathematica 
  • Thread starter Thread starter member 428835
  • Start date Start date
  • Tags Tags
    Component Vector
Click For Summary
SUMMARY

The discussion focuses on selecting the vector component with the smallest real part from a list of complex numbers using Mathematica. The user is iterating through a parameter that affects the real parts of the components, leading to confusion when Mathematica sorts the outputs. The solution provided includes using the SortBy function in Mathematica to sort complex numbers by their real or imaginary parts. Specifically, SortBy[{1.5 + 1.2 I, 4.8 + 200 I, 0 + 36 I}, Re][[1]] retrieves the component with the smallest real part, while SortBy[{1.5 + 1.2 I, 4.8 + 200 I, 0 + 36 I}, Im] orders them by their imaginary components.

PREREQUISITES
  • Understanding of complex numbers and their components
  • Familiarity with Mathematica programming language
  • Knowledge of sorting algorithms and their applications
  • Basic concepts of eigenvalue problems in mathematics
NEXT STEPS
  • Learn how to implement complex number operations in Mathematica
  • Explore advanced sorting techniques in Mathematica
  • Study the quadratic eigenvalue problem and its applications
  • Investigate the behavior of eigenvalues in complex number spaces
USEFUL FOR

Mathematics students, data scientists, and software developers working with complex numbers and eigenvalue problems, particularly those utilizing Mathematica for computational tasks.

member 428835
Hi PF!

Given a list of numbers, how do I select the element that has the smallest real part? I don't just want the real part though, I want the entire component.

I googled this and tried a few things but nothing works.
 
Physics news on Phys.org
Can you provide some context here? Are these complex numbers or vectors whose components are complex numbers or qaternions?
 
jedishrfu said:
Can you provide some context here? Are these complex numbers or vectors whose components are complex numbers or qaternions?
I'm given a single vector who's components are complex. I'm iterating through a parameter, and as I do, Mathematica automatically sorts them (unsure how, it's under the hood). The parameter value I loop through sometimes sends the real part of some components to zero. Then Mathematica sorts, but the output is different, causing me a headache to find the correct vector position.

Example: let's say after three iterations the output vector looks as follows for each iteration $$\begin{bmatrix}1.6+i\\6.5+0i\\4+21i\end{bmatrix}\to\begin{bmatrix}1.5+1.2i\\4.8+200i\\0+36i\end{bmatrix}\to \begin{bmatrix}1.2+1.5i\\0+53i\\0+400i\end{bmatrix}$$

Each vector component should be smoothly transitioning through iterations, so there should be no jumps, and in fact each progression should be monotonic in both real and imaginary components. Notice going from vector 2 to 3 the sorting changes. Clearly in vector 3, the 2nd and 3rd component should be changed. However, sometimes Mathematica sorts outputs very confusing.

So I'm trying to identify the correct way to order these outputs.
 
Honestly I don’t know how sorting is involved here. Is it using the modulus of the complex number to order the components of each vector or more correctly list if it’s being sorted?

Are you saying you have some parameter say “t” that you are iterating over and multiplying the first vector by “t” to get the next vector? So that you are tracing some particles trajectory in a 3D complex number space?
 
jedishrfu said:
Honestly I don’t know how sorting is involved here. Is it using the modulus of the complex number to order the components of each vector or more correctly list if it’s being sorted?
Yea I think that's exactly what it's doing.

jedishrfu said:
Are you saying you have some parameter say “t” that you are iterating over and multiplying the first vector by “t” to get the next vector? So that you are tracing some particles trajectory in a 3D complex number space?
I'm afraid it's a little more complicated. I'm solving the quadratic eigenvalue problem $$M+\lambda \epsilon \Phi + \lambda^2 K = 0$$ where ##\epsilon## is changing. As it changes, the eigenvalues change, but they do so smoothly. The real parts of the eigenvalues eventually vanish, but the complex components monotonically rise, but at different slopes. But if the quantities are well ordered (no overlap) then I'm actually thinking I could order these by their imaginary components, since these components should grow approximately linearly.

Do you know how to do this?
 
No, but it’s good you explained it better as someone might jump in and help.

Can you add any more on the M, ##\lambda##, ##\epsilon##, ##\Phi##, and K?
 
If you want to extract the element of a list of complex constants with the smallest real part then

Code:
SortBy[{1.5 + 1.2 I, 4.8 + 200 I, 0 + 36 I}, Re][[1]]

will give you

Code:
36 I

If you want to order a vector of complex constants by their imaginary components then this

Code:
SortBy[{1.5 + 1.2 I, 4.8 + 200 I, 0 + 36 I}, Im]

will give you this

Code:
{1.5 + 1.2 I, 0 + 36 I, 4.8 + 200 I}
 
Last edited:
  • Like
Likes   Reactions: jedishrfu and member 428835

Similar threads

  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 6 ·
Replies
6
Views
1K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 13 ·
Replies
13
Views
3K
  • · Replies 3 ·
Replies
3
Views
6K
  • · Replies 9 ·
Replies
9
Views
4K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 50 ·
2
Replies
50
Views
4K