# Solving a large system of coupled ode. (Python)

I really have a problem here. I have not found a solution yet. The system I need to solve similar to this:(Basic idea)

$$c_1 = \dfrac{dx}{dr}+y$$

$$c_2 = \dfrac{dy}{dr}+x$$

Both $$c_1/ c_2$$ are equal to 0 meaning the desired system is: $$\dfrac{dy}{dr} = -x$$ and $$\dfrac{dx}{dr} = -y$$

The ODE system I wanna solve is the above with Initial Values given $$(x0,y0,r0)$$ and needs to be solved for the space $$(r0,rf)$$

Generally, the $$c$$ expressions are quantities of: x,y,dx,dy,r and more specific

IMPORTANT I'm in no position to solve with respect to dx,dy. Although this example is easy, (2 variables), I got 12 Variables and the Expr are super large.

Generally, I would like to solve this system:

$$A\cdot \dfrac{dX}{dr} + B\cdot X= 0$$

where X is a set of Variables, and A,B are Square Matrix of the Length of X.

Is there any routine I can Solve it in that form?

• I don't understand how both Expr are equal to zero, but also contain quantities x,y,dx,dy,r. – Wolfgang Bangerth Mar 11 at 20:27
• I also don't understand what dx,dy are. Are these $dx/dt$ and $dy/dt$? – Wolfgang Bangerth Mar 11 at 20:28
• And finally, since there does not appear to be a term $dr/dt$, how come you need/are given initial conditions r0 for this function? – Wolfgang Bangerth Mar 11 at 20:29
• Is it possible to writing down the expressions by using LaTeX that we have here to make your question clearer? I agree Wolfgang cause it's not clear at all what you want to accomplish. – Alone Programmer Mar 11 at 20:58
• @AloneProgrammer I did use Latex now. Sorry for not using before :( 1st time in this SE. Thought I could not write. – billy Mar 11 at 22:20

You are trying to solve this matrix ODE system as:

$$A \mathbf{x}^{'}(r) = -B \mathbf{x}(r)$$

where: $$\mathbf{x}^{'}(r) = \frac{d \mathbf{x}}{dr}$$. If $$A$$ is invertible:

$$\mathbf{x}^{'}(r) = -A^{-1} B \mathbf{x}(r)$$

The general solution is:

$$\mathbf{x}(r) = \sum_{i=1}^{n} c_{i} \exp{(\lambda_{i} r)} \mathbf{u}_{i}$$

Where $$\lambda_{i}$$ and $$\mathbf{u}_{i}$$ are eigenvalue and eigenvector of $$-A^{-1} B$$ matrix. These eigenvalues and eigenvectors can be extracted easily by something like SVD. $$c_{i}$$ are constants that depend on your initial condition $$\mathbf{x}(0)$$. I'm not sure why you got stuck because as Wolfgang said it is just very routine method to solve system of ODEs.

Update: A less expensive approach to avoid inverting $$A$$ directly, may be using a backward Euler method to solve this system of ODEs numerically:

$$A \frac{\mathbf{x}(r+\Delta r) - \mathbf{x}(r)}{\Delta r} = -B \mathbf{x} (r+\Delta r)$$

or:

$$(A + \Delta r B) \mathbf{x} (r+\Delta r) = A \mathbf{x} (r)$$

Please be aware that to work with all of these methods including the direct method to invert $$A$$ and this numerical scheme, you must have $$A$$ and $$B$$ available. The above equation is just a linear equation when you know $$\mathbf{x}(r)$$ from previous step and you can solve for $$\mathbf{x}(r+\Delta r)$$ by using any linear equation solver available in Python, C, C++, etc.

• Sorry I asked this. Although with this method seperate ALL elements from the system. I only have the final Matrix $$C(X,X')=0$$ (1-Row) which can be written $$C(X,X') = AX'+BX =0$$ but I need to write functions to seperate each component, right? There is no easy way? – billy Mar 12 at 15:03
• What do you mean I have the final matrix? $C$ is just a vector. Also, if you have just $C$, it means you have a vector with all components equal to zero... so what? I agree @WolfgangBangerth, your question is so vague... – Alone Programmer Mar 12 at 17:31