Mάθημα 7 : Ολοκλήρωμα

( Προσαρμογή του άρθρου "Ολοκληρώματα" Ι.Γαλιδάκη)

Ας δούμε πως η Maple μπορεί να μας βοηθήσει να κατανοήσουμε την έννοια του ολοκληρώματος. Φορτώνουμε το πακέτο student.

> with(student):

Ξεκιναμε με μία απλή συνάρτηση.

> f:=x->x^2;

Ας δουμε τώρα γραφικά τα αντίστοιχα αθροίσματα που θα μας βοηθήσουν να προσδιορίσουμε τις τιμές του ολοκληρώματος. Πρώτα το κάτω άθροισμα.

> leftbox(f(x),x=0..1,10);

Ας υπολογίσουμε τώρα το άθροισμα αυτό.

> leftsum(f(x),x=0..1,10);

> value(%);

O αντίστοιχος υπολογισμός για το άνω άθροισμα.

> rightbox(f(x),x=0..1,10);

> rightsum(f(x),x=0..1,10);

> value(%);

Οι τιμές δεν είναι φυσικά πολύ κοντα μεταξύ τους, αλλα ας μην ξεχνάμε ότι ο αριθμός υποδιαστημάτων που θεωρήσαμε ήταν μικρός. (10). Για να δούμε τι γίνεται με μεγαλύτερο αριθμό διαστημάτων.

> value(leftsum(f(x),x=0..1,50));

> value(rightsum(f(x),x=0..1,50));

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

> value(leftsum(f(x),x=0..1,n));

> limit(%,n=infinity);

> value(rightsum(f(x),x=0..1,n));

Και τώρα ας δούμε πραγματικά τι γίνεται όταν το n->oo.

> limit(%,n=infinity);

Βλέπουμε λοιπόν ότι το κάτω άθροισμα και το άνω άθροισμα είναι ίσα όταν o αριθμός των υποδιαστημάτων τείνει στο άπειρο. Η τιμή αυτή είναι και το ορισμένο ολοκλήρωμα της συνάρτησης από το 0 ως το 1. Ουσιαστικα, αυτή είναι και η θεώρηση που έκανε και ο Αρχιμήδης δυόμιση χιλιάδες χρόνια πριν!

> int(f(x),x=0..1); #(σφάλμα της Maple) γιά να φανεί το ολοκλήρωμα σωστά, επιλέξτε το (μαυρίστε το όλο) και πατείστε Ctrl+B.

Χρησιμοποιήστε τώρα το ίδιο αυτό φύλλο, αλλάζοντας την συνάρτηση σε μία πιο πολύπλοκη, όπως την sin(x), ή άλλη συνάρτηση προτίμησης σας. Μην ξεχάσετε να αλλάξετε και τα όρια ολοκλήρωσης στα νέα όρια που θέλετε.

Ας δούμε μερικά ορισμένα ολοκληρώματα. Παρατηρήστε ότι όλες οι εκφράσεις είναι είτε "Int" η "int". Το κεφαλαίο "I" δεν υποχρεώνει σε υπολογισμό.

> Int((4-x^2)^(-3/2),x=0..1);

> Int(1/((4-x^2)^(3/2)),x = 0 .. 1);

> value(%);

> int(sin(x),x=0..Pi);

> int(x^4-x+sin(x)-1/x,x=1..2);

> Int((exp(sin(x)/x),x=0.01..1)); #δεν υπολογίζει σωστά στο [0..1]

> value(%);

> Int((exp(sin(x)),x=0.1..1)); #δεν υπολογίζει σωστά στο [0..1]

> value(%);

>

Aόριστο ολοκλήρωμα ή αντι-παράγωγος συνάρτησης φ είναι μιά συνάρτηση Φ της οποίας η παράγωγος DΦ = φ. Το αόριστο ολοκλήρωμα χρησιμοποεί την ίδια εντολή αλλά με άλλο όρισμα:

> int(1/x,x);

> int(exp(k*x),x);

> int(x^n,x);

> int(1/(1+x+x^2),x);

> Int(x^2*cos(x),x);

> value(%);

H επαλήθευση γίνεται με παραγώγιση:

> diff(%,x);

> f(x):=x*cos(x); F:=Int(f(x), x);

> diff(F,x); # επαλήθευση

Η συνάρτηση του αορίστου ολοκληρώματος:

> f(x):=x^2*sin(x); F:=int(f(x),x);

> plot( [f(x),F(x)], x=-10..10 );

> g:=unapply(F,x);

> G:=D(g);

>

Ολοκλήρωση κατά μέρη .

Υποθέστε ότι expr είναι μία έκφραση που περιέχει ένα Int που μπορεί να γραφτεί σαν Int(UdV). Τότε για να παράγετε την έκφραση UV-Int(VdU), χρησιμοποιείτε την εντολή.

intparts(expr,U). Ας το δούμε.

Παράδειγμα.

> Int(x^2*exp(x),x=2..3);

> intparts(%,x^2);

> value(%);

Παράδειγμα . Βρείτε έναν τύπο ελάττωσης για το ολοκλήρωμα της συνάρτησης sin^n(x)e^x και χρησιμοποιήστε το για την περίπτωση n=5.

Εφ' όσον ο τελικός τύπος εξαρτάται από το n, καλό θα ήταν να εκφράσουμε το προηγούμενο σαν συνάρτηση του n.

> e3:=n->Int(sin(x)^n*exp(x),x);

> intparts(e3(n),sin(x)^n);

> intparts(%,sin(x)^(n-1)*cos(x));

Χρειαζόμαστε τώρα να εκφράσουμε τα συνημίτονα σαν ημίτονα.

> subs(cos(x)^2=1-sin(x)^2,%);

> expand(%);

> simplify(%,power);

Τώρα ας αντικαταστήσουμε τις περιπτώσεις της αρχικής συνάρτησης μέσα στο αποτέλεσμα. Ονομάζουμε την αρχική συνάρτηση s(n).

> subs(e3(n)=s(n),e3(n-2)=s(n-2),%);

Τώρα ας λύσουμε ως προς s(n).

> solve(s(n)=%,s(n));

> collect(%,s(n-2));

> s:=unapply(%,n);

H τελική έκφραση είναι αναδρομική. Δηλαδή το s(n) χρειάζεται το s(n-2), κλπ. Αν επιχειρήσουμε να πούμε στην Maple να υπολογίσει την s, θα παρουσιάσει "stack overflow". Γι' αυτό, πρέπει να ορίσουμε αρχικές τιμές.

> s(0):=value(e3(0));

> s(1):=value(e3(1));

Aς δούμε τώρα αν μπορεί να υπολογίσει το πρόγραμμα το s(5).

> s(5);