ψευδογλώσσα!

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

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

Re: ψευδογλώσσα!

Δημοσίευσηαπό peny » 10 Φεβ 2013, 23:27

eliasps έγραψε:
simosx έγραψε:Πως λειτουργεί η μέθοδος αυτή;

Σίμο, γράφεις το σύστημα σε μορφή Ax=b, όπου A είναι ο πίνακας των συντελεστών των μεταβλητών των εξισώσεων, x o πίνακας των μεταβλητών και b ο πίνακας με τους αριθμούς στο δεύτερο μέλος κάθε εξίσωσης.
Στην περίπτωση:
peny έγραψε:5χ+10y+2z=24
3x+4y-z=30
-y+4z=9

Έχεις:
Κώδικας: Επιλογή όλων
  ┌5 10 2┐      ┌x┐     ┌24┐
Α=|3 4 -1|  , x=|y| , b=|30|
  └0 -1 4┘      └z┘     └ 9┘

Και μετά κάνεις τις κατάλληλες πράξεις για την Jacobi και λύνεις με έναν συγκεκριμένο τύπο.
Αλλά φαντάζομαι πως το θέμα, είναι η δημιουργία των πινάκων σε ψευδογλώσσα και όχι η εφαρμογή της Jacobi σε αλγόριθμο.
Για την δημιουργία πινάκων ας πούμε, θα μπορούσε (αν δεν κάνω λάθος):
Κώδικας: Επιλογή όλων
ΓΙΑ i ΑΠΌ 1 ΜΕΧΡΙ 3 ΜΕ ΒΗΜΑ 1
   ΓΙΑ j AΠΌ 1 ΜΕΧΡΙ 3 ΜΕ ΒΗΜΑ 1
      ΔΙΑΒΑΣΕ Α[i,j] #εδώ βάζεις με τη σειρά τις τιμές των συντελεστών (5, 10, 2, 3, 4, -1, 0, -1, 4)
      AΝ i=1 TOTE #εδώ το έβαλα έτσι για να δώσεις τις μεταβλητές μία φορά. Αν θες το βάζεις και σε άλλη θέση, ή τελείως εκτός.
         ΔΙΑΒΑΣΕ χ[j] #εδώ τις μεταβλητές (x, y, z)
      ΤΕΛΟΣ_ΑΝ
   TEΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ b[i] #εδώ τις ισότητες (24, 30, 9)
TEΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

@peny Αγνόησε το ότι είναι κακογραμμένος σαν κώδικας, πρέπει προσθέσεις κείμενο που να περιγράφει τι τιμή βάζεις κάθε φορά και να μπει σε καλύτερη θέση η εισαγωγή τιμών για το x.
Αλλά κάτι τέτοιο δεν θες; Την δημιουργία πινάκων A, x, b;

Σημείωση: Εδώ δημιουργούνται οι πίνακες A,x,b και όχι οι D, D^(-1) και R που απαιτούνται για την μέθοδο Jacobi.


Ναι, είναι ακριβώς αυτό που θέλω!
Δεν πολυκατάλαβα όμως τους σχολιασμούς που σημειώνεις και κατ'επέκταση
πως θα εφαρμόσω τους δικούς μου αριθμούς....
1 Linux: Αρχάριος ┃ Προγραμματισμός: Καθόλου ┃ Αγγλικά: Προχωρημένος
2 Ubuntu 11.10 oneiric 64bit (el_GR.utf8), Ubuntu 3.0.0-13-generic, Ubuntu 2.6.38-12-generic, Ubuntu 2.6.32-25-generic, Ubuntu 2.6.32-24-generic,Windows 7
3 Intel Core2 Duo CPU T5800 2.00GHz ‖ RAM 3016 MiB ‖ TOSHIBA Portable PC - TOSHIBA Satellite A300
4 ATI Mobility Radeon HD 3400 Series[1002:95c4]
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136](rev 02)⋮wlan0: Intel WiFi Link 5100 [8086:4232]
peny
babeTUX
babeTUX
 
Δημοσιεύσεις: 39
Εγγραφή: 02 Οκτ 2010, 21:21
Εκτύπωση

Re: ψευδογλώσσα!

Δημοσίευσηαπό eliasps » 10 Φεβ 2013, 23:38

Κατ' αρχάς, κάθε πίνακας πρέπει να δηλωθεί στην αρχή του προγράμματος, στην ψευδογλώσσα.

Οι σχολιασμοί είναι για να δείξω με ποιά σειρά βάζεις τις τιμές και που.
Όταν αλγόριθμος μπαίνει στην πρώτη επανάληψη ( ΓΙΑ i ΑΠΟ 1...), τότε το i γίνεται 1 και στην συνέχεια μπαίνουμε στην επανάληψη για το j όπου το j γίνεται 1.
  • Τότε ο αλγόριθμος διαβάζει την τιμή Α[1,1] του πίνακα, δηλαδή εκεί βάζεις τον πρώτο συντελεστή της πρώτης εξίσωσης.
  • Μετά το j γίνεται 2 (το i παραμένει 1) και ο αλγόριθμος διαβάζει τον δεύτερο συντελεστη (του y) από την πρώτη εξίσωση, στην θέση Α[1,2].
  • Μετά το j γίνεται 3 (το i παραμένει 1) και ο αλγόριθμος διαβάζει τον τρίτο συντελεστη (του z) από την πρώτη εξίσωση, στην θέση Α[1,3].
O αλγόριθμος στην συνέχεια, βγαίνει από την επανάληψη του j, γιατί ολοκληρώθηκε για την πρώτη εξίσωση και στην συνέχεια διαβάζει την b[1] η οποία είναι ο αριθμός της πρώτης εξίσωσης στο δεύτερο μέλος [24].

Μετά η ίδια διαδικασία επαναλαμβάνεται για i=2 και i=3 (δηλαδή για την δεύτερη και την τρίτη εξίσωση) μέχρι που δημιουργούνται οι πίνακες Α, b.

Για να γίνει πιο κατανοητό το παράδειγμα θα πρέπει να προστεθεί και κείμενο που να εξηγεί τι γίνεται σε κάθε βήμα.
Η θέση για τον πίνακα x δεν μου αρέσει και καλύτερα να μπει αλλού. Αλλά αυτή είναι η βασική ιδέα για την δημιουργία πινάκων δύο διαστάσεων.
Το i δείχνει τις γραμμές του πίνακα Α και το j τις στήλες.
Άβαταρ μέλους
eliasps
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4017
Εγγραφή: 16 Δεκ 2011, 22:25
Τοποθεσία: Αθήνα, Αττική
Launchpad: eliasps
IRC: eliasps
Εκτύπωση

Re: ψευδογλώσσα!

Δημοσίευσηαπό peny » 10 Φεβ 2013, 23:40

Ωραία! κατάλαβα!
Σε ευχαριστώ πολύ και πάλι!
1 Linux: Αρχάριος ┃ Προγραμματισμός: Καθόλου ┃ Αγγλικά: Προχωρημένος
2 Ubuntu 11.10 oneiric 64bit (el_GR.utf8), Ubuntu 3.0.0-13-generic, Ubuntu 2.6.38-12-generic, Ubuntu 2.6.32-25-generic, Ubuntu 2.6.32-24-generic,Windows 7
3 Intel Core2 Duo CPU T5800 2.00GHz ‖ RAM 3016 MiB ‖ TOSHIBA Portable PC - TOSHIBA Satellite A300
4 ATI Mobility Radeon HD 3400 Series[1002:95c4]
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136](rev 02)⋮wlan0: Intel WiFi Link 5100 [8086:4232]
peny
babeTUX
babeTUX
 
Δημοσιεύσεις: 39
Εγγραφή: 02 Οκτ 2010, 21:21
Εκτύπωση

Re: ψευδογλώσσα!

Δημοσίευσηαπό eliasps » 10 Φεβ 2013, 23:55

peny έγραψε:Ωραία! κατάλαβα!
Σε ευχαριστώ πολύ και πάλι!

Mην το γράψεις ακριβώς έτσι, δούλεψέ το λίγο και προσέθεσε κείμενο με την εντολή ΓΡΑΨΕ.
Όπως σου είπα και πριν δεν θυμάμαι την σύνταξη της ψευδογλώσσας οπότε αυτό που έγραψα παραπάνω ίσως είναι λάθος, δεν θυμάμαι τις συναρτήσεις.
Και άλλαξε την θέση του πίνακα x, καθώς και τον τρόπο που θα δημιουργείται.
Αν πρέπει να φτιάξεις και τους πίνακες D, R τότε χρειάζεσαι και επιπλέον πράγματα (AN ι=j τότε D[i,j]=Α[i,j] αλλιώς D[ι,j]=0 κλπ για τον R)
Το παραπάνω το έγραψα για να δείξω πως δημιουργείς τον πίνακα. Δεν αποτελεί λύση της άσκησης.
Άβαταρ μέλους
eliasps
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4017
Εγγραφή: 16 Δεκ 2011, 22:25
Τοποθεσία: Αθήνα, Αττική
Launchpad: eliasps
IRC: eliasps
Εκτύπωση

Re: ψευδογλώσσα!

Δημοσίευσηαπό peny » 11 Φεβ 2013, 00:03

Θα το μελετήσω...
Δεν χρειάζεται να φτιαξω τους πίνακες D και R, ήθελα μόνο
το διάβασμα των πινάκων με τα στοιχεία που δίνονται στις εξισώσεις
και με βοήθησες σε αυτό...!
1 Linux: Αρχάριος ┃ Προγραμματισμός: Καθόλου ┃ Αγγλικά: Προχωρημένος
2 Ubuntu 11.10 oneiric 64bit (el_GR.utf8), Ubuntu 3.0.0-13-generic, Ubuntu 2.6.38-12-generic, Ubuntu 2.6.32-25-generic, Ubuntu 2.6.32-24-generic,Windows 7
3 Intel Core2 Duo CPU T5800 2.00GHz ‖ RAM 3016 MiB ‖ TOSHIBA Portable PC - TOSHIBA Satellite A300
4 ATI Mobility Radeon HD 3400 Series[1002:95c4]
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136](rev 02)⋮wlan0: Intel WiFi Link 5100 [8086:4232]
peny
babeTUX
babeTUX
 
Δημοσιεύσεις: 39
Εγγραφή: 02 Οκτ 2010, 21:21
Εκτύπωση

Προηγούμενη

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

cron