Arxiu de la categoria: Física

Block (or book) stacking problem

Aquest matí he fet el problema d’apilar llibres (o blocs). Es tracta d’estudiar sota quines condicions puc apilar blocs (de longitud L) de manera que els vagi desplaçant un respecte l’anterior, de manera que no caiguin. Quina és la condició límit per tal de què no caiguin? Amb blocs de longitud L puc aconseguir un desplaçament de longitud L?

Aquest problema recordo haver-m’hi barallat (i crec que en el seu dia no el vaig solucionar) l’estiu de 1989 a Bagà, doncs el problema estava enunciat en el Schaum de Mecànica Teòrica (Murray R, Spiegel). He cercat el llibre (l’he trobat en pdf a la xarxa, segur que el tinc en una estanteria), i a la foto es veu l’enunciat del llibre en la pàg 249. NOTA: Val a dir que la figura que ensenya el llibre està malament i que genera confusió: és al revés, el bloc de dalt és el que sobresurt la meitat, i els blocs de baix són els que estan més junts (la figura del llibre té un apilament clarament inestable, els blocs segur que cauen perquè el centre de gravetat està fora del bloc de més a sota).

En aquella època no existia Internet, o sigui que m’hi vaig barallar sense poder demanar ajuda. Ara l’he resolt (tot sol, va a dir, veure el pdf en els enllaços de sota), i després de resoldre’l he cercat informació complementària que he trobat d’allò més interessant (videos de Youtube inclosos), veure els enllaços.

La solució. Tot el sistema dels blocs 1…N-1 que estan sobre el bloc N no cauen si el seu centre de masses cau just en l’extrem del bloc N. Es pot resoldre de forma iterativa: el bloc 1 s’aguanta sobre el bloc 2 si el posem a la meitat, L/2. El sistema blocs 1+2 s’aguanta sobre el bloc 3 si el centre de masses dels blocs 1+2 està just en l’extrem del bloc 3. Anem posant blocs, i anem calculant els centres de masses, i anem veient quina és la condició d’equilibri. I al final (veure la solució) es troba que el centre de masses és una sèrie harmònica:

Xi+1cm = L/2 * (1 + 1/2 + 1/3 + … + 1/i)

I ara una mica de matemàtiques: la sèrie harmònica és divergent (encara que divergeix molt lentament). La qual cosa significa que es pot aconseguir un desplaçament teòric tan gran com es vulgui (veure el video de l’enllaç, on s’aconsegueix un desplaçament bastant gran).

Ara només em falta fer l’experiència amb la Maria i el Pere, a veure si ho podem fer aquest mes. Si ho aconseguim, penjarem també el video.

Enllaços:

Llibre: Elementary Mechanics Using Python

Tinc un nou repte pel que queda de 2019 i per al primer semestre del 2020. He començat a llegir el llibre Elementary Mechanics Using Python: A Modern Course Combining Analytical and Numerical Techniques, de Anders Malthe-Sørenssen. És tot un curs de física, i combina de manera bastant entenedora els exemples clàssics de moviment, forces, energia,… amb les seves solucions numèriques, utilitzant les llibreries matemàtiques i de fer gràfiques de Python.

Es tracta d’implementar tots els exemples del llibre a codi Python. No he vist cap enllaç per descarregar tot el codi, en qualsevol cas, els exemples vull adaptar-los i fer-me’ls meus. He començat per l’exemple del pes suspès d’una molla, que com tothom sap la solució del moviment és sinusoidal al voltant del punt d’equilibri, la velocitat és zero en els punts màxim i mínim, i la velocitat és màxima en el punt d’equilibri. Aquest exemple s’explica en l’apartat 5.7, que parla de forces, i no n’hi ha prou en copiar i enganxar el codi, sinó que l’he hagut d’adaptar. Aquesta és la meva solució:

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np

# Initialize
m = 1.0
# kg
k = 100.0 # N/m
v0 = 1.0
# in m/s
time = 2.0 # s
g = 9.8 # m/s^2

# Numerical setup
dt = 0.0001 # s
n = int(round(time/dt))
t = np.zeros(n,float)
y = np.zeros(n,float)
v = np.zeros(n,float)
# Initial values
y[0] = 0.0
v[0] = v0
# Simulation loop
for i in range(n-1):
\tF = -k*y[i] – m*g
\ta = F/m
\tv[i+1] = v[i] + a*dt
\ty[i+1] = y[i] + v[i+1]*dt
\tt[i+1] = t[i] + dt

fig = plt.figure()
fig.suptitle(u”Objecte suspès d’una molla”)
plot1 = fig.add_subplot(211)
#plot1.set_xlabel(‘t [s]’)
plot1.set_ylabel(‘y [m]’)
plot1.xaxis.grid()
plot1.plot(t,y)
plot2 = fig.add_subplot(212)
plot2.set_xlabel(‘t [s]’)
plot2.set_ylabel(‘v [m/s]’)
#plot1.grid(axis=’y’)
#plt.grid(b=True, which=’minor’, color=’#666666′, linestyle=’-‘)
plot2.xaxis.grid()
plot2.plot(t,v)

for i in range(10, n-1, 400):
\tplot1.plot(t[i],y[i],’ob’)
\tplot2.plot(t[i],v[i],’ob’)

plt.show()

Aquests són els capítols i temes que es tracten en el llibre:

4. Motion in One Dimension .
5. Forces in One Dimension .
6. Motion in Two and Three Dimensions
7. Forces in Two and Three Dimensions
8. Constrained Motion
9. Forces and Constrained Motion
10. Work
11. Energy
12. Momentum, Impulse, and Collisions
13. Multiparticle Systems
14. Rotational Motion
15. Rotation of Rigid Bodies
16. Dynamics of Rigid Bodies

Experiment del pèndol per trobar la constant de gravitació g

Aquest estiu vaig estar fent proves per captar la senyal d’un sensor LDR a l’ordinador, amb un programa C++ que llegia pel port sèries les dades que enviava l’Arduino. I es va comprovar com la lluminositat al capvespre disminueix com una sigmoide (1).

Aquestes eren les primeres proves per l’experiment que volia fer i documentar, que és la troballa de la constant g a partir de l’experiment del pèndol. Resumint, mesurem el periode del pèndol per diferents longituds, i podem trobar la constant g=9.81 m/s2. Sabem que el periode del pèndol no depèn de la massa, sinó només de la longitud de la corda i de la constant g òbviament.

En la foto podem veure l’esquema de l’experiment. Tenim un pèndol; un fotodetector amb Arduino capaç de detectar el pas del pèndol; enviem pel port sèrie a l’ordinador les dades; un programa C++/SDL llegeix les dades del port sèrie; processem les dades amb Python i trobem la recta de regressió; calculem g i l’error corresponent. Tot això és el que desenvoluparem en el proper post.

A part de l’experiment de trobar la constant g, la idea és fer una sèrie d’experiments que segueixin el mateix esquema. Si tenim diversos experiments preparats, es podria fer més endavant una proposta didàctica per a Secundària.

Experiments d’estiu: model matemàtic de com decau la llum solar quan es fa fosc al capvespre

M’està rondant el cap fer una sèrie d’experiments captant dades amb sensors i processant les dades a l’ordinador. Espero parlar-ne aviat, hi ha bastantes idees xul·les que es poden desenvolupar. Aquí va una petita mostra. I una de les tècniques claus per fer tot això que vull fer és enviar pel protocol sèrie les dades del sensor (arduino) a un programa C++ que s’està executant a l’ordinador.

En la foto es pot veure com es recull les dades del sensor a l’ordinador. Les dades es van gravant en un fitxer, i es poden processar a posteriori. En aquest cas tinc un sensor LDR que capta la llum solar, i es tracta de veure com decau la il·luminació a mida que es fa fosc. Quin comportament tindrà? L’estat inicial és assimptòtic (il·luminació plena), i l’estat final també (foscor). Què passa pel mig? Sabem que a la natura no li agraden els canvis bruscos. Hem d’unir les dues rectes amb una corba. Això ens dóna una corba sigmoide, en la qual hi hauria un punt d’inflexió de canvi màxim en el decreixement de la il·luminació? Serà cert aquest comportament, aquest model matemàtic? Anem a comprovar-ho.

Un cop tenim el fitxer amb les dades, les processarem amb les llibreries científiques numpy i scipy de Python. Com podem veure en el codi, es proposa una línia de màxim ajustament de tipus sigmoide. I efectivament obtenim una bona solució i un bon ajustament com es pot veure en la gràfica. En aquest cas, l’equació obtinguda és:

y =987.24 * (1 / 1 + exp(-0.07*(x-393.87))) +-8.02

No hem de fer massa cas a les dades de l’eix de les X, són tan sols punts. Senzillament tenir en compte que la distància entre punts són 30 segons.

Aquesta és una senzilla i bona demostració d’estiu (un divertimento) de què la natura es descriu amb funcions matemàtiques. Les mates són una bona eina per descriure el comportament de la naturalesa. I que els fenòmens exponencials són inherents a la Física.

Aquest últim any he estat estudiant mètodes numèrics i les llibreries científiques de Python, i realment hi veig un munt de possibilitats, que vull anar explorant aquest curs que començarà d’aquí poc.

# -*- coding: utf-8 -*-
#cel·la LDR que ha gravat com decau la llum al capvespre.
#La funció que s’ajusta a les dades és una sigmoide

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

def sigmoid(x, a, b, c, d):
y = c / (1 + np.exp(-b*(x-a))) + d
return y

y = np.loadtxt(‘../dades/LDR_capvespre.txt’)
x = np.linspace(1,len(y),len(y))
#print (x)
#print (len(x))

popt, pcov = curve_fit(sigmoid, x, y, p0=[350, 0.001,1000, 2]) #és necessari ficar uns bons paràmetres inicials

print popt
print (‘y =c * (1 / 1 + exp(-b*(x-a))) +d ‘)
print (‘y =’ + ‘%.2f’%popt[2] + ‘ * (1 / 1 + exp(‘ + ‘%.2f’%popt[1] + ‘*(x-‘ + ‘%.2f’%popt[0] + ‘))) +’ + ‘%.2f’%popt[3] )

plt.figure()
plt.plot(x, y, ‘k’, label=”Original Noised Data”)
plt.plot(x, sigmoid(x, *popt), ‘r-‘, label=”Fitted Curve”)

plt.legend()
plt.show()

# Resultat:
#y =c * (1 / 1 + exp(-b*(x-a))) +d
#y =987.24 * (1 / 1 + exp(-0.07*(x-393.87))) +-8.02

Elementary Mechanics Using Python

Ja he acabat el llibre Elementary Mechanics Using Python, i en el fitxer adjunt tenim tot el codi Python i els gràfics generats. Ha estat una bona repassada d’un curs de Mecànica general: forces, energia, treball, sòlid rígid. He escollit un dels gràfics a l’atzar, tots els exercicis han estat interessants de programar. En el fitxer exercicis.txt s’ha documentat la feina feta i s’ha relacionat tots els exercicis realitzats. De totes maneres, la manera com s’ha anomentat els scripts i els gràfics resultants fan que s’ubiquin ràpidament en l’apartat del llibre corresponent.

Els scripts s’han fet amb python2, tot i que fàcilment es poden portar a python3. En el llibre s’ha utilitzat la llibreria pylab que representa que simplifica la feina de realitzar els gràfics i utilitzar els mòduls matemàtics. Tanmateix, nosaltres hem preferit utilitzar les llibreries numpy i matplotlib directament, és una aproximació més general.

Jules Verne: De la Terre à la Lune

Amb aquest post enceto una sèrie d’escrits i comentaris a lectures amb els que vull homenatjar, des d’ara fins el juliol del 2019, el 50è aniversari de la missió Apollo XI i l’arribada de l’home a la Lluna. Comencem per un clàssic, una lectura que crec que és interessant per afrontar aquesta efemèride.

El 1865 Juli Verne va publicar De la Terra a la Lluna. En aquest llibre. el president del Gun-Club, el senyor Barbicane, proposa d’enviar un projectil a la Lluna. I per resoldre dubtes, es posa en contacte amb l’Observatori de Cambridge (Massachussets), i els planteja una sèrie de preguntes. La primera: Est-il possible d’envoyer un projectile dans la Lune?.

En el capítol IV tenim la resposta de Cambridge:

Oui, il est possible d'envoyer un projectile dans la Lune, si l'on parvient à animer ce projectile d'une vitesse initiale de douze mille yards par seconde. 

Anem a repassar d’on surt aquest valor.

Per calcular la velocitat d’escapament, la velocitat que hem d’imprimir al coet serà aquella que venci tot el camp gravitatori de la Terra, que anirà disminuint a mesura que el projectil s’enfili cap amunt. L’energia gravitatòria o potencial que hem de vèncer és la diferència entre l’energia potencial a la superfície de la Terra, menys l’energia potencial fora del camp gravitatori (a l’infinit) que valdrà 0. I aquesta energia potencial que hem de vèncer ha de ser igual que l’energia cinètica que hem d’imprimir (conservació de l’energia). Veure la imatge amb les fórmules.

Per tant, la velocitat d’escapament no depèn de la massa del projectil, i tampoc depèn de la direcció de llançament, com hem vist fent un raonament purament energètic.

La velocitat d’escapament de la Terra és doncs ve = sqrt(2 x 9,81 x 6371000) = 11180 m/s = 11,2Km/s = 40320 Km/h. I com que una yarda són 1 yd = 0.9144 m, ve = 12226 yd/s, que és precisament la velocitat que es comenta en el llibre.

M’ha semblat que aquest senzill càlcul és una bona manera de començar aquest homenatge als homes que van trepitjar la Lluna el 20 de juliol de 1968, i als científics i enginyers que ho van fer possible.

Enllaços:

Llibre d’equacions diferencials. Capítol “Equació de la corda pesant: la catenària”

Recordo en els meus dies de la facultat que vam resoldre a la pissarra l’equació de la corda pesant. És un cas típic d’anàlisi infinitessimal, amb solució analítica: la corba catenària. L’equació va ser obtinguda per primera vegada per Leibniz, Huygens i Johann Bernoulli el 1691.

M’ho he passat molt bé escribint aquest article. M’ha servit per aprofundir en LaTeX, i en la llibreria Matplotlib per fer les gràfiques amb Python.

Com es comenta a l’article, un cas pràctic molt divertit podria ser la construcció d’una bicicleta de rodes quadrades que circulés sobre una superfície feta a base de corbes catenàries. La idea seria pròpia del Cirque du Soleil, segur que triomfaria!

Pots descarregar aquest capítol en el següent enllaç:

Llibre d’equacions diferencials. Capítol “La ciència de l’enamorament”

Vaig amb la idea d’escriure alguns articles sobre equacions diferencials, que podrien desembocar en un llibre. M’agradaria donar un to amè, centrant-me en aspectes pràctics, per demostrar que les equacions diferencials es poden aplicar a molts àmbits diferents. El títol podria ser alguna cosa com ara: Equacions diferencials per tot arreu: de com el càlcul infinitesimal resol problemes en tots els camps del coneixement

De fet he pensat un guió per al llibre, seria alguna cosa com ara:

Fı́sica

  • Problemes clàssics: la molla i el pèndol
  • Dinàmica de coets. Equació de Tsiolkovski
  • Isòtops radioactius

Biologıia

  • Ecologia de poblacions
  • Teorıia de l’evolució
  • Hàbits d’alimentació en poblacions animals

Sociologia

  • La ciència de l’amor
  • Sistemes de votació, dinàmica de partits polı́tics

Economia

  • Evolució dels preus
  • Crisi financera

Matemàtiques

  • Equació de la corda pesant: la catenària
  • La braquistòcrona i la tautòcrona

Medicina

  • Dinàmica dels tumors
  • Modelitzar el càncer: competència i selecció natural

Electrònica

  • Càrrega del condensador. Oscil·ladors LC, RLC
  • Unió PN, difusió de portadors

Quı́mica

  • Dinàmica de les reaccions quı́miques
  • Intercanvi de calor

Fluids

  • Llei de Torricelli
  • Mecànica de fluids. Coeficient de resistència

Sistemes complexos

  • Caos
  • Fractals

He estat treballant en varis capítol. Per exemple, en La ciència de l’enamorament s’analitza un cas de com una parella tenen un comportament diferent davant de l’enamorament, que es pot modelitzar amb una equació diferencial. I com a resultat de resoldre el problema, el resultat podria ser (en funció de les condicions inicials i del valor dels paràmetres), un estira-i-arronsa cíclic en la manera com senten l’atracció mútua.

En qualsevol cas el problema no és original (com els altres que es presenten en el guió que són, de fet, problemes bastant clàssics), però sí que se li vol donar un to personal, i a més es vol donar tot el codi python i la generació de les gràfiques que es presentaran en els articles.

Pots descarregar aquest capítol en el següent enllaç:

Equacions diferencials. MDF: Mètode de les diferències finites

En anàlisi numèrica, el mètode de les diferències finites és un mètode utilitzat per calcular de manera aproximada les solucions a les equacions diferencials usant equacions diferencials finites per aproximar derivades.

En aquest article hem fet una introducció i una exposició aclaridora sobre aquest mètode bàsic de càlcul numèric per a la resolució d’equacions diferencials, i ho hem aplicat a l’exemple de la balística, en tres supòsits: projectil sense fregament; fregament proporcional a la velocitat; i fregament proporcional al quadrat de la velocitat.