Python Solve non-dimensionalized spring pendulum system on python

AI Thread Summary
The discussion focuses on solving a spring pendulum problem numerically using Python 2.7 and the odeint function. The user presents non-dimensionalized differential equations for the system, which involve both x and y directions as dependent variables. The initial code provided attempts to define the right-hand side of the equations but struggles with incorporating the y vector. The solution suggests modifying the function to accept both x and y vectors as inputs, allowing for simultaneous calculations of both directions. This adjustment is crucial for correctly implementing the numerical solution for the spring pendulum system.
gothloli
Messages
37
Reaction score
0

Homework Statement


I'm supposed to solve the spring pendulum numerically on python 2.7, using odeint. The system is supposed to solved for the y -direction and the x-direction in terms of time. In class we did this for pendulum DE, but that only had x as the dependent variable, this system has two.

Homework Equations


These are the non-dimensionalized De's I get
\frac{d^{2}Y}{d\tau^{2}} = -1+\frac{(1-Y)}{\sigma}-\frac{(1-\sigma)(1-Y)}{\sigma\sqrt{X^{2}+(1-Y)^{2}}}

and
\frac{d^{2}X}{d\tau^{2}}=-\frac{X}{\sigma}+\frac{(1-\sigma)X}{\sigma\sqrt{X^{2}+(1-Y)^{2}}}.
Where σ is the non-dimensional parameter

The Attempt at a Solution


def rhs(xvector,t):

x1dot=xvector[1]
x2dot=xvector[3]
x3dot=yvector[0]
x4dot=(-xvector[1]/sigma)+((1-sigma)*xvector[0])/(sigma*sqrt((xvector[0])**2+(1-yvector[0])**2))

return [x1dot,x2dot,x3dot,x4dot]

This is the beginning of the code, but I don't know how to include the y vector into this function?
 
Last edited:
Technology news on Phys.org


I understand your struggle with using odeint to solve a spring pendulum with two dependent variables. The first step in solving this problem is to make sure that your equations are correctly non-dimensionalized, as this can affect the behavior of the system. From your homework equations, it looks like you have correctly non-dimensionalized the equations.

To include the y vector into your function, you can simply add it as another input to the function. Your function will then take in both the x and y vectors, and you can use them in your equations accordingly. Your code would look something like this:

def rhs(xvector, yvector, t):
x1dot = xvector[1]
x2dot = xvector[3]
y1dot = yvector[1]
y2dot = (-yvector[1]/sigma) + ((1-sigma)*yvector[0])/(sigma*sqrt((xvector[0])**2+(1-yvector[0])**2))

return [x1dot, x2dot, y1dot, y2dot]

This way, you can solve for both the x and y directions simultaneously. I hope this helps and good luck with your assignment!
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...

Similar threads

Replies
1
Views
2K
Replies
15
Views
2K
Replies
1
Views
1K
Replies
3
Views
3K
Replies
2
Views
2K
Replies
1
Views
4K
Replies
3
Views
1K
Back
Top