Fortran90/95: Πως υπολογίζουμε τη ρητή δύναμη αριθμού??  Το θέμα επιλύθηκε

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Fortran90/95: Πως υπολογίζουμε τη ρητή δύναμη αριθμού??

Δημοσίευσηαπό fractus » 23 Ιαν 2013, 16:37

Γεια χαρά
Έφτιαχνα ένα προγραμματάκι και προέκυψε πρόβλημα στον υπολογισμό της ρητής δύναμης ενός αριθμού. Δίνω ένα παράδειγμα:
Κώδικας: Επιλογή όλων
integer test
real*8 nn

   test=8
   nn=8.
   print*, nn**(1/2)
   print*, test**(1/2)
end


με αποτέλεσμα

Κώδικας: Επιλογή όλων
  1.0000000000000000     
           1


Για τον υπολογισμό της τετραγωνικής ρίζας, υπάρχει έτοιμη συνάρτηση, αλλά για άλλες περιπτώσεις πχ 1/3, 2/3, δε μπορώ να καταλάβω πως γίνεται.
Μια σκέψη μου είναι να χρησιμοποιήσω σειρά Taylor αλλά νομίζω ότι υπάρχει ευκολότερος τρόπος
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 debian 7.4 3.2.0-4-amd64 64bit (en_US.UTF-8, gnome-fallback)
3 Intel Core2 Quad CPU Q6600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5KC - � P5KC
4 nVidia G86 [GeForce 8400 GS] [10de:0422] {nouveau}
5 eth0: Atheros Inc. Attansic L1 Gigabit Ethernet [1969:1048] (rev b0) ⋮ wlan0: Atheros Inc. AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] [168c:0023] (rev 01)
fractus
babeTUX
babeTUX
 
Δημοσιεύσεις: 15
Εγγραφή: 02 Οκτ 2012, 22:49
Εκτύπωση

Re: Fortran90/95: Πως υπολογίζουμε τη ρητή δύναμη αριθμού??

Δημοσίευσηαπό konnn » 23 Ιαν 2013, 17:02

Μεταφέρθηκε στην κατάλληλη ενότητα

1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Fortran90/95: Πως υπολογίζουμε τη ρητή δύναμη αριθμού??  Το θέμα επιλύθηκε

Δημοσίευσηαπό lucinos » 23 Ιαν 2013, 20:59

η fortran δεν νομίζω να έχει ρητούς :D
Spoiler: show
Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Μέτριος
Λειτουργικό → Ubuntu 11.04 natty 64-bit (el_GR.UTF-8)
Προδιαγραφές → CPU: 4x Intel Core i5 CPU 750 2.67GHz ‖ RAM 3953 MiB ‖ ASRock P55DE3
Κάρτες γραφικών: nVidia G92 [GeForce GTS 250] ⎨10de:0615⎬ (rev a2)
Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller ⎨10ec:8168⎬ (rev 03)
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Re: Fortran90/95: Πως υπολογίζουμε τη ρητή δύναμη αριθμού??

Δημοσίευσηαπό fractus » 23 Ιαν 2013, 21:38

lucinos έγραψε:η fortran δεν νομίζω να έχει ρητούς :D


Έχει όμως ακέραιους..
"Το σύνολο των ρητών αριθμών είναι το σύνολο των αριθμών που μπορούν να γραφούν σε μορφή κλάσματος με ακέραιους όρους και παρονομαστή διάφορο του μηδενός."

https://el.wikipedia.org/wiki/%CE%A1%CE ... F%8C%CF%82

Αλλά δεν είναι αυτό το θέμα. Η τετραγωνική ρίζα του 8, δεν είναι το 1. Ούτε του 8.0 είναι το 1.0000000... .
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 debian 7.4 3.2.0-4-amd64 64bit (en_US.UTF-8, gnome-fallback)
3 Intel Core2 Quad CPU Q6600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5KC - � P5KC
4 nVidia G86 [GeForce 8400 GS] [10de:0422] {nouveau}
5 eth0: Atheros Inc. Attansic L1 Gigabit Ethernet [1969:1048] (rev b0) ⋮ wlan0: Atheros Inc. AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] [168c:0023] (rev 01)
fractus
babeTUX
babeTUX
 
Δημοσιεύσεις: 15
Εγγραφή: 02 Οκτ 2012, 22:49
Εκτύπωση

Re: Fortran90/95: Πως υπολογίζουμε τη ρητή δύναμη αριθμού??

Δημοσίευσηαπό lucinos » 23 Ιαν 2013, 21:40

άσε στην άκρη τα μαθηματικά που μαθαίνεις στο σχολείο ή στην βικιπαίδεια και δοκίμασε να δώσεις στην fortran ένα σκέτο 1/2 όπου 1 και 2 ακέραιοι.
Τελευταία επεξεργασία από lucinos και 24 Ιαν 2013, 08:18, έχει επεξεργασθεί 1 φορά/ες συνολικά
Spoiler: show
Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Μέτριος
Λειτουργικό → Ubuntu 11.04 natty 64-bit (el_GR.UTF-8)
Προδιαγραφές → CPU: 4x Intel Core i5 CPU 750 2.67GHz ‖ RAM 3953 MiB ‖ ASRock P55DE3
Κάρτες γραφικών: nVidia G92 [GeForce GTS 250] ⎨10de:0615⎬ (rev a2)
Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller ⎨10ec:8168⎬ (rev 03)
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Re: Fortran90/95: Πως υπολογίζουμε τη ρητή δύναμη αριθμού??

Δημοσίευσηαπό fractus » 23 Ιαν 2013, 22:04

lucinos έγραψε:δοκίμασε να δώσεις στην fortran ένα σκέτο 1/2 όπου 1 και 2 ακέραιοι


Προσπάθεια1

Κώδικας: Επιλογή όλων
integer x,y
   x=1
   y=2
   print*, x/y
end


Αποτέλεσμα
Κώδικας: Επιλογή όλων
0


Προσπάθεια2
Κώδικας: Επιλογή όλων
print*, 1/2
end


Αποτέλεσμα
Κώδικας: Επιλογή όλων
0


Προσπάθεια3

Κώδικας: Επιλογή όλων
   print*, 8**(0.5)
end


Αποτέλεσμα
Κώδικας: Επιλογή όλων
2.8284271   


Άρα:
lucinos έγραψε:η fortran δεν νομίζω να έχει ρητούς :D

Δηλαδή δε μπορώ να της πω ότι 1/2 ή 2/3 είναι ρητοί αριθμοί αλλά πρέπει να τους δηλώσω ως 0.5 ή 0.666..., ως δεκαδικούς/πραγματικούς με όποια ακρίβεια το δέχεται η Fortran . Σωστά?
Ή ακόμη καλύτερα μπορώ να γράψω ως 1./2. ή 2./3. ...
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 debian 7.4 3.2.0-4-amd64 64bit (en_US.UTF-8, gnome-fallback)
3 Intel Core2 Quad CPU Q6600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5KC - � P5KC
4 nVidia G86 [GeForce 8400 GS] [10de:0422] {nouveau}
5 eth0: Atheros Inc. Attansic L1 Gigabit Ethernet [1969:1048] (rev b0) ⋮ wlan0: Atheros Inc. AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] [168c:0023] (rev 01)
fractus
babeTUX
babeTUX
 
Δημοσιεύσεις: 15
Εγγραφή: 02 Οκτ 2012, 22:49
Εκτύπωση

Re: Fortran90/95: Πως υπολογίζουμε τη ρητή δύναμη αριθμού??

Δημοσίευσηαπό lucinos » 24 Ιαν 2013, 04:09

Ακόμη καλύτερα, όλοι οι αριθμοί να είναι κινητής υποδιαστολής. Δηλαδή μη γράφεις 8 αλλά 8.0
Spoiler: show
Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Μέτριος
Λειτουργικό → Ubuntu 11.04 natty 64-bit (el_GR.UTF-8)
Προδιαγραφές → CPU: 4x Intel Core i5 CPU 750 2.67GHz ‖ RAM 3953 MiB ‖ ASRock P55DE3
Κάρτες γραφικών: nVidia G92 [GeForce GTS 250] ⎨10de:0615⎬ (rev a2)
Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller ⎨10ec:8168⎬ (rev 03)
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Re: Fortran90/95: Πως υπολογίζουμε τη ρητή δύναμη αριθμού??

Δημοσίευσηαπό fractus » 24 Ιαν 2013, 12:33

Έχει δηλαδή σχέση και με αυτή τη συζήτηση
viewtopic.php?f=53&t=21374&hilit=FORTRAN&http
Δε πίστευα ότι θα έφτανε ως εκεί. Απλά είμαι συνηθισμένος με τη mathematica που μπορούσε να δεχθεί τέτοιες πράξεις, (συμβολικές αν θυμάμαι καλά τις ονομάζουμε για να τις ξεχωρίσουμε από τις αριθμητικές (όπου βέβαια τα αποτελέσματα είναι και στην ανάλογη μορφή) )). Δε ξέρω κατά βάθος πως το έκανε και αν "σκεφτόταν" με όρους μόνο "αριθμός κινητής υποδιαστολής" αλλά όπως και να' χει με τη fortran ασχολούμαι οπότε.. μελέτη! :geek:

Σ'ευχαριστώ για τις απαντήσεις σου!! :clap:
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 debian 7.4 3.2.0-4-amd64 64bit (en_US.UTF-8, gnome-fallback)
3 Intel Core2 Quad CPU Q6600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5KC - � P5KC
4 nVidia G86 [GeForce 8400 GS] [10de:0422] {nouveau}
5 eth0: Atheros Inc. Attansic L1 Gigabit Ethernet [1969:1048] (rev b0) ⋮ wlan0: Atheros Inc. AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] [168c:0023] (rev 01)
fractus
babeTUX
babeTUX
 
Δημοσιεύσεις: 15
Εγγραφή: 02 Οκτ 2012, 22:49
Εκτύπωση


Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron