### 1.18.4 Ολοκλήρωση κατά μέλη : `ibpdv` και `ibpu`

#### `ibpdv`

`ibpdv` χρησιμοποιείται για την εύρεση του αορίστου ολοκληρώματος μιας παράστασης γραμμένης ως u(x).v′(x).
`ibpdv` παίρνει δύο ορίσματα :

- μια παράσταση u(x).v′(x) και v(x) (ή μια λίστα δύο παραστάσεων [F(x), u(x)*v′(x)] και v(x)),
- ή μια παράσταση g(x) και 0 (ή μια λίστα δύο παραστάσεων [F(x), g(x)] και 0).

`ibpdv` επιστρέφει :

- εάν v(x) ≠ 0, την λίστα [u(x).v(x),−v(x).u′(x)] (ή [F(x)+u(x).v(x),−v(x).u′(x)]),
- εάν το δεύτερο όρισμα είναι 0, το αόριστο ολοκλήρωμα του πρώτου ορίσματος g(x) (ή F(x)+το αόριστο ολοκλήρωμα του g(x)) :
  επομένως, η εντολή `ibpdv(g(x),0)` επιστρέφει το αόριστο ολοκλήρωμα `G(x)` της `g(x)` και
  η εντολή `ibpdv([F(x),g(x)],0)` επιστρέφει `F(x)+G(x)` όπου `diff(G(x))=g(x)`.

Επομένως, `ibpdv` επιστρέφει τους όρους που υπολογίζονται με ολοκλήρωση κατά μέλη, με την πιθανότητα να γίνουν πολλαπλά `ibpdv` διαδιοχικά.
Αφού υπολογίσουμε το αποτέλεσμα του `ibpdv(u(x)*v``′``(x),v(x))`, για να βρούμε το αόριστο ολοκλήρωμα του u(x).v′(x), απομένει να υπολογίσουμε το ολοκλήρωμα του δεύτερου όρου του ολοκληρώματος και μετά, να αθροίσουμε αυτό το ολοκλήρωμα με τον πρώτο όρο του αποτελέσματος : για να το κάνουμε αυτό, απλά χρησιμοποιούμε την εντολή `ibpdv` με το αποτέλεσμα ως πρώτο όρισμα και μια νέα v(x) (ή 0 για να τερματίσουμε την ολοκλήρωση) ως δεύτερο όρισμα.
Είσοδος :

`ibpdv(ln(x),x)`

Έξοδος :

`[x.ln(x),-1]`

μετά :

`ibpdv([x.ln(x),-1],0)`

Έξοδος :

`-x+x.ln(x)`

Σχόλιο
Όταν το πρώτο όρισμα του `ibpdv` είναι μια λίστα δύο στοιχείων, η εντολή `ibpdv` δουλεύει μόνο με το τελευταίο στοιχείο της λίστας και προσθέτει τον όρο που έχει ολοκληρωθεί στο πρώτο στοιχείο αυτής της λίστας. (Συνεπώς είναι δυνατόν να γίνουν πολλαπλά `ibpdv` διαδοχικά).
Για παράδειγμα :
`ibpdv((log(x))```^```2,x) = [x*(log(x))```^```2,-(2*log(x))]`
απομένει να ολοκληρώσουμε το `-(2*log(x))`. Εισάγετε :
`ibpdv(ans(),x)` ή εισάγετε :
`ibpdv([x*(log(x))```^```2,-(2*log(x))],x)`
Έξοδος :
`[x*(log(x))```^```2+x*(-(2*log(x))),2]`
και απομένει να ολοκληρώσουμε το `2`, γι’αυτό εισάγετε `ibpdv(ans(),0)` ή
`ibpdv([x*(log(x))```^```2+x*(-(2*log(x))),2],0)`.
Έξοδος : `x*(log(x))```^```2+x*(-(2*log(x)))+2*x`

#### `ibpu`

`ibpu` χρησιμοποιείται για την εύρεση του αορίστου ολοκληρώματος μιας παράστασης γραμμένης ως u(x).v′(x)
`ibpu` παίρνει δύο ορίσματα :

- μια παράσταση u(x).v′(x) και u(x) (ή μια λίστα δύο παραστάσεων [F(x), u(x)*v′(x)] και u(x)),
- μια παράσταση g(x) και 0 (ή μια λίστα δύο παραστάσεων [F(x) g(x)] και 0).

`ibpu` επιστρέφει :

- εάν u(x) ≠ 0, τη λίστα [u(x).v(x),−v(x).u′(x)] (ή επιστρέφει τη λίστα [F(x)+u(x).v(x),−v(x).u′(x)]),
- εάν το δεύτερο όρισμα είναι 0, το αόριστο ολοκλήρωμα του πρώτου ορίσματος g(x) (ή F(x)+το αόριστο ολοκλήρωμα της g(x)):
  `ibpu(g(x),0)` επιστρέφει `G(x)` όπου `diff(G(x))=g(x)` ή
  `ibpu([F(x),g(x)],0)` επιστρέφει `F(x)+G(x)` όπου `diff(G(x))=g(x)`.

Επομένως, η εντολή `ibpu` επιστρέφει τους όρους που υπολογίζονται με ολοκλήρωση κατά μέλη, με την πιθανότητα να γίνουν πολλαπλά `ibpu` διαδοχικά.
Αφού υπολογίσουμε το αποτέλεσμα του `ibpu(u(x)*v``′``(x),u(x))`, για να βρούμε το αόριστο ολοκλήρωμα του u(x).v′(x), απομένει να υπολογίσουμε το ολοκλήρωμα του δεύτερου όρου του ολοκληρώματος και μετά, να αθροίσουμε αυτό το ολοκλήρωμα με τον πρώτο όρο του αποτελέσματος : για να το κάνουμε αυτό, απλά χρησιμοποιούμε την εντολή `ibpu` με το αποτέλεσμα ως πρώτο όρισμα και μια νέα u(x) (ή 0 για να τερματίσουμε την ολοκλήρωση) ως δεύτερο όρισμα.
Είσοδος :

`ibpu(ln(x),ln(x))`

Έξοδος :

`[x.ln(x),-1]`

μετά

`ibpu([x.ln(x),-1],0)`

Έξοδος :

`-x+x.ln(x)`

Σχόλιο
Όταν το πρώτο όρισμα του `ibpu` είναι μια λίστα δύο στοιχείων, η εντολή `ibpu` δουλεύει μόνο με το τελευταίο στοιχείο της λίστας και προσθέτει τον όρο που έχει ολοκληρωθεί στο πρώτο στοιχείο της λίστας. (Συνεπώς είναι δυνατόν να γίνουν πολλαπλά `ibpu` διαδοχικά).
Για παράδειγμα :
`ibpu((log(x))```^```2,log(x)) = [x*(log(x))```^```2,-(2*log(x))]`
απομένει να ολοκληρώσουμε το `-(2*log(x))`, γι’ αυτό εισάγουμε :
`ibpu(ans(),log(x))` ή εισάγουμε :
`ibpu([x*(log(x))```^```2,-(2*log(x))],log(x))`
Έξοδος :
`[x*(log(x))```^```2+x*(-(2*log(x))),2]`
απομένει να ολοκληρώσουμε το `2`, γι’ αυτό εισάγουμε :
`ibpu(ans(),0)` ή εισάγουμε :
`ibpu([x*(log(x))```^```2+x*(-(2*log(x))),2],0)`.
Έξοδος : `x*(log(x))```^```2+x*(-(2*log(x)))+2*x`