ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4. Να γίνει πρόγραμμα το οποίο να επιλφει το Διαγώνιο Σφςτθμα: A ι το ςφςτθμα : ι ςε μορφι εξιςώςεων το ςφςτθμα : Αλγόρικμοσ m(). Διαβάηουμε τθν τιμι του ( θ διάςταςθ του Πίνακα Α ).. Δίνουμε τιμζσ ςτα ςτοιχεία των πινάκων Α και ( μόνο για τα μθ μθδενικά ςτοιχεία ). 3. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία των πινάκων A και. 4. Για τισ τιμζσ του,,,, : Τπολογίηουμε το., 5. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία τoυ. Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα
4. Διλωςθ Πινάκων Δφο Διαςτάςεων H διλωςθ γενικά ενόσ δυςδιάςτατου πίνακα κζςεων για πραγματικοφσ αρικμοφσ γίνεται με τθν εντολι : doule p[][]; με στοιχεία p[][], p[][],, p[][9], p[][], p[][],, p[][9],, p[9][], p[9][],, p[9][9]. Mε τθν εντολι : doule [+][+]; δθλώνουμε τον δυςδιάςτατο πίνακα Α με + γραμμζσ και + ςτιλεσ με ςτοιχεία [][], [][],, [][], [][], [][],, [][],, [][], [][],, [][], απ τα οποία μποροφμε να μθ χρθςιμοποιιςουμε τα ςτοιχεία τθσ ης γραμμισ και τθσ ης ςτιλθσ. Παρατηρήσεις Η διλωςθ του πλικουσ των ςτοιχείων του πίνακα μπορεί να γίνει και με τθ διλωςθ ςτακεράσ. Ζτςι, κα είχαμε το ίδιο αποτζλεςμα με τισ εντολζσ : #defe m doule p[m][m]; Αυτό μασ δίνει τθ δυνατότθτα να χρθςιμοποιιςουμε πίνακα με μεταβλθτι διάςταςθ, τθν οποία κα δίνουμε απ το πλθκτρολόγιο. Όταν αναφερόμαςτε ςτα ςτοιχεία ενόσ διδιάςτατου πίνακα πρζπει να χρθςιμοποιοφμε δφο μεταβλθτζσ για δείκτεσ. π.χ. [][j] είναι το ςτοιχείο του πίνακα που βρίςκεται ςτθν γραμμι και ςτθ j ςτιλθ. 4. Διάβαςμα τοιχείων ενόσ Διδιάςτατου Πίνακα Με τθν ομάδα εντολών : for ( = ; <=; ++ ) for ( j = ; j<=; j++ ) f ( == j ) { prtf("dose tmh g to [%d,%d] : ",,j); scf ("%lf",&[][j]); } else [][j] = ; διαβάηoυμε = 3 πραγματικοφσ αρικμοφσ απ' τo πλθκτρολόγιο χωρίσ formt ( ζναν αρικμό ςε κάκε γραμμι ) και τουσ αποκθκεφουμε ςτον πίνακα. Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα
Παρατηρήσεις Αν κζλαμε να διαβάςουμε τα ςτοιχεία ενόσ Διδιάςτατου πίνακα κατά γραμμζσ ( ςτοιχεία ςτθν κάκε γραμμι ) κα χρθςιμοποιοφςαμε τθν ομάδα εντολών : for ( = ; <=; ++ ) { for ( j = ; j<=; j++ ) scf ("%lf",&[][j]); και ςτθν εκτζλεςθ του προγράμματοσ κα δίναμε ςτοιχεία ςε κάκε γραμμι χωριςμζνα με κενά. 4.3 Εμφάνιςθ τοιχείων Διδιάςτατου Πίνακα Με τθν ομάδα εντολών : for ( = ; <=; ++ ) { for ( j = ; j<=; j++ ) prtf("%lf",[][j]); prtf("\"); } εμφανίηουμε ςτθν οκόνθ πραγματικοφσ αρικμοφσ ( τα ςτοιχεία τoυ πίνακα ) χωρίσ formt. Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα 3
ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4. Να τροποποιθκεί θ Άςκθςθ 4., ώςτε θ επίλυςθ του Συςτιματοσ να γίνεταιι με τθν κλιςθ τθσ ςυνάρτθςθσ dg(). Αλγόρικμοσ m(). Διαβάηουμε τθν τιμι του ( θ διάςταςθ του Πίνακα Α ).. Δίνουμε τιμζσ ςτα ςτοιχεία των πινάκων Α και ( μόνο για τα μθ μθδενικά ςτοιχεία ). 3. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία των πινάκων A και. 4. Καλοφμε τθ ςνάρτθςθ dg()για τον Τπολογιςμό των,... 5. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία τoυ. Αλγόρικμοσ fucto dg(). Για τισ τιμζσ του,,,, : Τπολογίηουμε το., 4.4 Πζραςμα Διδιάςτατων Πινάκων ςαν Παραμζτρων ςε fuctos Για το πζραςμα Διδιάςτατων Πινάκων ςαν παραμζτρων ςε fuctos ιςχφουν τα παρακάτω : Οι Πίνακεσ - Παράμετροι κα πρζπει να δθλωκοφν ςτο κυρίωσ Πρόγραμμα. Ο Πίνακασ περνάει ςαν παράμετροσ ςτθ διλωςθ τθσ fucto με το όνομά του και αγκφλεσ, όπου όμωσ ςτο δεφτερο ηεφγοσ αγκυλών περνάει ο αρικμόσ των ςτθλών. Στο προθγοφμενο παράδειγμα, θ διλωςθ τθσ fucto πρζπει να γίνει με τθν εντολι : vod dg(t, doule [][m+], doule [], doule []); Στθ χριςθ ι κλιςθ τθσ fucto χρθςιμοποιείται μόνο το όνομα του πίνακα. Στο προθγοφμενο παράδειγμα, θ κλιςθ τθσ fucto πρζπει να γίνει με τθν εντολι : dg (,,,); //Επίλυςθ Διαγωνίου Συςτιματοσ με κλιςθ fucto Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα 4
ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.3 Να γίνει πρόγραμμα το οποίο με τθ χριςθ ςυνάρτθςθσ να επιλφει το Αντι- Διαγώνιο Σφςτθμα : A ι το ςφςτθμα :,, ή σε μοπυή εξισώσεων το σύστημα :,, Αλγόρικμοσ m(). Διαβάηουμε τθν τιμι του ( θ διάςταςθ του Πίνακα Α ).. Δίνουμε τιμζσ ςτα ςτοιχεία των πινάκων Α και ( μόνο για τα μθ μθδενικά ςτοιχεία ). 3. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία των πινάκων A και. 4. Καλοφμε τθ ςνάρτθςθ tdg()για τον Τπολογιςμό των,... 5. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία τoυ. Αλγόρικμοσ fucto tdg(). Για τισ τιμζσ του,,,, : Τπολογίηουμε το., Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα 5
ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.4 Να γίνει πρόγραμμα, το οποίο με τθ χριςθ ςυνάρτθςθσ να επιλφει το Γραμμικό Κάτω Σριγωνικό Σφςτθμα : A ή το σύστημα : ή σε μοπυή εξισώσεων το σύστημα : Αλγόρικμοσ m(). Διαβάηουμε τθν τιμι του ( θ διάςταςθ του Πίνακα Α ).. Δίνουμε τιμζσ ςτα ςτοιχεία των πινάκων Α και ( μόνο για τα μθ μθδενικά ςτοιχεία ). 3. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία των πινάκων A και. 4. Καλοφμε τθ ςνάρτθςθ kto_trg()για τον Τπολογιςμό των,... 5. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία τoυ. Αλγόρικμοσ fucto kto_trg() ) Λφνουμε το ςφςτθμα ωσ προσ το ) Για τισ τιμζσ του,,3,,., ) Θζτουμε sum = ) Τπολογίηουμε το άκροιςμα sum,kk. k sum c) Τπολογίηουμε το, Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα 6
ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.5 Να γίνει πρόγραμμα, το οποίο με τθ χριςθ ςυνάρτθςθσ να επιλφει το Γραμμικό Άνω Σριγωνικό Σφςτθμα : A ι το ςφςτθμα : ι ςε μορφι εξιςώςεων το ςφςτθμα : 3 3.... Αλγόρικμοσ m(). Διαβάηουμε τθν τιμι του ( θ διάςταςθ του Πίνακα Α ).. Δίνουμε τιμζσ ςτα ςτοιχεία των πινάκων Α και ( μόνο για τα μθ μθδενικά ςτοιχεία ). 3. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία των πινάκων A και. 4. Καλοφμε τθ ςυνάρτθςθ w_trg()για τον Τπολογιςμό των,... 5. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία τoυ. Αλγόρικμοσ fucto w_trg() ) Λφνουμε το ςφςτθμα ωσ προσ το. ) Για τισ τιμζσ του,,,, ) Θζτουμε sum =. ) Τπολογίηουμε το άκροιςμα sum,kk. sum c) Τπολογίηουμε το,, k Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα 7
ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.6 Να γίνει πρόγραμμα, το οποίο με τθν κλιςθ τθσ ςυνάρτθςθσ guss() μετατρζπει ζνα πλιρεσ Γραμμικό Σφςτθμα A σε Άνω Σριγωνικό και το επιλφει με τθν κλιςθ τθσ ςυνάρτθςθσ w_trg(). Το Γραμμικό Σφςτθμα κα ζχει τθ μορφι : ι ςε μορφι εξιςώςεων..... Αλγόρικμοσ m(). Διαβάηουμε τθν τιμι του ( θ διάςταςθ του Πίνακα Α ).. Δίνουμε τιμζσ ςτα ςτοιχεία των πινάκων Α και. 3. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία των πινάκων A και. 4. Καλοφμε τθ ςυνάρτθςθ guss(,, )για τθ μετατροπι του ςυςτιματοσ ςε άνω τριγωνικό. 5. Καλοφμε τθ ςυνάρτθςθ w_trg()για τον Τπολογιςμό των,... 6. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία τoυ. Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα 8
ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.7 Να γίνει πρόγραμμα, το οποίο με τθν κλιςθ τθσ ςυνάρτθςθσ guss_odhghsh() μετατρζπει ζνα πλιρεσ Γραμμικό Σφςτθμα A σε Άνω Σριγωνικό και το επιλφει με τθν κλιςθ τθσ ςυνάρτθςθσ w_trg(). Αλγόρικμοσ m(). Διαβάηουμε τθν τιμι του ( θ διάςταςθ του Πίνακα Α ).. Δίνουμε τιμζσ ςτα ςτοιχεία των πινάκων Α και. 3. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία των πινάκων A και. 4. Καλοφμε τθ ςυνάρτθςθ guss_odhghsh(,, )για τθ μετατροπι του ςυςτιματοσ ςε άνω τριγωνικό. 5. Καλοφμε τθ ςυνάρτθςθ w_trg()για τον Τπολογιςμό των,... 6. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία τoυ. Αλγόρικμοσ fucto guss_odhghsh() Αντί να κάνουμε ζλεγχο για μθδενικό διαγώνιο ςτοιχείο, ) Για κάκε ςτιλθ J I. Βρίςκουμε τθ γραμμι m_thes που περιζχει το μζγιςτο κατ απόλυτθ τιμι ςτοιχείο του Πίνακα Α ςτθ ςτιλθ II. Ανταλάςςουμε, αν χρειαςτεί, τα ςτοιχεία των γραμμών j και m_thes Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα 9
ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.8 Να γίνει πρόγραμμα, το οποίο με τθν κλιςθ τθσ ςυνάρτθςθσ guss_jord() μετατρζπει ζνα πλιρεσ Γραμμικό Σφςτθμα A σε Διαγώνιο και το επιλφει με τθν κλιςθ τθσ ςυνάρτθςθσ dg(). Αλγόρικμοσ m(). Διαβάηουμε τθν τιμι του ( θ διάςταςθ του Πίνακα Α ).. Δίνουμε τιμζσ ςτα ςτοιχεία των πινάκων Α και. 3. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία των πινάκων A και. 4. Καλοφμε τθ ςυνάρτθςθ guss_jord(,, )για τθ μετατροπι του ςυςτιματοσ ςε Διαγώνιο. 5. Καλοφμε τθ ςυνάρτθςθ dg()για τον Τπολογιςμό των,... 6. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία τoυ. Αλγόρικμοσ fucto guss_jord() Στθ μζκοδο Guss κάνουμε απαλοιφι αγνώςτων για κάκε ςτιλθ ςτισ γραμμζσ =j+.., ενώ ςτθ μζκοδο Guss-Jord κάνουμε απαλοιφι για κάκε ςτιλθ ςτισ γραμμζσ =..j- και =j+... Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα
ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.9 Να γίνει πρόγραμμα, το οποίο με τθν κλιςθ τθσ ςυνάρτθςθσ guss_sedel() επιλφει ζνα πλιρεσ Γραμμικό Σφςτθμα A ελζγχοντασ αν ο Πίνακασ των ςυντελεςτών των αγνώςτων ζχει Διαγώνια Υπεροχι ( Σε κάκε Γραμμι ι Στιλθ του Πίνακα Α το Διαγώνιο ςτοιχείο να είναι κατ απόλυτθ τιμι μεγαλφτερο από το άκροιςμα των απολφτων τιμών των υπολοίπων ςτοιχείων τθσ γραμμισ ι τθσ ςτιλθσ ). Ο ζλεγχοσ τερματιςμοφ κα γίνεται με τθ χριςθ τθσ ςυνάρτθςθσ orm(), θ οποία κα υπολογίηει το άκροιςμα των απολφτων τιμών τθσ διαφοράσ του κάκε ςτοιχείου του πίνακα και του old, ol d. Αλγόρικμοσ m(). Διαβάηουμε τθν τιμι του ( θ διάςταςθ του Πίνακα Α ).. Δίνουμε τιμζσ ςτα ςτοιχεία των πινάκων Α και. 3. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία των πινάκων A και. 4. Καλοφμε τθ oole ςυνάρτθςθ yperoh(, ), θ οποία κα επιςτρζφει τθν τιμι true ι flse, ανάλογα με το αν υπάρχει διαγώνια υπεροχι ι όχι. 5. Στθν περίπτωςθ που υπάρχει διαγώνια υπεροχι, καλοφμε τθ ςυνάρτθςθ guss_sedel() για τον Τπολογιςμό των,... 6. Eμφανίηουμε ςτθν οκόνθ τα ςτοιχεία τoυ. 7. Στθν περίπτωςθ που δεν υπάρχει διαγώνια υπεροχι, εμφανίηουμε αντίςτοιχο μινυμα. Αλγόρικμοσ fucto guss_sedel(). Θζτουμε αρχικζσ τιμζσ ςτα ςτοιχεία των πινάκων και old. Για όςο το ςφάλμα ol d είναι μεγαλφτερο του -5 ) Aποκθκεφουμε τισ προθγοφμενεσ τιμζσ του πινακα ςτον πίνακα old ) Για τισ τιμζσ του,,,, : ) Θζτουμε sum =. ) Τπολογίηουμε το άκροιςμα sum ) Aφαιροφμε απ' το sum το sum v) Τπολογίηουμε το νζο Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα j j j
Αλγόρικμοσ fucto ool yperoh(, ). Θζτουμε yp_g = true. Θζτουμε = 3. Για Όςο ( ) και ( yp_g = true ): ) Θζτουμε sum = ) Τπολογίηουμε το άκροιςμα sum,j. c) Aφαιροφμε απ' το sum το d) Aν sum,,. j, κζτουμε ςτο yp_g τθν τιμι flse e) Αυξάνουμε τθν τιμι του μετρθτι κατά 4. Αν yp_g = true, επιςτρζφουμε τθν τιμι του yp_g 5. Αν yp_g = flse, Ελζγχουμε αν για τον πίνακα Α υπάρχει Διαγώνια Τπεροχι Κατά Στιλεσ. 6. Θζτουμε yp_s = true 7. Θζτουμε j = 8. Για Όςο ( j ) και ( yp_s = true ): ) Θζτουμε sum = ) Τπολογίηουμε το άκροιςμα sum,j. c) Aφαιροφμε απ' το sum το d) Aν sum, j j, j. j, κζτουμε ςτο yp_s τθν τιμι flse e) Αυξάνουμε τθν τιμι του μετρθτι j κατά 9. Επιςτρζφουμε τθν τιμι του yp_s 4.5 υναρτιςεισ τφπου oole Η ςυνάρτθςθ, όπωσ και οι μεταβλθτζσ δθλώνονται με τθ λζξθ ool : ool yperoh(t, doule [][m+]); ool yp_g, yp_s; Στον ζλεγχο μποροφμε να χρθςιμοποιιςουμε τθ μεταβλθτι χωρίσ τθν τιμι τθσ. Π.χ. f (yp_g) αντί του f (yp_g == true ). Αρικμθτικι Ανάλυςθ Εργαςτθριακζσ Αςκιςεισ 4.-4.9 6-7 Σελίδα