2012-07-18, 01:10
  #1
Medlem
isen.stars avatar
Antag att vi har differentialekvationen x''+sin(x)=0, x=x(t) med begynnelsevillkor x(0) = pi/4 och x'(0)=0.

Man kan inte lösa ekvationen analytisk (vad jag har hört), men kan man på något sätt bevisa att funktionen x(t) är begränsad eller obegränsad, dvs. ta reda på om övre och undre gräns för funktionen existerar (dvs supremum och infimum).

Den fysikaliska bakgrunden till detta problem är förstås den matematiska pendeln (i detta fall en pendel som startar från vila). Ofta approximerar man sin(x)=x som gäller väldigt bra för små x (x är i detta fall utslagsvinkeln mellan pendel och jämviktsläge). Man får då differentialekvationen x''+x=0 med lösningen x=(pi/4)*cos(t), som ju är begränsad.

Jag tycker att x borde vara begränsad även om x''+sin(x)=0, då den ju är det i fysiken (utslagsvinkeln kan ju aldrig bli högre än startläget, det skulle ju strida mot lagen om energins bevarande), men när jag plottar den numeriskt i matlab så har funktionen större maxvärde än ursprungsvärdet. Min misstanke är dock att detta är ett diskretiseringsfel. Plotten i matlab blir f.ö. en "sinuskurva" där perioden blir längre och längre hela tiden

Eftersom den verkar vara begränsad enligt lagen om energins bevarande så tänkte jag att man kanske på något sätt kunde få in vektoranalys för att bevisa detta. Är detta en jättedum idé?

Och nästa fråga, om vi lyckas bevisa att x är begränsad, kan man då visa att varje lokalt maximum också är ett globalt maximum, dvs att den antar sitt ursprungsvärde varje gång den är uppe och vänder (vilket den också borde göra i enlighet med energins bevarande)?

Observera att endast rena matematiska bevis eftersöks! Snälla rädda min sommar så jag slipper sitta inne och tänka på detta hela tiden, vill kunna dra till stranden som alla andra.

Om jag kommer på lösningen själv lägger jag naturligtvis upp den här!



Lite matlabkod för den som vill plotta numeriska lösningarna:

Kod:
%Huvudprogram

start=70; %Välj startvinkel (grader)
tid=30; %Välj tid som ska passera


[t1,Y1]=ode45(@linj,[0;tid],[start/180*pi;0]);
[t2,Y2]=ode45(@nonlinj,[0;tid],[start/180*pi;0]);
    
plot(t1,Y1(:,1),t2,Y2(:,1));
title(['Utslagsvinkel för plan pendel, startvinkel ',num2str(start),' grader.']);
legend('Approximation för små vinklar','Exakt lösning')

Kod:
%Approximerad funktion

function f=linj(t,Y)
f=zeros(2,1);
f(1)=Y(2);
f(2)=-Y(1);

Kod:
%Exakt funktion

function f=nonlinj(t,Y)
f=zeros(2,1);
f(1)=Y(2);
f(2)=-sin(Y(1));
Citera
2012-07-21, 01:29
  #2
Medlem
Som du säger kommer funktionenen vara begränsad. Enklaste sättet att bevisa det är att använda fysiken som vägledning för att teckna ett energiuttryck: Låt
E(t) = 1/2 * (x')² - cos(x).
Det är enkelt att verifiera att E'(t) = 0, dvs energin bevaras. Av begynnelsevilkoren fås E(0) = 0, och alltså är E(t) = 0 för alla t, och vi får alltså (x')² = 2 cos(x). Efterom (x')² ≥ 0 alltid gäller, får vi då att
cos(x) ≥ 1/2.
Eftersom x börjar på 0, måste vara kontinuerlig, och uppfyller cos(x) ≥ 1/2, så måste x alltid ligga i intervallet [-pi/4, pi/4], precis som väntat.
Citera
2012-07-21, 15:26
  #3
Medlem
evolutes avatar
Kul problem och snygg lösning!
Citera
2012-07-22, 14:59
  #4
Medlem
uturkyrkans avatar
Citat:
Ursprungligen postat av dbshw
Som du säger kommer funktionenen vara begränsad. Enklaste sättet att bevisa det är att använda fysiken som vägledning för att teckna ett energiuttryck: Låt
E(t) = 1/2 * (x')² - cos(x).
Det är enkelt att verifiera att E'(t) = 0, dvs energin bevaras. Av begynnelsevilkoren fås E(0) = 0, och alltså är E(t) = 0 för alla t

E(0) är väl
E(0)=1/2*x'(0)²-cos(x(0))=1/2*0²-cos(pi/4)=-1/sqrt(2)?
Sedan utför man liknande steg som du beskrev.
Citera
2012-07-22, 15:52
  #5
Medlem
Citat:
Ursprungligen postat av dbshw
Som du säger kommer funktionenen vara begränsad. Enklaste sättet att bevisa det är att använda fysiken som vägledning för att teckna ett energiuttryck: Låt
E(t) = 1/2 * (x')² - cos(x).
Det är enkelt att verifiera att E'(t) = 0, dvs energin bevaras. Av begynnelsevilkoren fås E(0) = 0, och alltså är E(t) = 0 för alla t, och vi får alltså (x')² = 2 cos(x). Efterom (x')² ≥ 0 alltid gäller, får vi då att
cos(x) ≥ 1/2.
Eftersom x börjar på 0, måste vara kontinuerlig, och uppfyller cos(x) ≥ 1/2, så måste x alltid ligga i intervallet [-pi/4, pi/4], precis som väntat.

om x(0)=pi/4 och x'(0)=0 blir väll cos(x(0))=0.5*(x'(0))^2=0=cos(pi/4)!=0 ?

kan du förklara det fetstilta lite mer ?
Citera
2012-07-22, 18:48
  #6
Medlem
Citat:
Ursprungligen postat av Alex.A
om x(0)=pi/4 och x'(0)=0 blir väll cos(x(0))=0.5*(x'(0))^2=0=cos(pi/4)!=0 ?

kan du förklara det fetstilta lite mer ?

Är inte x(t) förskjutningen (displacement)? Då borde väl inte x'(0)=0 gälla?
Citera
2012-07-22, 20:38
  #7
Medlem
Citat:
Ursprungligen postat av uturkyrkan
E(0) är väl
E(0)=1/2*x'(0)²-cos(x(0))=1/2*0²-cos(pi/4)=-1/sqrt(2)?
Sedan utför man liknande steg som du beskrev.

Ja, se där. Jag tror jag använde den anrika satsen "när man är för trött att bry sig, så är cos(pi/4) = 0". Knepigt det där med radianer.

Men principen för lösningen är densamma.

Citat:
Ursprungligen postat av Alex.A
kan du förklara det fetstilta lite mer ?

Ja, (x')² är ett reellt tal i kvadrat. Om man kvadrerar ett reellt tal så är resultatet alltid ≥0. Alltså är (x')² ≥ 0.

Som du märkte så har jag lite svårt för att beräkna trigonometriska uttryck, så det blev lite galet. Dessutom vet jag inte varifrån jag fick 1/2, så det blev väldigt många fel där. Om man korrigerar misstagen så får man att det ska stå
cos(x) ≥ sqrt(2)/2.
Slutsatsen att x alltid ligger i intervallet [-pi/4, pi/4] är korrekt.
__________________
Senast redigerad av dbshw 2012-07-22 kl. 20:43.
Citera
2012-07-22, 21:23
  #8
Medlem
Citat:
Ursprungligen postat av dbshw
Ja, se där. Jag tror jag använde den anrika satsen "när man är för trött att bry sig, så är cos(pi/4) = 0". Knepigt det där med radianer.

Men principen för lösningen är densamma.



Ja, (x')² är ett reellt tal i kvadrat. Om man kvadrerar ett reellt tal så är resultatet alltid ≥0. Alltså är (x')² ≥ 0.

Som du märkte så har jag lite svårt för att beräkna trigonometriska uttryck, så det blev lite galet. Dessutom vet jag inte varifrån jag fick 1/2, så det blev väldigt många fel där. Om man korrigerar misstagen så får man att det ska stå

cos(x) ≥ sqrt(2)/2.

Slutsatsen att x alltid ligger i intervallet [-pi/4, pi/4] är korrekt.
Ok , det fetstilta redde ju ut detta.

Citat:
Ursprungligen postat av chris69
Är inte x(t) förskjutningen (displacement)? Då borde väl inte x'(0)=0 gälla?.

x'(0)=0 eftersom pendeln startar ifrån vila
Citera
2012-07-25, 02:18
  #9
Medlem
isen.stars avatar
Vilken genialisk lösning! Tänkte väl att man skulle kunna göra nåt sånt, men jag vet inte om jag hade kommit på det själv. Tack för hjälpen!
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in