Normalize projection matrix - Generalized eigenvalue problem

36 Views Asked by At

In mechanical dynamics (vibration), I have generalized eigenvalue problem with two symmetric matrix $M$ (mass) and $K$ (stiffness)

$$ K \cdot v = \lambda M \cdot v $$

using scipy.linalg.eigh to solve this problem, I get the values of $\left[\lambda\right]$ and $B$ such that

$$ B^{T} \cdot M \cdot B = I $$

$$ B^{T} \cdot K \cdot B = \left[\lambda\right] $$

Question: How can I normalize $B$? That means, find $V$ such

$$ V^T \cdot M \cdot V = \left[m\right] $$ $$ V^T \cdot K \cdot V = \left[k\right] $$ $$ \left[m\right]^{-1} \cdot \left[k\right] = \left[\lambda\right] $$

$\left[m\right]$ and $\left[k\right]$ are diagonal matrix

Objective: Find the mass $m$ and stiffness $k$ of each vibration mode.

PS: Finding the values of $\left[m\right]$ is enough cause

$$ \sqrt{m_j}\cdot V_{ij} = B_{ij} $$

$$ k_{j} = \lambda_j \cdot m_{j} $$

1

There are 1 best solutions below

0
On BEST ANSWER

To find $\mathbf{V}$ from $\mathbf{B}$ such $\mathbf{V}^T \mathbf{M} \mathbf{V}$ and $\mathbf{V}^T \mathbf{K} \mathbf{V}$ are diagonals, we see that

\begin{align*} \left[\mathbf{B}^{T} \mathbf{M} \mathbf{B}\right]_{ij} & = \sum_{k, l} \left[\mathbf{B}^T\right]_{ik} \cdot [\mathbf{M}]_{kl} \cdot \left[\mathbf{B}\right]_{lj} \\ & = \sum_{k, l} B_{ki} M_{kl} B_{lj} = \delta_{ij} \end{align*}

Which means if $V_{ki}=c_{i} \cdot B_{ki}$ we get

\begin{align*} \left[\mathbf{V}^T \mathbf{M} \mathbf{V}\right]_{ij} & = \sum_{kl} V_{ki}V_{lj} M_{kl} \\ & = \sum_{kl} c_i B_{ki}\cdot c_{j} B_{lj} \cdot M_{kl} \\ & = c_{i}c_{j} \sum_{kl} B_{ki} B_{lj} M_{kl} \\ & = c_{i}c_{j} \delta_{ij} = c_{i}^2 \cdot \delta_{ij} \end{align*}

That means we can choose $c_i$ whatever we want that $\mathbf{V}^T \mathbf{M} \mathbf{V}$ remains diagonal. As we have

$$ \mathbf{V}^T \mathbf{M} \mathbf{V} = \left[m\right] $$ $$ \mathbf{V}^T \mathbf{K} \mathbf{V} = \left[k\right] $$ $$ c_i^2 = m_i $$ $$ c_i^2 \omega_i^2 = k_i $$

We choose

$$ \sum_{k} V_{ki}^2 = 1 \Rightarrow c_i = \dfrac{1}{\sqrt{\sum_{k} B_{ki}^2}} $$