ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ ΕΡΓΑΣΤΗΡΙΟ Mathematica



Σχετικά έγγραφα
ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟ ΟΣ:

Συστήµατα Μη-Γραµµικών Εξισώσεων Μέθοδος Newton-Raphson

Εργασία στην Αριθµητική Ανάλυση

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΣΕΙΡΕΣ TAYLOR. Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων. Πολυώνυµο είναι κάθε συνάρτηση της µορφής:

Πρώτη επαφή με το μαθηματικό πακέτο Mathematica

4.1 Πράξεις με Πολυωνυμικές Εκφράσεις... 66

Επίλυση Γραµµικών Συστηµάτων

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΛΥΣΕΙΣ 6 ης ΕΡΓΑΣΙΑΣ - ΠΛΗ 12,

Αριθµητική Παραγώγιση και Ολοκλήρωση

Εισαγωγή στο Πρόγραμμα Maxima

Αριθµητική Ολοκλήρωση

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

β) Με τη βοήθεια του αποτελέσµατος της απαλοιφής υπολογίστε την ορίζουσα του πίνακα του συστήµατος. x x = x

ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΙΚΗΣ ΑΝΑΛΥΣΗΣ Ι ( )

ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, , 3 ο ΕΞΑΜΗΝΟ ΑΠΑΝΤΗΣΕΙΣ ΕΡΓΑΣΙΑΣ #1: ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟ ΙΑΣΤΟΛΗΣ ΚΑΙ ΡΙΖΕΣ ΕΞΙΣΩΣΕΩΝ ΕΠΙΜΕΛΕΙΑ: Σ.

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Εισαγωγή στην Αριθμητική Ανάλυση

ΕΛΛΗΝΙΚΗ ΗΜΟΚΡΑΤΙΑ ΕΛΛΗΝΙΚΟ ΑΝΟΙKΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑΤΙΚΑ Ι ΕΡΓΑΣΙΑ 6 ΛΥΣΕΙΣ

A Τελική Εξέταση του μαθήματος «Αριθμητική Ανάλυση» Σχολή Θετικών Επιστημών, Τμήμα Μαθηματικών, Πανεπιστήμιο Αιγαίου

Επιστηµονικός Υπολογισµός Ι - Πρώτη εργαστηριακή άσκηση

ΜΑΘΗΜΑΤΙΚΩΝ ΔΑΣΟΛΟΓΙΑΣ

Οι πράξεις που χρειάζονται για την επίλυση αυτών των προβληµάτων (αφού είναι απλές) µπορούν να τεθούν σε µια σειρά και πάρουν µια αλγοριθµική µορφή.

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ «ΠΛΗΡΟΦΟΡΙΚΗ» ΜΑΘΗΜΑΤΙΚΑ Ι (ΘΕ ΠΛΗ 12) ΕΡΓΑΣΙΑ 4

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

15 εκεµβρίου εκεµβρίου / 64

Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ: ΠΛΗΡΟΦΟΡΙΚΗ ΘΕ: ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΤΗΝ ΠΛΗΡΟΦΟΡΙΚΉ Ι (ΠΛΗ 12) ΛΥΣΕΙΣ ΕΡΓΑΣΙΑΣ 3

Αριθµητική Ανάλυση 1 εκεµβρίου / 43

1. Εισαγωγή στο Sage.

Κεφάλαιο 6 Παράγωγος

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 5ο: Εντολές Επανάληψης

Αριθμητική Ανάλυση & Εφαρμογές

5.1 Συναρτήσεις δύο ή περισσοτέρων µεταβλητών

Εισαγωγή στο Mathematica

4. Σειρές Τέηλορ και Μακλώριν

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Ακρότατα υπό συνθήκη και οι πολλαπλασιαστές του Lagrange

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Η ΤΕΧΝΗ ΤΟΥ ΙΑΒΑΣΜΑΤΟΣ ΜΕΤΑΞΥ ΤΩΝ ΑΡΙΘΜΩΝ (ΠΑΡΕΜΒΟΛΗ ΚΑΙ ΠΡΟΣΕΓΓΙΣΗ)

Κλασικη ιαφορικη Γεωµετρια

Εισαγωγή στην Ανάλυση και Προσοµοίωση Δυναµικών Συστηµάτων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Αριθµητική Ανάλυση. ιδάσκοντες: Τµήµα Α ( Αρτιοι) : Καθηγητής Ν. Μισυρλής, Τµήµα Β (Περιττοί) : Επίκ. Καθηγητής Φ.Τζαφέρης. 25 Μαΐου 2010 ΕΚΠΑ

for for for for( . */

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΜΑΘΗΜΑΤΙΚΩΝ Ι Ι ΑΣΚΩΝ : ρ. Χρήστος Βοζίκης

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

ΘΕΜΑ 2ο. Άσκηση εφαρµογής της µεθόδου Newton Raphson


A2. ΠΑΡΑΓΩΓΟΣ-ΚΛΙΣΗ-ΜΟΝΟΤΟΝΙΑ

ΓΡΑΠΤΗΣ ΕΡΓΑΣΙΑΣ. ΛΥΣΕΙΣ 3 ης. Άσκηση 1. , z1. Παρατηρούµε ότι: z0 = z5. = + ) και. β) 1 ος τρόπος: Έστω z = x+ iy, x, = x + y.

ΤΟΜΟΣ Α : Συμβολικός Προγραμματισμός

Γραµµική Αλγεβρα. Ενότητα 1 : Εισαγωγή στη Γραµµική Αλγεβρα. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής

Υπολογισμός αθροισμάτων

Μαθηµατικό Παράρτηµα 2 Εξισώσεις Διαφορών

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

< 1 για κάθε k N, τότε η σειρά a k συγκλίνει. +, τότε η η σειρά a k αποκλίνει.

Συναρτήσεις - Όρια- Παράγωγοι- Ολοκληρώματα Ακολουθίες-Σειρές

5.1 Ιδιοτιµές και Ιδιοδιανύσµατα

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

a = 10; a = k; int a,b,c; a = b = c = 10;

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Συνοπτικές Ενδεικτικές Λύσεις

Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν

Γ. Ν. Π Α Π Α Δ Α Κ Η Σ Μ Α Θ Η Μ Α Τ Ι Κ Ο Σ ( M S C ) ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΛΥΜΕΝΕΣ ΑΣΚΗΣΕΙΣ. ΠΡΟΓΡΑΜΜΑ: Σπουδές στις Φυσικές Επιστήμες

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

x 2 = b 1 2x 1 + 4x 2 + x 3 = b 2. x 1 + 2x 2 + x 3 = b 3

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών

Ηλεκτρονικοί Υπολογιστές ΙΙ : Εισαγωγή στην Αριθµητική Ανάλυση

ΜΑΣ 371: Αριθμητική Ανάλυση ΙI ΑΣΚΗΣΕΙΣ. 1. Να βρεθεί το πολυώνυμο Lagrange για τα σημεία (0, 1), (1, 2) και (4, 2).

επιµέλεια Θοδωρής Πιερράτος

Αριθµητική Γραµµική ΑλγεβραΚεφάλαιο 4. Αριθµητικός Υπολογισµός Ιδιοτιµών 2 Απριλίου και2015 Ιδιοδιανυσµάτων 1 / 50

ΥΠΟΛΟΓΙΣΜΟΣ ΑΝΑΠΤΥΓΜΑΤΟΣ FOURIER ΜΕ ΑΡΙΘΜΗΤΙΚΟ ΤΡΟΠΟ

Κεφάλαιο 7 Βασικά Θεωρήµατα του ιαφορικού Λογισµού

Κεφάλαιο 9 Ιδιοτιµές και Ιδιοδιανύσµατα

Γραµµική Αλγεβρα. Ενότητα 2 : Επίλυση Γραµµικών Εξισώσεων. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής

Βασικά στοιχεία του MATLAB

Σχολικός Σύµβουλος ΠΕ03

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. 5 Μαίου 2012

ΚΕΦΑΛΑΙΟ 3 ΑΡΙΘΜΗΤΙΚΗ ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. nn n n

Μεθοδολογίες παρεµβολής σε DTM.

QR είναι ˆx τότε x ˆx. 10 ρ. Ποιά είναι η τιµή του ρ και γιατί (σύντοµη εξήγηση). P = [X. 0, X,..., X. (n 1), X. n] a(n + 1 : 1 : 1)

Κεφάλαιο 3 ΠΑΡΑΓΩΓΟΣ. 3.1 Η έννοια της παραγώγου. y = f(x) f(x 0 ), = f(x 0 + x) f(x 0 )

Εισαγωγή στην Ανάλυση και Προσοµοίωση Δυναµικών Συστηµάτων

Ομάδα Γ. Ο υπολογιστής ως επιστημονικό εργαλείο

Εισαγωγή στον Προγραµµατισµό. Ανάλυση (ή Επιστηµονικοί8 Υπολογισµοί)

Transcript:

ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ ΕΡΓΑΣΤΗΡΙΟ Mathematica ιδάσκων: Λέκτορας Ε Κοφίδης Σ αυτά τα εργαστηριακά µαθήµατα θα κάνουµε µια εισαγωγή στη χρήση του λογισµικού πακέτου Mathematica, µε έµφαση σε προβλήµατα Αριθµητικής Ανάλυσης Θα πρέπει από τώρα να τονίσουµε ότι οι χρονικοί περιορισµοί µας επιτρέπουν να εξετάσουµε µόνο ένα µικρό µέρος του πακέτου, δίνοντας έµφαση σε βασικούς χειρισµούς και έννοιες Παρακάτω δίνεται µια σύντοµη αλλά επαρκής βιβλιογραφική λίστα για περισσότερο διάβασµα Εκτός από βιβλία, περιλαµβάνει διαθέσιµες on-line σηµειώσεις και συνδέσµους (links) όπου µπορεί κανείς να βρει περισσότερο υλικό Βιβλιογραφία Σ Τραχανάς, Mathematica και Εφαρµογές, Πανεπιστηµιακές Εκδόσεις Κρήτης, 00 Γ Σ Παπαγεωργίου, Χ Γ Τσίτουρας, και Ι Θ Φαµέλης, Σύγχρονο Μαθηµατικό Λογισµικό: Matlab Mathematica, Εκδόσεις Συµεών, 004 3 E Don, Mathematica, Schaum s series, Εκδόσεις Κλειδάριθµος, 005 4 S Wolfram, The Mathematica Book, 5 th edition, Wolfram Media, 003 5 S Wolfram, Mathematica: A System for Doing Mathematics by Computer, nd edition, Addison-Wesley, 99 (διαθέσιµο στη βιβλιοθήκη) 6 Μ Μπούτσικας, Εισαγωγή στο Mathematica, http://wwwunipigr/faculty/mbouts/sim/intro_to_mathematicapdf 7 Mathematica: Εισαγωγή στη χρήση του πακέτου, http://wwwauebgr/users/mathpage/intromat/intro/intro_parthtml 8 Επίσηµη ιστοσελίδα του Mathematica: http://wwwwolframcom (περιλαµβάνει και κατάλογο σχετικών βιβλίων) Επίσης, το ο κεφάλαιο του βιβλίου που χρησιµοποιείται στο µάθηµα είναι µια (µάλλον πολύ σύντοµη) εισαγωγή στο Mathematica Ξεκίνηµα Αν και το Mathematica είναι στην πραγµατικότητα περιβάλλον προγραµµατισµού και περιλαµβάνει εντολές και συναρτήσεις, διαφέρει κατά πολύ από άλλα προγραµµατιστικά περιβάλλοντα που ίσως έχετε χρησιµοποιήσει µέχρι σήµερα (πχ αυτό της Borland C++) Πρώτα-πρώτα, λειτουργεί ως διερµηνέας εντολών (interpreter), που σηµαίνει ότι µπορείτε να δίνετε µια εντολή υπολογισµού και να παίρνετε άµεσα την απάντηση, χωρίς να χρειάζετε να γράψετε πρόγραµµα για το σκοπό αυτό Επίσης, είναι σε θέση να εκτελεί εύκολα και κοµψά και συµβολικούς (όχι µόνο αριθµητικούς) υπολογισµούς, πχ υπολογισµό ολοκληρωµάτων και παραγώγων, αναλυτική επίλυση αλγεβρικών και διαφορικών εξισώσεων, κά Άλλα τέτοια πακέτα είναι τα Maple, Matlab, κλπ Όµως καλύτερα να τα βλέπουµε στην πράξη Ξεκινήστε το Mathematica είτε από τη συντόµευση στην επιφάνεια εργασίας ή από την αντίστοιχη επιλογή στον κατάλογο προγραµµάτων στην Έναρξη (Start) Ανοίγει τότε ένα παράθυρο µε τίτλο Untitled- Αυτό είναι το λεγόµενο σηµειωµατάριό σας (notebook) Αποθηκεύστε το µε όνοµα FirstNb σε δικό Γ Σ Παπαγεωργίου και Χ Γ Τσίτουρας, Αριθµητική Ανάλυση µε Εφαρµογές σε Matlab και Mathematica, 3 η έκδοση, Εκδόσεις Συµεών, 004

σας φάκελο στην επιφάνεια εργασίας Γράψτε τώρα την παράσταση 57 * 43 και πατήστε Shift+Enter Ναι, Shift+Enter Στο Mathematica το απλό Enter αλλάζει γραµµή, δεν δίνει εντολή Παίρνετε σε λίγο το αποτέλεσµα στη µορφή: In[]:=57 * 43 Out[]=3706 Ας ζητήσουµε τώρα τον υπολογισµό της τιµής µιας συνάρτησης: In[]:=Sin[04] Out[]=038948 Παρατηρείστε ότι τα ονόµατα των συναρτήσεων αρχίζουν πάντα µε κεφαλαίο γράµµα και αντί των γνωστών µας παρενθέσεων χρησιµοποιούνται αγκύλες ([ ]) Οι In και Out είναι κι αυτές συναρτήσεις, µε ακέραια ορίσµατα Έτσι, το In[] είναι η είσοδος στον πρώτο υπολογισµό και το Out[] η έξοδος Το ίδιο για τα In[], Out[], κλπ οκιµάστε και µε άλλες συναρτήσεις Πχ In[3]:=Log[5] Out[3]=0405465 In[4]:=Cos[] Out[4]=Cos[] Το τελευταίο αποτέλεσµα φαίνεται περίεργο, αλλά έχει την εξήγησή του Όταν δίνουµε ακέραιο όρισµα (πχ ), τότε, αν δεν υπάρχει ακριβές αποτέλεσµα, το Mathematica απαντάει µε την πιο ακριβή έκφραση που µπορεί να δώσει Αν όµως δώσουµε 0 αντί του, τότε: In[5]:=Cos[0] Out[5]=-04647 Εναλλακτικά, µε χρήση της συνάρτησης N (Numeric): In[6]:=N[Cos[]] Out[6]=-04647 Η N[ ] υπολογίζει την αριθµητική (προσεγγιστική) τιµή µιας παράστασης Εξ ορισµού, η µηχανή χρησιµοποιεί 6 ψηφία: In[7]:=InputForm[%] Out[7]//InputForm= -0464683654744 Τι είναι αυτό το %; Για να µην ξαναγράφουµε προηγούµενα αποτελέσµατα, χρησιµοποιούµε τη συντοµογραφία % Έτσι, % είναι το πιο πρόσφατο Out, δηλαδή το Out[6] Αν θέλουµε να αναφερθούµε, πχ, στο Out[], γράφουµε % (ή σπανιότερα Out[]) Μπορούµε να µάθουµε ποιο εύρος αριθµών αναπαρίσταται στον υπολογιστή µας ως εξής: In[8]:=$MinMachineNumber 308 Out[8]= 507 0 In[9]:=$MaMachineNumber 308 Out[9]= 79769 0 καθώς και ποιος είναι ο µικρότερος θετικός αριθµός ε που µπορούµε να χειριστούµε: In[0]:=$MachineEpsilon 6 Out[0]= 045 0 Ουσιαστικά «µικρότερο ή ίσο του ε» σηµαίνει µηδέν: In[]:=+% Out[]=

Επιστρέφουµε για λίγο στη N[ ] Μπορούµε, µε τη βοήθειά της, να πάρουµε αποτέλεσµα σε όσα ψηφία επιθυµούµε, περισσότερα απ όσα µπορεί να µας διαθέσει η ακρίβεια της µηχανής (µε εσωτερική χρήση κατάλληλων αλγορίθµων) Για παράδειγµα, µε N[Pi,00] θα πάρετε το π µε 00 ψηφία οκιµάστε το! Υπολογίστε τις τιµές των παραστάσεων lnsin0! και 3 00 π Υπολογίστε το e µε 00 ψηφία (συνάρτηση Ep) 00 3 Βρείτε το σε συνεπτυγµένη µορφή (επιστηµονική γραφή) (δοκιµάστε µε τη συνάρτηση N) Ας δούµε και πιο περίπλοκες πράξεις, όπως η ολοκλήρωση και η παραγώγιση συναρτήσεων Για παράδειγµα, το π 0 sin d µπορεί να υπολογιστεί ως εξής: In[3]:=Integrate[(^)*Sin[],{,0,Pi}] Out[3]= 4π Σηµείωση: Οι οµάδες οµοειδών στοιχείων τοποθετούνται ανάµεσα σε άγκιστρα ({ }) επειδή αποτελούν λίστες Θα επιστρέψουµε αργότερα σ αυτές οκιµάστε και µε ένα αόριστο ολοκλήρωµα: In[4]:=Integrate[^3*Ep[-a*],] Out[4]= Η σταθερά ολοκλήρωσης δεν συµπεριλαµβάνεται στο αποτέλεσµα Απλά εννοείται Η συνάρτηση D κάνει παραγώγιση Το παρακάτω υπολογίζει την 3 η παράγωγο της ln : In[5]:=D[(^)*Log[],{,3}] Out[5]=/ Με παρόµοιο τρόπο, µε τη συνάρτηση Sum, µπορείτε να υπολογίσετε και αθροίσµατα Για παράδειγµα, το n= n : In[6]:=Sum[/n^,{n,,Infinity}] Out[6]= π / 6 Το Mathematica έχει µεγάλες δυνατότητες οπτικοποίησης αποτελεσµάτων Ας δούµε µόνο µερικές απλές γραφικές παραστάσεις: In[7]:=Plot[(Sin[])^,{,0,4Pi}] Out[7]=-Graphics- Αν έχουµε περισσότερες από µια συναρτήσεις στο ίδιο γράφηµα, µπορούµε να τις διακρίνουµε δίνοντάς τους διαφορετικά χρώµατα Πχ In[8]:=Plot[{Ep[],},{,0,},PlotStyle->{{RGBColor[,0,0]},{RGBColor[0,,0]}}] Out[8]=-Graphics- Παρατηρείστε ότι, όπως αναφέραµε και πιο πάνω, το Mathematica προσπαθεί να δώσει το ακριβέστερο αποτέλεσµα που µπορεί Έτσι, εδώ δεν απαντά µε κάποια αριθµητική τιµή, αλλά µε την ακριβή έκφραση 4π 3

Περισσότερα για µια συνάρτηση όπως η Plot µπορούµε να µάθουµε από την ενσωµατωµένη βοήθεια (Help) Επιλογές για την εµφάνιση ενός γραφήµατος θα βρείτε µε Options[Plot] Για τρισδιάστατα γραφήµατα, χρησιµοποιούµε την Plot3D: In[8]:=Plot3D[^-y^, {,-5,5}, {y,-5,5},aeslabel->{, y, ^-y^ }] Out[8]=-Graphics- 0 3 a Υπολογίστε το ολοκλήρωµα e d Καταλαβαίνετε το αποτέλεσµα; Υπολογίστε το αόριστο ολοκλήρωµα cos kd 3 Κάντε τη γραφική παράσταση της συνάρτησης f ( ) = e στο διάστηµα [-3,3] π 4 Βρείτε την η και τη η παράγωγο της ln και παραστήστε τις γραφικά στο ίδιο γράφηµα Προσπαθήστε να προσθέσετε και ετικέτες στους άξονες (πχ, f()) ( + y 5 Παραστήστε γραφικά τη συνάρτηση e ) για στους άξονες (και τίτλο στο γράφηµα) i 6 Βρείτε τα αθροίσµατα,, N n N n= n= n i=0 a, y Προσθέστε ετικέτες 7 Με τη συνάρτηση Limit µπορείτε να βρείτε όριο συνάρτησης ή ακολουθίας Για παράδειγµα, το lim βρίσκεται ως Limit[/,->Infinity] οκιµάστε µε sin το lim 0 Συναρτήσεις οριζόµενες από το χρήστη Αντί να γράφουµε κάθε φορά τον τύπο µιας συνάρτησης, µπορούµε να της δώσουµε όνοµα και να αναφερόµαστε σ αυτή µε το όνοµά της Για παράδειγµα: In[4]:=f[_]=^*Log[] Out[4]= Log[ ] Το σύµβολο υπογράµµισης (underscore) _ είναι απαραίτητο στο αριστερό µέρος του ορισµού µιας συνάρτησης Μόνο έτσι µπορούµε στη συνέχεια να δώσουµε τιµή στο : In[5]:=f[0] Out[5]=7759 ή In[6]:=f[^(/)] Out[6]= Log [ ] Μπορούµε να κάνουµε αντικατάσταση του και ως εξής: In[5]:= f[]/->0 Out[5]= In[6]:=f[]/->^(/) Out[6]= Στο εξής µπορούµε να χρησιµοποιούµε την έκφραση f[ ] όπως θα κάναµε αν γράφαµε µαθηµατικούς τύπους στο χαρτί Ένα χαρακτηριστικό παράδειγµα αυτού του γεγονότος είναι το εξής: In[5]:=f [] Out[5]= + Log[ ] Είναι αυτό που φαντάζεστε Η f [] είναι η η παράγωγος της f οκιµάστε να υπολογίσετε µε ανάλογο τρόπο τη η παράγωγο και συγκρίνετε µε το αποτέλεσµα της συνάρτησης D 4

3 Ορίστε τη συνάρτηση f ( ) = και κάντε τη γραφική της παράσταση στο διάστηµα [,] Έχει ρίζες σ αυτό το διάστηµα; Αν ναι, πόσες; Ορίστε τη συνάρτηση g ( ) = f ( ) d και παραγωγίστε την για να επαληθεύσετε την ορθότητα του αποτελέσµατος 3 Ορίζοντας τις συντεταγµένες, y των σηµείων µιας καµπύλης ως συναρτήσεις µιας παραµέτρου t, µπορούµε να σχεδιάσουµε την καµπύλη, µε τη συνάρτηση ParametricPlot Σχεδιάστε την καµπύλη που ορίζεται παραµετρικά ως ( t) = cos( t) cos(00t)sin( t), y( t) = sin( t) sin(00t), για 0 t π 4 Με ανάλογο τρόπο, σχεδιάστε τον κύκλο µε κέντρο το 0 και ακτίνα (Για να φαίνεται ο κύκλος σαν κύκλος, θα χρειαστεί να αλλάξετε κατάλληλα και την παράµετρο AspectRatio της ParametricPlot) 3 Λίστες Λίστα είναι µια διατεταγµένη συλλογή οµοειδών αντικειµένων Παραδείγµατα λιστών που έχουµε ήδη συναντήσει είναι τα {, 0, 4Pi}, {n,, Infinity} Παρακάτω δίνονται άλλα δύο παραδείγµατα: In[30]:= S={,,3,4,5,6,7,8,9,0} Out[30]={,,3,4,5,6,7,8,9,0} In[3]:= fs={f[],f[],f[3],f[4],f[5],f[6],f[7],f[8],f[9],f[0]} Out[3]={-,5,3,59, } Τα οποία δείχουν ότι θα ταλαιπωρηθούµε αρκετά αν θέλουµε να υπολογίσουµε πχ τις τιµές της f στα,,, 00 Κι όµως ένας τέτοιος υπολογισµός είναι πολύ εύκολος στο Mathematica Να δύο τρόποι για να εκτελεστεί: In[3]:= S=Range[00] Out[3]= {,,3,,00} In[33]:= f[s] Out[33]= {-,5,3,59, } και In[34]:=Table[f[n],{n,,00}] Out[34]= {-,5,3,59, } 3 ιανύσµατα και Πίνακες Μια πολύ ενδιαφέρουσα χρήση των λιστών είναι στην κατασκευή διανυσµάτων και πινάκων Ένα διάνυσµα είναι µια λίστα: In[35]:= b={3,,-} Out[35]= {3,,-} Ενώ ένας πίνακας µπορεί να ειδωθεί ως µια λίστα από λίστες (µία για κάθε γραµµή του): In[36]:= A={{,, 0},{,, },{0,, }} Out[36]= {{,, 0},{,, },{0,, }} Για να δούµε τον πίνακα στη µορφή που έχουµε συνηθίσει, µπορούµε να χρησιµοποιήσουµε τη συνάρτηση MatriForm: In[37]:= MatriForm[A] Out[37]//MatriForm= Μπορούµε να αναφερθούµε σε µέρος µιας λίστας Πχ το b[[]] είναι το ο στοιχείο του διανύσµατος b ενώ το A[[,3]] είναι το στοιχείο (,3) του πίνακα Α Οι βασικές πράξεις σε πίνακες είναι διαθέσιµες σε έτοιµες συναρτήσεις Mathematica Πχ: 5

Ab Πολλαπλασιασµός Inverse[A] Αντίστροφος Transpose[A] Ανάστροφος Det[A] Ορίζουσα καθώς επίσης και οι διαδικασίες επίλυσης γραµµικών συστηµάτων εξισώσεων, υπολογισµού ιδιοδιανυσµάτων και ιδιοτιµών, κά: In[38]:= =LinearSolve[A,b] Out[38]= {,,-} In[39]:= lambda=eigenvalues[a] Out[39]= {,, + } In[40]:= U=Eigenvectors[A] Out[40]= {{,0,},{,,},{,,}} Γράφοντας?Eigenvectors για παράδειγµα µπορούµε να ζητήσουµε πληροφορίες για τον τρόπο χρήσης της Eigenvectors και ερµηνείας του αποτελέσµατός της Εναλλακτικά, και κυρίως σε περίπτωση που δεν θυµόµαστε καν το όνοµα της συνάρτησης, µπορούµε να ζητήσουµε βοήθεια από το menu Help Ορίστε τον πίνακα A = Υπολογίστε την ορίζουσά του κι αν αυτή είναι µη-µηδενική, βρείτε και τον αντίστροφο πίνακα Επαληθεύστε το αποτέλεσµα υπολογίζοντας το γινόµενο AA Λύστε το σύστηµα εξισώσεων A=b µε b = [ 7 8 9] T Ελέγξτε την ορθότητα του αποτελέσµατος 3 Βρείτε τις ιδιοτιµές και αντίστοιχα ιδιοδιανύσµατα του Α και επαληθεύστε την ορθότητα των αποτελεσµάτων 4 Από τα παραπάνω, και µε τη βοήθεια των συναρτήσεων Abs και Ma, βρείτε τη φασµατική ακτίνα του A 5 Όπως είπαµε και νωρίτερα, το Mathematica δίνει και τη δυνατότητα συµβολικών a b υπολογισµών Βρείτε πχ την ορίζουσα και τον αντίστροφο του πίνακα B = c d 4 Παρεµβολή µε Πολυώνυµα Πριν περάσουµε να δούµε µερικές βασικές προγραµµατιστικές τεχνικές (όπως blocks και επαναλήψεις), ας κάνουµε µια (ελπίζω ευχάριστη) παρένθεση υπολογίζοντας πολύ εύκολα το πολυώνυµο βαθµού k που παρεµβάλλι µια συνάρτηση f () σε δοσµένα σηµεία, 0,, K, k Αυτό βρίσκεται µε τη συνάρτηση InterpolatingPolynomial ως εξής: P[_]=InterpolatingPolynomial[{{0,f0},{,f}, {k,fk}},] η οποία δίνει το πολυώνυµο στη µορφή Newton Ας δοκιµάσουµε µε τη συνάρτηση f ( ) = ( + ) 4 Θα την παρεµβάλλουµε στα σηµεία 0, 05,, 5, Το πολυώνυµο θα είναι εποµένως 4 ου βαθµού In[5]:= data=table[{z,f[z]},{z,0,,05}] Out[5]= {{0,/6}, } In[5]:= P[_]=InterpolatingPolynomial[data,] Out[5]= 6

Για να εκφράσουµε το πολυώνυµο στη γνώριµή µας µορφή, αρκεί να εφαρµόσουµε τη συνάρτηση Epand (δηλ ανάπτυξη): In[53]:= Epand[%] Out[53]= Ας βρούµε και το πολυώνυµο Taylor 4 ου βαθµού που προσεγγίζει τη συνάρτηση γύρω από κάποιο από αυτά τα σηµεία, έστω το 5: In[54]:= T[_]=Series[f[],{,5,4}] Out[54]= In[55]:= T[_]=Normal[%] Out[55]= Η συνάρτηση Series βρίσκει το ανάπτυγµα Taylor δοσµένου βαθµού µιας συνάρτησης γύρω από ένα σηµείο, ενώ συµπεριλαµβάνει κι έναν όρο που παριστάνει το υπόλοιπο Αυτός µπορεί να παραλειφθεί (δηλαδή να αποκοπεί η σειρά) µε τη Normal Τέλος, µια γραφική παράσταση των τριών συναρτήσεων (f, P, T) στο ίδιο γράφηµα θα µας δείξει πόσο καλές είναι οι δύο προσεγγίσεις που βρήκαµε Βρείτε το παρεµβολικό πολυώνυµο για την f ( ) = / στα σηµεία,, 3, 4 Παραστήστε γραφικά (στο ίδιο γράφηµα) τη συνάρτηση και το πολυώνυµο, στο διάστηµα [,4] Κάντε, σε άλλο γράφηµα, και τη γραφική παράσταση του σφάλµατος E( ) = f ( ) P( ) Υπολογίστε το πολυώνυµο που παρεµβάλλει την παραπάνω συνάρτηση και στο 5 Συγκρίνετε τις µορφές Newton των δύο παρεµβολικών πολυωνύµων Παραστήστε στο ίδο γράφηµα τη συνάρτηση και τα δύο πολυώνυµα, στο [,5] Συγκρίνετε γραφικά και τις αντίστοιχες συναρτήσεις σφάλµατος 3 Βρείτε το παρεµβολικό πολυώνυµο για τη συνάρτηση f ( ) = ln στα σηµεία, 07, και Προσεγγίστε την τιµή της συνάρτησης στο 05 από την αντίστοιχη τιµή του πολυωνύµου Ποιο είναι το σφάλµα; 4 Για την παραπάνω συνάρτηση, κατασκευάστε τα πολυώνυµα Taylor 3 ου, 5 ου, και 0 ου βαθµού, γύρω από το Σχεδιάστε τα γραφήµατά τους (µε διαφορετικά χρώµατα) στο ίδιο σύστηµα αξόνων, για 05 5 5 Προγραµµατισµός στο Mathematica Εκτός από διερµηνέας εντολών υπολογισµού, το Mathematica είναι και µια γλώσσα προγραµµατισµού και δεν υστερεί σε βασικές δοµές ελέγχου που συναντούµε και σε άλλες γλώσσες όπως πχ η C 5 Επανάληψη Ας ξεκινήσουµε µε τις εντολές συναρτήσεις επανάληψης, µε πρώτη τη For Συντάσσεται ως εξής: For[start, test, increment, body] και λειτουργεί όπως η αντίστοιχη κατασκευή της C: for (start; test; increment) body Να ένα απλό παράδειγµα χρήσης της For: Εµφάνιση στην οθόνη των ακέραιων αριθµών από 0 έως και 9 (Παρατηρείστε ότι υπάρχει κι εδώ ο γνωστός µας από τη C τελεστής µοναδιαίας αύξησης, ++): 7

In[65]:= For[i=0, i < 0, i++, Print[i]] 0 9 Όταν γνωρίζουµε εκ των προτέρων πόσες επαναλήψεις θα πρέπει να γίνουν, πιο εύχρηστη είναι η Do: Do[epr, {i, imin, ima}], η οποία υπολογίζει την έκφραση epr ima-imin+ φορές, θέτοντας τη µεταβλητή i αρχικά σε imin και αυξάνοντάς την κατά ένα ώσπου να πάρει την τιµή ima Το παραπάνω παράδειγµα θα υλοποιούνταν µε Do ως εξής: In[66]:= Do[Print[i], {i, 0, 9}] Και, φυσικά, δεν λείπει η While, της οποίας η λειτουργία είναι εντελώς ανάλογη µ εκείνης της C Έτσι, η While[test, body] αντιστοιχεί στην κατασκευή C: while (test) body Πολύ εύκολα µπορεί κανείς να δει πώς γίνεται το παραπάνω παράδειγµα µε τη βοήθεια της While: In[67]:= i = 0; While[i < 0, Print[i]; i++] Έχει ενδιαφέρον να δούµε τις παραπάνω εντολές στα πλαίσια του προβλήµατος εύρεσης ρίζας µιας (µη-γραµµικής) συνάρτησης, µε τη γενική µέθοδο σταθερού σηµείου και ειδικότερα µε τη µέθοδο Newton-Raphson Ας πάρουµε για παράδειγµα την εξίσωση f ( ) = e = 0 στο διάστηµα [,] Μπορεί να επαληθευτεί, πχ µέσω γραφικής παράστασης, ότι υπάρχει ακριβώς µία ρίζα στο διάστηµα αυτό Επίσης, είναι σχετικά εύκολο να δει κανείς ότι η συνάρτηση g ( ) = ln( + ) είναι τέτοια ώστε η δοσµένη εξίσωση f ( ) = 0 να ισοδυναµεί µε την = g() και να έχει µοναδικό σταθερό σηµείο στο [,] Εποµένως, η επαναληπτική διαδικασία n = g( n ), n =,,K θα συγκλίνει στην αναζητούµενη ρίζα, για οποιοδήποτε [ ] 0, Με τη βοήθεια της Do, θα µπορούσαµε να υλοποιήσουµε την παραπάνω διαδικασία, πχ για 30 επαναλήψεις και µε αρχική προσέγγιση 5, ως εξής: In[68]:= g[_]=log[+] Out[68]= Log[+] In[69]:= =5; Do[=g[];Print[], {30}] 3869 5643 5643 Αν επιθυµούµε να εισάγουµε κι έναν έλεγχο τερµατισµού, πχ προτιµώτερη η While: n n < 0 6, τότε είναι 8

In[70]:= =5; new=g[]; Print[new]; While[Abs[-new]>=0^(-6), =new;new=g[];print[new]] Η τελευταία τιµή του new είναι το Out[70] Έτσι, για να δούµε αν όντως είναι η ρίζα που αναζητούµε, µπορούµε να ζητήσουµε τον υπολογισµό της f σ αυτή: In[7]:= f[%] 6 Out[7]= 3985 0 Ας προσπαθήσουµε και τη µέθοδο Newton-Raphson: In[7]:= f[_]=ep[]-- Out[7]= In[73]:= fd[_]=f [] Out[73]= πρώτα µε τη Do: In[74]:= =5; Do[=-f[]/fd[], {5}] 3059 5906 5644 5643 5643 και κατόπιν µε τη While: In[75]:= =5; new=-f[]/fd[]; Print[new]; While[Abs[-new]>=0^(-6), =new;new=-f[]/fd[]; Print[new]] 3059 5906 5644 5643 5643 (Είναι φανερή η υπεροχή της µεθόδου Newton-Raphson σε ταχύτητα σύγκλισης) Αποθηκεύοντας την ακολουθία των διαφορών n n σε µια λίστα, µπορούµε στο τέλος να τις παραστήσουµε γραφικά, µε τη συνάρτηση ListPlot Έτσι, µπορούµε να έχουµε και µια εικόνα της σύγκλισης της µεθόδου: In[76]:= =5; new=-f[]/fd[]; Print[new]; err=abs[-new]; errors={err}; While[err>=0^(-6), =new;new=-f[]/fd[]; Print[new];err=Abs[-new]; errors=append[errors,err]]; ListPlot[errors] 05 0 005 Out[76]=-Graphics- 3 4 5 9

Η εντολή errors=append[errors,err] προσθέτει το στοιχείο err στη λίστα errors Επειδή οι διαφορές γρήγορα γίνονται πολύ µικρές, η γραφική τους αναπαράσταση θα γινόταν πιο ευανάγνωστη αν αντί των διαφορών παραστούσαµε γραφικά πχ τις ποσότητες log οκιµάστε το (µε τη συνάρτηση Log) 0 n n Με την on-line βοήθεια (Help) του Mathematica, δείτε πώς λειτουργούν και πώς χρησιµοποιούνται οι συναρτήσεις FiedPoint, FiedPointList, NestWhile, NestWhileList, και FindRoot Εφαρµόστε τις στην παραπάνω µη-γραµµική εξίσωση Συγκρίνετε τα αποτελέσµατά τους µε τα αποτελέσµατα που πήρατε παραπάνω 3 Βρείτε όλες τις λύσεις της εξίσωσης 5cos = 4, µε τη βοήθεια της συνάρτησης FindRoot 3 Χρησιµοποιείστε το πρόγραµµα που γράψατε παραπάνω για τη µέθοδο Newton- 3 Raphson για να βρείτε τη ρίζα του πολυωνύµου f ( ) = + 3 κοντά στο -9 Σταµατήστε την επανάληψη όταν η σχετική διαφορά n n γίνει µικρότερη του 0 4 Παραστήστε γραφικά την ακολουθία των σχετικών διαφορών Για επίλυση αλγεβρικών εξισώσεων όπως η παραπάνω, το Mathematica διαθέτει έτοιµη συνάρτηση, τη Solve Εφαρµόστε την στο πρόβληµα αυτό: Solve[f[]==0,] 3 4 Επαναλάβετε για την εξίσωση = 0 στο διάστηµα [,], µε αρχική εκτίµηση 5 5 Με τη συνάρτηση Solve βρείτε τις ιδιοτιµές του παραπάνω πίνακα Α ως ρίζες του χαρακτηριστικού του πολυωνύµου 5 Σύνθετες Εντολές Υποµονάδες (Blocks) Το Block ή Module παρέχει τη δυνατότητα στον προγραµµατιστή να ορίσει τα δικά του υπο-προγράµµατα Αυτό που δεν πρέπει να ξεχνάµε όταν γράφουµε Block ή Module είναι να παραθέτουµε στην αρχή του τη λίστα των τοπικών µεταβλητών, αυτών δηλαδή που θα χρησιµοποιηθούν στο υπο-πρόγραµµα εκτός από τις παραµέτρους του Ένα απλό και ταυτόχρονα ενδιαφέρον και χρήσιµο παράδειγµα είναι αυτό της µεθόδου Newton-Raphson Στα προηγούµενα είδαµε ότι κάθε φορά που θέλουµε να ξεκινήσουµε από µια διαφορετική αρχική προσέγγιση ή/και να αλλάξουµε τον αριθµό των επαναλήψεων, θα πρέπει να διορθώνουµε τον αντίστοιχο κώδικα Ένας πιο εύχρηστος αλλά και πιο ολοκληρωµένος τρόπος είναι να κάνουµε αυτές τις ποσότητες παραµέτρους σ ένα υποπρόγραµµα: In[85}:= NR[f_,0_,TOL_]:=Module[{=0,new,err,errors,z_}, fd[z_]=f [z]; new=-f[]/fd[];print[new]; err=abs[-new];errors={err}; (* repeat while error is not less than TOL *) While[err>=TOL, =new; new=-f[]/fd[]; Print[new]; err=abs[-new]; errors=append[errors,err] n 0

] ListPlot[errors] (* plot error sequence) ] Παρατηρείστε ότι το υποπρόγραµµα ορίζεται κι αυτό όπως µια συνάρτηση (εδώ µε όνοµα NR) αλλά αντί του = χρησιµοποιούµε το:= Αυτός είναι ο ορισµός συνάρτησης µε αναβολή, που σηµαίνει ότι η συνάρτηση δεν ορίζεται άµεσα αλλά η ακριβής λειτουργία της θα γίνει σαφής µόλις πάρουν τιµές οι παράµετροι f,0,tol Για παράδειγµα, δεν µπορεί να είναι γνωστό πόσες επαναλήψεις θα εκτελεστούν πριν αρχίσει να εκτελείται το υποπρόγραµµα Το δεύτερο που αξίζει να παρατηρήσουµε είναι ότι, όπως όλες οι γλώσσες προγραµµατισµού, έτσι και το Mathematica παρέχει τη δυνατότητα εισαγωγής σχολιασµού (ανάµεσα στα (* *)) στο πρόγραµµα Για να βρούµε την ίδια προσέγγιση της ρίζας όπως παραπάνω, θα πρέπει να καλέσουµε το υποπρόγραµµα ως εξής: In[86]:=NR[f,5,0^(-6)] Πλέον έχουµε τη δυνατότητα να εκτελούµε τη διαδικασία Newton-Raphson για οποιαδήποτε συνάρτηση, µε οποιαδήποτε αρχική προσέγγιση, και µε οποιαδήποτε επιθυµητή ακρίβεια, χωρίς να είµαστε υποχρεωµένοι να επεµβαίνουµε στις εντολές Έτσι, αν πχ επιθυµούµε ακρίβεια 0 8, αρκεί να καλέσουµε το υποπρόγραµµα ως In[87]:=NR[f,5,0^(-8)] Ας σηµειώσουµε επίσης ότι ένα υποπρόγραµµα µπορούµε να το αποθηκεύσουµε σε ένα ξεχωριστό αρχείο (notebook) ώστε να είµαστε σε θέση, όποτε το επιθυµούµε, να το ενεργοποιήσουµε (ώστε να µπορούµε να το καλέσουµε) Για παράδειγµα, αποθηκεύοντας το παραπάνω πρόγραµµα στο αρχείο NRm, µπορούµε αργότερα να το καλέσουµε αφού πρώτα το ενεργοποιήσουµε µε In[86]:=<<NRm Τροποποιήστε το υποπρόγραµµα NR ώστε το κριτήριο τερµατισµού να βασίζεται στη σχετική διαφορά των διαδοχικών προσεγγίσεων αντί της απόλυτης διαφοράς όπως παραπάνω οκιµάστε το στο παραπάνω παράδειγµα Γράψτε υποπρόγραµµα (ονοµάστε το FP) που να υλοποιεί τη µέθοδο σταθερού σηµείου, για δοσµένη συνάρτηση g, αρχική τιµή 0, και επιθυµητή ακρίβεια οκιµάστε το στο παραπάνω παράδειγµα (µε g ( ) = ln( + ) ) Συγκρίνετε τα αποτελέσµατα µε αυτά του NR 3 Με τη βοήθεια του on-line Help, δείτε τις συναρτήσεις Solve και NSolve για επίλυση (ακριβή και αριθµητική, αντίστοιχα) συστηµάτων µη-γραµµικών αλγεβρικών = 0, εξισώσεων οκιµάστε τις στο σύστηµα = 0 4 Με τη συνάρτηση FindRoot βρείτε τη λύση του συστήµατος εξισώσεων e + ln y =, sin + cos y = κοντά στο (,) 5 Γράψτε υποπρόγραµµα (µε όνοµα PowerMethod) που να υλοποιεί τη βελτιωµένη µέθοδο των δυνάµεων για δοσµένο πίνακα και αρχικό διάνυσµα