-edit: ik dacht toch echt dat ik in Programming poste
Wil iemand even lief zijn?
===Wiskundig verhaal===
Ik had het geweldige plan om de prestatiewinst te gaan bekijken tussen sinusoiden bereken via
- de reele weg: reeksen van Taylor
- de Complexe-getallen route: sinusoide omvormen naar e-machten met behulp van de formule van Euler en dan de e-machten omzetten naar Taylorreeksen.
In princiepe zou een computer de laatste methode veel sneller moeten doen omdat een benadering voor een e-macht-Taylorreeks minder berekeningen nodig heeft.
Dit dacht ik te doen door een computer bij elke methode een 10^x keer te doen en ondertussen de tijd te meten.Ik ben dan ook nu bezig met het script voor de Complexe methode, en daar kom ik hetvolgende probleem tegen. Ineens blijkt dat de ondersteuning van Complexe Getallen in Fortran alleen maar bestaat uit een klein beetje vectorberekening. Klopt dit?
Kortom: kan ik met het getal i rekenen in Fortran95 of in een andere taal?
Sterker nog: is er een taal die het getal i ondersteunt?
http://nl.wikipedia.org/wiki/Complex_getal
http://nl.wikipedia.org/wiki/Taylor-reeks
-edit: opgelost
Ik word oud ofzo, want:
ofwel als resultaat
Alleen moet ik nu zelf nog de benaderingsformules van Taylor gaan programmeren om het antwoord enigssinds acceptabel te krijgen... Reele methode is nu namelijk iets van 10x sneller. (Voor de test de print line in de loop even commenten)
Gaat lukken!
===Wiskundig verhaal===
Ik had het geweldige plan om de prestatiewinst te gaan bekijken tussen sinusoiden bereken via
- de reele weg: reeksen van Taylor
- de Complexe-getallen route: sinusoide omvormen naar e-machten met behulp van de formule van Euler en dan de e-machten omzetten naar Taylorreeksen.
In princiepe zou een computer de laatste methode veel sneller moeten doen omdat een benadering voor een e-macht-Taylorreeks minder berekeningen nodig heeft.
Dit dacht ik te doen door een computer bij elke methode een 10^x keer te doen en ondertussen de tijd te meten.Ik ben dan ook nu bezig met het script voor de Complexe methode, en daar kom ik hetvolgende probleem tegen. Ineens blijkt dat de ondersteuning van Complexe Getallen in Fortran alleen maar bestaat uit een klein beetje vectorberekening. Klopt dit?
Kortom: kan ik met het getal i rekenen in Fortran95 of in een andere taal?
Sterker nog: is er een taal die het getal i ondersteunt?
http://nl.wikipedia.org/wiki/Complex_getal
http://nl.wikipedia.org/wiki/Taylor-reeks
-edit: opgelost
Ik word oud ofzo, want:
code:
1
2
| Complex ::i i = (0, 1) |
ofwel als resultaat
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| ! This programma is gebaseerd op:
! * http://www.fortran.com/F/
! * http://gcc.gnu.org/
program complexLoop
! Declareren variabelen !
integer :: howMuch, loopCount
real*16 :: start, finish, x
complex :: i, ineg
complex*16 uitkomst
! Constanten !
i = (0, 1)
ineg = (0, -1)
! Welkomsttekst + vragen hoeveel hij moet loopen !
print *, "Hallo, welkom bij dit test-programma."
print *, " Loop: Met complexe getallen"
print *, "Hoevaak moet ik de berekening doen?: "
read *, howMuch
print *, "------------------------------------------------------"
! Begintijd opvragen !
call cpu_time(start)
! Herhalingsloop !
loopCount = 0
do while (howMuch > 0)
! Standaard !
loopCount = loopCount + 1
x = loopCount * .023857718
! Complexe berekening: !
uitkomst = (exp(i*x) - exp(ineg*x)) / (2 * i)
! Loop printen: !
print *, "Loop: ", loopCount, " - uitkomst ~ ", uitkomst
howMuch = howMuch - 1
end do
! Eindtijd opvragen + Tijd printen !
call cpu_time(finish)
print *,'(gebruikte tijd = ',finish-start,')'
! Einde programma !
stop
end program complexLoop |
Alleen moet ik nu zelf nog de benaderingsformules van Taylor gaan programmeren om het antwoord enigssinds acceptabel te krijgen... Reele methode is nu namelijk iets van 10x sneller. (Voor de test de print line in de loop even commenten)
Gaat lukken!
[ Voor 47% gewijzigd door Verwijderd op 12-05-2006 17:18 ]