Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Simulating Collisions | Forces and Energy
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Python for Physics Students

bookSimulating Collisions

Understanding how objects interact during collisions is fundamental in physics. In one-dimensional collisions, two main types are studied: elastic and inelastic collisions. In both cases, the law of conservation of momentum applies—meaning the total momentum of the system before the collision equals the total momentum after the collision. Momentum is calculated as the product of mass and velocity for each object.

However, the key difference between the two types lies in energy conservation. In an elastic collision, both momentum and kinetic energy are conserved. This means that after the collision, the objects rebound without losing any kinetic energy to heat, sound, or deformation. Classic examples include collisions between billiard balls or atoms in a gas.

In an inelastic collision, momentum is still conserved, but kinetic energy is not. Some kinetic energy is transformed into other forms, such as heat or deformation. In a perfectly inelastic collision, the colliding objects stick together after impact, moving as a single combined mass.

12345678910111213141516171819202122232425262728293031323334
# Simulate a one-dimensional collision between two objects def simulate_collision(m1, v1, m2, v2, collision_type='elastic'): """ Simulate a 1D collision and return final velocities. - m1, m2: masses of object 1 and 2 - v1, v2: initial velocities of object 1 and 2 - collision_type: 'elastic' or 'inelastic' Returns: (v1_final, v2_final) """ if collision_type == 'elastic': # Both momentum and kinetic energy are conserved v1_final = ((m1 - m2) / (m1 + m2)) * v1 + (2 * m2 / (m1 + m2)) * v2 v2_final = (2 * m1 / (m1 + m2)) * v1 + ((m2 - m1) / (m1 + m2)) * v2 elif collision_type == 'inelastic': # Only momentum is conserved; objects stick together after collision v_final = (m1 * v1 + m2 * v2) / (m1 + m2) v1_final = v_final v2_final = v_final else: raise ValueError("collision_type must be 'elastic' or 'inelastic'") return v1_final, v2_final # Example usage: m1, v1 = 2.0, 3.0 # mass and velocity of object 1 m2, v2 = 1.0, -2.0 # mass and velocity of object 2 # Elastic collision v1f_elastic, v2f_elastic = simulate_collision(m1, v1, m2, v2, 'elastic') print("Elastic collision final velocities:", v1f_elastic, v2f_elastic) # Inelastic collision v1f_inelastic, v2f_inelastic = simulate_collision(m1, v1, m2, v2, 'inelastic') print("Inelastic collision final velocities:", v1f_inelastic, v2f_inelastic)
copy

The code you just explored uses the principles of conservation of momentum and, in the case of elastic collisions, conservation of kinetic energy. When simulating an elastic collision, the function calculates the final velocities by applying both conservation laws. For inelastic collisions, only momentum is conserved, so the final velocity is shared if the objects stick together. The function allows you to specify the type of collision, making it easy to compare the outcomes and better understand the physical principles at play.

123456789101112131415161718192021222324252627
import matplotlib.pyplot as plt # Initial conditions m1, v1 = 2.0, 3.0 m2, v2 = 1.0, -2.0 # Simulate both types of collision v1f_elastic, v2f_elastic = simulate_collision(m1, v1, m2, v2, 'elastic') v1f_inelastic, v2f_inelastic = simulate_collision(m1, v1, m2, v2, 'inelastic') # Prepare data for visualization labels = ['Object 1', 'Object 2'] before = [v1, v2] after_elastic = [v1f_elastic, v2f_elastic] after_inelastic = [v1f_inelastic, v2f_inelastic] x = range(len(labels)) width = 0.25 plt.bar([i - width for i in x], before, width=width, label='Before') plt.bar(x, after_elastic, width=width, label='After Elastic') plt.bar([i + width for i in x], after_inelastic, width=width, label='After Inelastic') plt.ylabel('Velocity (m/s)') plt.title('Velocities Before and After Collision') plt.xticks(x, labels) plt.legend() plt.show()
copy

1. What is conserved in an elastic collision but not in an inelastic collision?

2. How does the code determine the final velocities after a collision?

3. Fill in the blank: In a perfectly inelastic collision, the two objects ___ after the collision.

question mark

What is conserved in an elastic collision but not in an inelastic collision?

Select the correct answer

question mark

How does the code determine the final velocities after a collision?

Select the correct answer

question-icon

Fill in the blank: In a perfectly inelastic collision, the two objects ___ after the collision.

after the collision.
stick together after the collision.
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 4

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

bookSimulating Collisions

Glissez pour afficher le menu

Understanding how objects interact during collisions is fundamental in physics. In one-dimensional collisions, two main types are studied: elastic and inelastic collisions. In both cases, the law of conservation of momentum applies—meaning the total momentum of the system before the collision equals the total momentum after the collision. Momentum is calculated as the product of mass and velocity for each object.

However, the key difference between the two types lies in energy conservation. In an elastic collision, both momentum and kinetic energy are conserved. This means that after the collision, the objects rebound without losing any kinetic energy to heat, sound, or deformation. Classic examples include collisions between billiard balls or atoms in a gas.

In an inelastic collision, momentum is still conserved, but kinetic energy is not. Some kinetic energy is transformed into other forms, such as heat or deformation. In a perfectly inelastic collision, the colliding objects stick together after impact, moving as a single combined mass.

12345678910111213141516171819202122232425262728293031323334
# Simulate a one-dimensional collision between two objects def simulate_collision(m1, v1, m2, v2, collision_type='elastic'): """ Simulate a 1D collision and return final velocities. - m1, m2: masses of object 1 and 2 - v1, v2: initial velocities of object 1 and 2 - collision_type: 'elastic' or 'inelastic' Returns: (v1_final, v2_final) """ if collision_type == 'elastic': # Both momentum and kinetic energy are conserved v1_final = ((m1 - m2) / (m1 + m2)) * v1 + (2 * m2 / (m1 + m2)) * v2 v2_final = (2 * m1 / (m1 + m2)) * v1 + ((m2 - m1) / (m1 + m2)) * v2 elif collision_type == 'inelastic': # Only momentum is conserved; objects stick together after collision v_final = (m1 * v1 + m2 * v2) / (m1 + m2) v1_final = v_final v2_final = v_final else: raise ValueError("collision_type must be 'elastic' or 'inelastic'") return v1_final, v2_final # Example usage: m1, v1 = 2.0, 3.0 # mass and velocity of object 1 m2, v2 = 1.0, -2.0 # mass and velocity of object 2 # Elastic collision v1f_elastic, v2f_elastic = simulate_collision(m1, v1, m2, v2, 'elastic') print("Elastic collision final velocities:", v1f_elastic, v2f_elastic) # Inelastic collision v1f_inelastic, v2f_inelastic = simulate_collision(m1, v1, m2, v2, 'inelastic') print("Inelastic collision final velocities:", v1f_inelastic, v2f_inelastic)
copy

The code you just explored uses the principles of conservation of momentum and, in the case of elastic collisions, conservation of kinetic energy. When simulating an elastic collision, the function calculates the final velocities by applying both conservation laws. For inelastic collisions, only momentum is conserved, so the final velocity is shared if the objects stick together. The function allows you to specify the type of collision, making it easy to compare the outcomes and better understand the physical principles at play.

123456789101112131415161718192021222324252627
import matplotlib.pyplot as plt # Initial conditions m1, v1 = 2.0, 3.0 m2, v2 = 1.0, -2.0 # Simulate both types of collision v1f_elastic, v2f_elastic = simulate_collision(m1, v1, m2, v2, 'elastic') v1f_inelastic, v2f_inelastic = simulate_collision(m1, v1, m2, v2, 'inelastic') # Prepare data for visualization labels = ['Object 1', 'Object 2'] before = [v1, v2] after_elastic = [v1f_elastic, v2f_elastic] after_inelastic = [v1f_inelastic, v2f_inelastic] x = range(len(labels)) width = 0.25 plt.bar([i - width for i in x], before, width=width, label='Before') plt.bar(x, after_elastic, width=width, label='After Elastic') plt.bar([i + width for i in x], after_inelastic, width=width, label='After Inelastic') plt.ylabel('Velocity (m/s)') plt.title('Velocities Before and After Collision') plt.xticks(x, labels) plt.legend() plt.show()
copy

1. What is conserved in an elastic collision but not in an inelastic collision?

2. How does the code determine the final velocities after a collision?

3. Fill in the blank: In a perfectly inelastic collision, the two objects ___ after the collision.

question mark

What is conserved in an elastic collision but not in an inelastic collision?

Select the correct answer

question mark

How does the code determine the final velocities after a collision?

Select the correct answer

question-icon

Fill in the blank: In a perfectly inelastic collision, the two objects ___ after the collision.

after the collision.
stick together after the collision.
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 4
some-alt