Hei. Sitter med ei oppgave her eg ikkje får til. har fått funksjonen
f(t)=exp(-t)*sin(2*Pi*t)
Oppgava går ut på å lage eit plot av den integrerte funksjonen og den dobbel integrerte funksjonen.
Eg har laget dette programmet:
from scitools.all import *
def dydt(t):
return (exp(-t)*sin(2*pi*t))
a=0.0
b=4.0
N=50
dt=(b-a)/N
time=linspace(a,b,N+1)
yTrue=exp(-time)*sin(2*pi*time)
y=zeros(len(time))
y[0]=0
for i in range(0,len(time)-1,1):
y[i+1]=y+dt*dydt(time)
plot(time,yTrue,'k',time,y,'k--')
---------------------------------------------------------------------------------
Og når eg da plotter dette, så får eg opp plot for den funksjonen eg har gitt.(sjekket med maple)
Noen inteligente der ute som kan hjelpe meg videre? Står bom fast her, og kan på ingen måte skryte på meg noe kunnskap med Python.
på Forhånd takk
-Tor Olav-
Integrering i Python
Moderatorer: Vektormannen, espen180, Aleks855, Solar Plexsus, Gustav, Nebuchadnezzar, Janhaa
-
- Fibonacci
- Innlegg: 5648
- Registrert: 24/05-2009 14:16
- Sted: NTNU
Har brukt python ekstremt lite, med litt googling antar jeg at
om du laster inn pakken integrate fra scipy burde ting fungere greit.
http://stackoverflow.com/questions/1197 ... tion-array
Noe slikt burde funke, ellers kan du bare bruke Rieman-summer om funksjonen din er rimelig pen.
om du laster inn pakken integrate fra scipy burde ting fungere greit.
Kode: Velg alt
from scipy import integrate
Noe slikt burde funke, ellers kan du bare bruke Rieman-summer om funksjonen din er rimelig pen.
"Å vite hva man ikke vet er og en slags allvitenhet" - Piet Hein
https://s.ntnu.no/Integralkokeboken
Lektor - Matematikk, Fysikk og Informatikk
https://s.ntnu.no/Integralkokeboken
Lektor - Matematikk, Fysikk og Informatikk
beklager litt tynn beskrivelse tidligere, er meiningen å gjøre det numerisk, med Eulers metode.
det er har fått til til nå er:
from scitools.all import *
def dvdt(t):
return (exp(-t)*sin(2*pi*t))
a = 0.0
b = 4.0
N = 50
dt=(b-a)/N
time=linspace(a,b,N+1)
#yTrue=exp(-time)*sin(2*pi*time)
v = zeros(len(time)); v[0] = 0
x = zeros(len(time)); x[0] = 0
for i in range(0,len(time)-1,1):
x[i+1] = x + dt*v
v[i+1] = v + dt*dvdt(time)
plot(time,x,'k--')
figure()
plot(time,v,'k--')
Har her utviklet eit "program" som viser hastigheten med hensyn på tiden. da har eg igjen å integrere ein gang til for å få den til å vise for posisjonen.
det er har fått til til nå er:
from scitools.all import *
def dvdt(t):
return (exp(-t)*sin(2*pi*t))
a = 0.0
b = 4.0
N = 50
dt=(b-a)/N
time=linspace(a,b,N+1)
#yTrue=exp(-time)*sin(2*pi*time)
v = zeros(len(time)); v[0] = 0
x = zeros(len(time)); x[0] = 0
for i in range(0,len(time)-1,1):
x[i+1] = x + dt*v
v[i+1] = v + dt*dvdt(time)
plot(time,x,'k--')
figure()
plot(time,v,'k--')
Har her utviklet eit "program" som viser hastigheten med hensyn på tiden. da har eg igjen å integrere ein gang til for å få den til å vise for posisjonen.
-
- Guru
- Innlegg: 628
- Registrert: 06/08-2011 01:56
Å løse differensialligningen er jo det samme som å integrere i dette tilfellet, selv foretrekker jeg å gjøre som du har gjort her.
Programmet ditt løser diff. ligningen F''(t) = f(t) for F og F'(t), hvor x tilsvarer F og F'(t) tilsvarer v. Du har altså integrert funksjonen to ganger allerede og trenger ikke å gjøre det igjen! Hvis akselerasjonen a= f(t) så har du funnet både hastighet og posisjon.
Programmet ditt løser diff. ligningen F''(t) = f(t) for F og F'(t), hvor x tilsvarer F og F'(t) tilsvarer v. Du har altså integrert funksjonen to ganger allerede og trenger ikke å gjøre det igjen! Hvis akselerasjonen a= f(t) så har du funnet både hastighet og posisjon.
når eg kjører gjennom funksjonen og får opp plottene, så får eg ein med "svingninger" og eit der den begynner litt "rart", før den "retter" seg ut og blir lineær. noe eg da leser at blir hastigheten, etter som den vil bli konstant når akselrasjonen avtar.