Wikilivres
frwikibooks
https://fr.wikibooks.org/wiki/Accueil
MediaWiki 1.39.0-wmf.23
first-letter
Média
Spécial
Discussion
Utilisateur
Discussion utilisateur
Wikilivres
Discussion Wikilivres
Fichier
Discussion fichier
MediaWiki
Discussion MediaWiki
Modèle
Discussion modèle
Aide
Discussion aide
Catégorie
Discussion catégorie
Transwiki
Discussion Transwiki
Wikijunior
Discussion Wikijunior
TimedText
TimedText talk
Module
Discussion module
Gadget
Discussion gadget
Définition de gadget
Discussion définition de gadget
Programmation PHP/Introduction
0
2836
683347
683346
2022-08-13T14:08:35Z
JackPotte
5426
/* PHP 8 */
wikitext
text/x-wiki
<noinclude>{{Programmation PHP}}</noinclude>
== Historique ==
<div style="float:right;">[[Image:Server-side websites programming languages.PNG|thumb|Répartition des langages de programmation côté serveur, des sites Internet le 28 avril 2016.]]</div>
[[w:PHP|PHP]] est un langage de script créé par Rasmus Lerdorf en 1995. Principalement utilisé pour la programmation Web, on pourrait le situer entre les SSI ([[w:Server Side Includes|Server Side Includes]]) et le langage de script [[Programmation Perl|Perl]]. Il est utilisable sur tous les systèmes d'exploitation, donc sur {{w|Windows}}, {{w|MacOS}}, [[Le système d'exploitation GNU-Linux|GNU-Linux]] ou autre Unix commercial, ce qui en fait un langage très portatif.
La sortie de PHP 5 en 2004 a permis au langage d'atteindre une certaine maturité, pour être reconnu comme un serveur d'application à part entière tel que [[Programmation JEE|JEE]] ou [[Programmation .Net|.Net]].
PHP a ensuite acquis une place incontournable dans le développement Web ''Open Source''. Sa popularité vient de sa syntaxe, proche du [[Programmation C|C]], de sa vitesse et de sa simplicité. En 2013, on estime qu'il y a plus de 244 millions de serveurs qui utilisent le langage. En 2016 il est utilisé dans plus de 80 % des sites Internet, et toujours 77,5 % en août 2022<ref>https://w3techs.com/technologies/details/pl-php</ref>.
=== PHP 5 ===
Les nouvelles fonctionnalités du PHP 5 concernent surtout la [[programmation orientée objet]]<ref>https://www.web24.com.au/tutorials/features-of-php5</ref> :
# interfaces
# classes abstraites
# constructeurs et destructeurs de classes (ainsi que d'autres méthodes magiques)
# portée des attributs et méthodes (public, protected, private)
# attributs et {{wt|méthode statique|méthodes statiques}}
# attributs et {{wt|méthode finale|méthodes finaux}}
# {{wt|type hinting}} de classe.
=== PHP 7 ===
Les principales fonctionnalités apportées par PHP 7 (depuis 2015) sont<ref>https://www.php.net/manual/fr/migration70.new-features.php</ref> :
# typage strict par classe
# paramètres typés
# retours de méthode typés
# {{wt|opérateur de coalescence null}} (??)
# {{wt|opérateur vaisseau spatial}} (<=>)
# tableaux de constantes
# {{wt|classe anonyme|classes anonymes}}
# groupage des déclarations (use, avec des accolades).
=== PHP 8 ===
Nouvelles fonctionnalités du PHP 8.0 en 2020<ref>https://kinsta.com/fr/blog/php-8/</ref><ref>https://php.developpez.com/actu/335682/PHP-8-2-est-disponible-en-beta-2-Cette-version-propose-null-true-et-false-en-tant-que-types-autonomes-ainsi-que-des-constantes-dans-les-traits/</ref> :
# {{wt|paramètre nommé|paramètres nommés}}
# types d'union (X|Y)
# propriétés promues (déclarations dans le constructeur)
# autorisation d'une virgule de fin dans les paramètres
# autorisation des méthodes abstraites dans les traits
# autorisation des indices négatifs dans les tableaux autoincrémentés
# l'instruction <code>match</code>
# {{wt|opérateur null-safe}} (?->)
# exécution {{wt|juste-à-temps}} (JIT).
Pour PHP 8.1 :
# {{wt|énumération}}s
# attributs en lecture seule (readonly).
PHP 8.2 :
# classes en lecture seule
# types null, true et false.
== Sites Web statiques ou dynamiques ==
À l'origine du Web, les sites Web étaient des sites '''statiques''' : constitués d'un ensemble de pages écrites dans le langage HTML. L'information présente sur ces pages était toujours identique et leur mise à jour était particulièrement fastidieuse. Le serveur Web se contentait de diffuser les pages telles quelles à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire : l'utilisateur demandait une page web et le serveur la lui fournissait.
Aujourd'hui la plupart des sites sont '''dynamiques''' : à l'intérieur des pages HTML, le concepteur du site a inséré des programmes.
Ces programmes permettent une plus grande souplesse dans la gestion du site, sa mise à jour et ses fonctionnalités. La possibilité d'insérer des programmes a permis de décupler les fonctionnalités des sites Web.
Pour vous en convaincre prenons quelques exemples :
*Vous voulez écrire un site qui présente une centaine de produits. Vous n'allez pas écrire 100 pages différentes, une pour chacun des produits ! Mais plutôt une seule page (page type) permettant de présenter n'importe quel produit. Cette page va contenir un programme qui interagira avec une base de données. Dans la base de données, seront stockées les informations utiles pour chaque produit : le nom du produit, sa présentation, sa référence, son prix, etc. Le programme aura donc pour rôle d'aller chercher l'information utile dans la base de données et de l'afficher en HTML. De plus, pour ajouter un produit, il suffira d'ajouter un élément dans la base de données. Il est même possible d'avoir des programmes permettant de passer une commande pour vos différents produits !
* Vous voulez diffuser rapidement des informations sur Internet : vous voulez avoir un outil convivial qui vous permet d'ajouter un article, de le modifier, de le supprimer... Vous allez donc écrire un programme permettant de modifier à volonté les différents articles. Un exemple bien connu de ce type de programme est le blog : il s'agit d'un programme permettant à n'importe quel utilisateur non informaticien de gérer ses différents articles.
* L'encyclopédie Wikipédia est réalisée avec un programme (en PHP d'ailleurs) qui permet à chaque utilisateur de créer et de modifier les articles tout en gardant un historique complet des différentes versions des articles.
* les forums de discussion sont des lieux d'échange permettant une interaction étroite entre le serveur et l'utilisateur. Grâce aux programmes qu'ils utilisent, il est possible de se connecter, de consulter les messages des différents forums, d'y répondre. Les modérateurs de ces forums peuvent modifier les messages, les supprimer, interdire un utilisateur indélicat.
Dans chacun des exemples précédents il a été nécessaire d'incorporer un programme à l'intérieur des pages du site afin de réaliser des fonctionnalités de haut niveau. Aujourd'hui la quasi-totalité des sites professionnels sont dynamiques et il est quasi inconcevable de réaliser un site statique. Le langage PHP est un des langages utilisables pour réaliser facilement les sites Web dynamiques, ne serait-ce que parce qu'il est disponible sur la plupart des serveurs hébergeant des sites.
== Possibilités ==
Si vous êtes déjà allés sur un site qui vous demandait de vous connecter, vous avez utilisé un script côté serveur. Ce script était certainement écrit en PHP, en raison de la popularité de ce dernier.
PHP transforme une page statique (fichier [[Programmation HTML|HTML]] par exemple), en une suite d'instructions interprétables par PHP, installée sur un serveur Web comme [[Apache]] - ça peut-être simplement un "Hello World" 50 fois dans une colonne, ou une interaction avec un système de base de données, comme [[MySQL]], fréquemment couplé à PHP.
Mais PHP peut aussi servir à programmer des batchs sans page web aucune.
Les premières versions de PHP étaient faiblement typées, mais depuis la version 7 il est possible de forcer un typage fort dans un fichier en lui ajoutant :
<syntaxhighlight lang=php>
declare(strict_types = 1);
</syntaxhighlight>
mi48ommnn2fch5kkfho1gh1v3tocdyd
683348
683347
2022-08-13T14:23:34Z
JackPotte
5426
/* PHP 8 */
wikitext
text/x-wiki
<noinclude>{{Programmation PHP}}</noinclude>
== Historique ==
<div style="float:right;">[[Image:Server-side websites programming languages.PNG|thumb|Répartition des langages de programmation côté serveur, des sites Internet le 28 avril 2016.]]</div>
[[w:PHP|PHP]] est un langage de script créé par Rasmus Lerdorf en 1995. Principalement utilisé pour la programmation Web, on pourrait le situer entre les SSI ([[w:Server Side Includes|Server Side Includes]]) et le langage de script [[Programmation Perl|Perl]]. Il est utilisable sur tous les systèmes d'exploitation, donc sur {{w|Windows}}, {{w|MacOS}}, [[Le système d'exploitation GNU-Linux|GNU-Linux]] ou autre Unix commercial, ce qui en fait un langage très portatif.
La sortie de PHP 5 en 2004 a permis au langage d'atteindre une certaine maturité, pour être reconnu comme un serveur d'application à part entière tel que [[Programmation JEE|JEE]] ou [[Programmation .Net|.Net]].
PHP a ensuite acquis une place incontournable dans le développement Web ''Open Source''. Sa popularité vient de sa syntaxe, proche du [[Programmation C|C]], de sa vitesse et de sa simplicité. En 2013, on estime qu'il y a plus de 244 millions de serveurs qui utilisent le langage. En 2016 il est utilisé dans plus de 80 % des sites Internet, et toujours 77,5 % en août 2022<ref>https://w3techs.com/technologies/details/pl-php</ref>.
=== PHP 5 ===
Les nouvelles fonctionnalités du PHP 5 concernent surtout la [[programmation orientée objet]]<ref>https://www.web24.com.au/tutorials/features-of-php5</ref> :
# interfaces
# classes abstraites
# constructeurs et destructeurs de classes (ainsi que d'autres méthodes magiques)
# portée des attributs et méthodes (public, protected, private)
# attributs et {{wt|méthode statique|méthodes statiques}}
# attributs et {{wt|méthode finale|méthodes finaux}}
# {{wt|type hinting}} de classe.
=== PHP 7 ===
Les principales fonctionnalités apportées par PHP 7 (depuis 2015) sont<ref>https://www.php.net/manual/fr/migration70.new-features.php</ref> :
# typage strict par classe
# paramètres typés
# retours de méthode typés
# {{wt|opérateur de coalescence null}} (??)
# {{wt|opérateur vaisseau spatial}} (<=>)
# tableaux de constantes
# {{wt|classe anonyme|classes anonymes}}
# groupage des déclarations (use, avec des accolades).
=== PHP 8 ===
Nouvelles fonctionnalités du PHP 8.0 en 2020<ref>https://kinsta.com/fr/blog/php-8/</ref><ref>https://php.developpez.com/actu/335682/PHP-8-2-est-disponible-en-beta-2-Cette-version-propose-null-true-et-false-en-tant-que-types-autonomes-ainsi-que-des-constantes-dans-les-traits/</ref> :
# {{wt|paramètre nommé|paramètres nommés}}
# types d'union (X|Y)
# propriétés promues (déclarations dans le constructeur)
# autorisation d'une virgule de fin dans les paramètres
# autorisation des méthodes abstraites dans les traits
# autorisation des indices négatifs dans les tableaux autoincrémentés
# l'instruction <code>match</code>
# {{wt|opérateur null-safe}} (?->)
# fonction <code>str_contains()</code>
# fonction <code>str_starts_with()</code> et <code>str_ends_with()</code>
# fonction <code>get_debug_type()</code> : il s'agit d'un gettype() qui renvoie le nom de la classe au lieu de "object".
# exécution {{wt|juste-à-temps}} (JIT).
Pour PHP 8.1 :
# {{wt|énumération}}s
# attributs en lecture seule (readonly).
PHP 8.2 :
# classes en lecture seule
# types null, true et false.
== Sites Web statiques ou dynamiques ==
À l'origine du Web, les sites Web étaient des sites '''statiques''' : constitués d'un ensemble de pages écrites dans le langage HTML. L'information présente sur ces pages était toujours identique et leur mise à jour était particulièrement fastidieuse. Le serveur Web se contentait de diffuser les pages telles quelles à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire : l'utilisateur demandait une page web et le serveur la lui fournissait.
Aujourd'hui la plupart des sites sont '''dynamiques''' : à l'intérieur des pages HTML, le concepteur du site a inséré des programmes.
Ces programmes permettent une plus grande souplesse dans la gestion du site, sa mise à jour et ses fonctionnalités. La possibilité d'insérer des programmes a permis de décupler les fonctionnalités des sites Web.
Pour vous en convaincre prenons quelques exemples :
*Vous voulez écrire un site qui présente une centaine de produits. Vous n'allez pas écrire 100 pages différentes, une pour chacun des produits ! Mais plutôt une seule page (page type) permettant de présenter n'importe quel produit. Cette page va contenir un programme qui interagira avec une base de données. Dans la base de données, seront stockées les informations utiles pour chaque produit : le nom du produit, sa présentation, sa référence, son prix, etc. Le programme aura donc pour rôle d'aller chercher l'information utile dans la base de données et de l'afficher en HTML. De plus, pour ajouter un produit, il suffira d'ajouter un élément dans la base de données. Il est même possible d'avoir des programmes permettant de passer une commande pour vos différents produits !
* Vous voulez diffuser rapidement des informations sur Internet : vous voulez avoir un outil convivial qui vous permet d'ajouter un article, de le modifier, de le supprimer... Vous allez donc écrire un programme permettant de modifier à volonté les différents articles. Un exemple bien connu de ce type de programme est le blog : il s'agit d'un programme permettant à n'importe quel utilisateur non informaticien de gérer ses différents articles.
* L'encyclopédie Wikipédia est réalisée avec un programme (en PHP d'ailleurs) qui permet à chaque utilisateur de créer et de modifier les articles tout en gardant un historique complet des différentes versions des articles.
* les forums de discussion sont des lieux d'échange permettant une interaction étroite entre le serveur et l'utilisateur. Grâce aux programmes qu'ils utilisent, il est possible de se connecter, de consulter les messages des différents forums, d'y répondre. Les modérateurs de ces forums peuvent modifier les messages, les supprimer, interdire un utilisateur indélicat.
Dans chacun des exemples précédents il a été nécessaire d'incorporer un programme à l'intérieur des pages du site afin de réaliser des fonctionnalités de haut niveau. Aujourd'hui la quasi-totalité des sites professionnels sont dynamiques et il est quasi inconcevable de réaliser un site statique. Le langage PHP est un des langages utilisables pour réaliser facilement les sites Web dynamiques, ne serait-ce que parce qu'il est disponible sur la plupart des serveurs hébergeant des sites.
== Possibilités ==
Si vous êtes déjà allés sur un site qui vous demandait de vous connecter, vous avez utilisé un script côté serveur. Ce script était certainement écrit en PHP, en raison de la popularité de ce dernier.
PHP transforme une page statique (fichier [[Programmation HTML|HTML]] par exemple), en une suite d'instructions interprétables par PHP, installée sur un serveur Web comme [[Apache]] - ça peut-être simplement un "Hello World" 50 fois dans une colonne, ou une interaction avec un système de base de données, comme [[MySQL]], fréquemment couplé à PHP.
Mais PHP peut aussi servir à programmer des batchs sans page web aucune.
Les premières versions de PHP étaient faiblement typées, mais depuis la version 7 il est possible de forcer un typage fort dans un fichier en lui ajoutant :
<syntaxhighlight lang=php>
declare(strict_types = 1);
</syntaxhighlight>
fdjmw4knqu821s4ysbtt87w5tcyc5gt
683349
683348
2022-08-13T14:23:56Z
JackPotte
5426
/* PHP 8 */
wikitext
text/x-wiki
<noinclude>{{Programmation PHP}}</noinclude>
== Historique ==
<div style="float:right;">[[Image:Server-side websites programming languages.PNG|thumb|Répartition des langages de programmation côté serveur, des sites Internet le 28 avril 2016.]]</div>
[[w:PHP|PHP]] est un langage de script créé par Rasmus Lerdorf en 1995. Principalement utilisé pour la programmation Web, on pourrait le situer entre les SSI ([[w:Server Side Includes|Server Side Includes]]) et le langage de script [[Programmation Perl|Perl]]. Il est utilisable sur tous les systèmes d'exploitation, donc sur {{w|Windows}}, {{w|MacOS}}, [[Le système d'exploitation GNU-Linux|GNU-Linux]] ou autre Unix commercial, ce qui en fait un langage très portatif.
La sortie de PHP 5 en 2004 a permis au langage d'atteindre une certaine maturité, pour être reconnu comme un serveur d'application à part entière tel que [[Programmation JEE|JEE]] ou [[Programmation .Net|.Net]].
PHP a ensuite acquis une place incontournable dans le développement Web ''Open Source''. Sa popularité vient de sa syntaxe, proche du [[Programmation C|C]], de sa vitesse et de sa simplicité. En 2013, on estime qu'il y a plus de 244 millions de serveurs qui utilisent le langage. En 2016 il est utilisé dans plus de 80 % des sites Internet, et toujours 77,5 % en août 2022<ref>https://w3techs.com/technologies/details/pl-php</ref>.
=== PHP 5 ===
Les nouvelles fonctionnalités du PHP 5 concernent surtout la [[programmation orientée objet]]<ref>https://www.web24.com.au/tutorials/features-of-php5</ref> :
# interfaces
# classes abstraites
# constructeurs et destructeurs de classes (ainsi que d'autres méthodes magiques)
# portée des attributs et méthodes (public, protected, private)
# attributs et {{wt|méthode statique|méthodes statiques}}
# attributs et {{wt|méthode finale|méthodes finaux}}
# {{wt|type hinting}} de classe.
=== PHP 7 ===
Les principales fonctionnalités apportées par PHP 7 (depuis 2015) sont<ref>https://www.php.net/manual/fr/migration70.new-features.php</ref> :
# typage strict par classe
# paramètres typés
# retours de méthode typés
# {{wt|opérateur de coalescence null}} (??)
# {{wt|opérateur vaisseau spatial}} (<=>)
# tableaux de constantes
# {{wt|classe anonyme|classes anonymes}}
# groupage des déclarations (use, avec des accolades).
=== PHP 8 ===
Nouvelles fonctionnalités du PHP 8.0 en 2020<ref>https://kinsta.com/fr/blog/php-8/</ref><ref>https://php.developpez.com/actu/335682/PHP-8-2-est-disponible-en-beta-2-Cette-version-propose-null-true-et-false-en-tant-que-types-autonomes-ainsi-que-des-constantes-dans-les-traits/</ref> :
# {{wt|paramètre nommé|paramètres nommés}}
# types d'union (X|Y)
# propriétés promues (déclarations dans le constructeur)
# autorisation d'une virgule de fin dans les paramètres
# autorisation des méthodes abstraites dans les traits
# autorisation des indices négatifs dans les tableaux autoincrémentés
# l'instruction <code>match</code>
# {{wt|opérateur null-safe}} (?->)
# fonction <code>str_contains()</code>
# fonction <code>str_starts_with()</code> et <code>str_ends_with()</code>
# fonction <code>get_debug_type()</code> : il s'agit d'un gettype() plus précis, car il renvoie le nom de la classe au lieu de "object"
# exécution {{wt|juste-à-temps}} (JIT).
Pour PHP 8.1 :
# {{wt|énumération}}s
# attributs en lecture seule (readonly).
PHP 8.2 :
# classes en lecture seule
# types null, true et false.
== Sites Web statiques ou dynamiques ==
À l'origine du Web, les sites Web étaient des sites '''statiques''' : constitués d'un ensemble de pages écrites dans le langage HTML. L'information présente sur ces pages était toujours identique et leur mise à jour était particulièrement fastidieuse. Le serveur Web se contentait de diffuser les pages telles quelles à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire : l'utilisateur demandait une page web et le serveur la lui fournissait.
Aujourd'hui la plupart des sites sont '''dynamiques''' : à l'intérieur des pages HTML, le concepteur du site a inséré des programmes.
Ces programmes permettent une plus grande souplesse dans la gestion du site, sa mise à jour et ses fonctionnalités. La possibilité d'insérer des programmes a permis de décupler les fonctionnalités des sites Web.
Pour vous en convaincre prenons quelques exemples :
*Vous voulez écrire un site qui présente une centaine de produits. Vous n'allez pas écrire 100 pages différentes, une pour chacun des produits ! Mais plutôt une seule page (page type) permettant de présenter n'importe quel produit. Cette page va contenir un programme qui interagira avec une base de données. Dans la base de données, seront stockées les informations utiles pour chaque produit : le nom du produit, sa présentation, sa référence, son prix, etc. Le programme aura donc pour rôle d'aller chercher l'information utile dans la base de données et de l'afficher en HTML. De plus, pour ajouter un produit, il suffira d'ajouter un élément dans la base de données. Il est même possible d'avoir des programmes permettant de passer une commande pour vos différents produits !
* Vous voulez diffuser rapidement des informations sur Internet : vous voulez avoir un outil convivial qui vous permet d'ajouter un article, de le modifier, de le supprimer... Vous allez donc écrire un programme permettant de modifier à volonté les différents articles. Un exemple bien connu de ce type de programme est le blog : il s'agit d'un programme permettant à n'importe quel utilisateur non informaticien de gérer ses différents articles.
* L'encyclopédie Wikipédia est réalisée avec un programme (en PHP d'ailleurs) qui permet à chaque utilisateur de créer et de modifier les articles tout en gardant un historique complet des différentes versions des articles.
* les forums de discussion sont des lieux d'échange permettant une interaction étroite entre le serveur et l'utilisateur. Grâce aux programmes qu'ils utilisent, il est possible de se connecter, de consulter les messages des différents forums, d'y répondre. Les modérateurs de ces forums peuvent modifier les messages, les supprimer, interdire un utilisateur indélicat.
Dans chacun des exemples précédents il a été nécessaire d'incorporer un programme à l'intérieur des pages du site afin de réaliser des fonctionnalités de haut niveau. Aujourd'hui la quasi-totalité des sites professionnels sont dynamiques et il est quasi inconcevable de réaliser un site statique. Le langage PHP est un des langages utilisables pour réaliser facilement les sites Web dynamiques, ne serait-ce que parce qu'il est disponible sur la plupart des serveurs hébergeant des sites.
== Possibilités ==
Si vous êtes déjà allés sur un site qui vous demandait de vous connecter, vous avez utilisé un script côté serveur. Ce script était certainement écrit en PHP, en raison de la popularité de ce dernier.
PHP transforme une page statique (fichier [[Programmation HTML|HTML]] par exemple), en une suite d'instructions interprétables par PHP, installée sur un serveur Web comme [[Apache]] - ça peut-être simplement un "Hello World" 50 fois dans une colonne, ou une interaction avec un système de base de données, comme [[MySQL]], fréquemment couplé à PHP.
Mais PHP peut aussi servir à programmer des batchs sans page web aucune.
Les premières versions de PHP étaient faiblement typées, mais depuis la version 7 il est possible de forcer un typage fort dans un fichier en lui ajoutant :
<syntaxhighlight lang=php>
declare(strict_types = 1);
</syntaxhighlight>
rtfs135jbfv8kq4vlj74n79ie1pwnsn
683350
683349
2022-08-13T16:36:18Z
JackPotte
5426
/* PHP 8 */
wikitext
text/x-wiki
<noinclude>{{Programmation PHP}}</noinclude>
== Historique ==
<div style="float:right;">[[Image:Server-side websites programming languages.PNG|thumb|Répartition des langages de programmation côté serveur, des sites Internet le 28 avril 2016.]]</div>
[[w:PHP|PHP]] est un langage de script créé par Rasmus Lerdorf en 1995. Principalement utilisé pour la programmation Web, on pourrait le situer entre les SSI ([[w:Server Side Includes|Server Side Includes]]) et le langage de script [[Programmation Perl|Perl]]. Il est utilisable sur tous les systèmes d'exploitation, donc sur {{w|Windows}}, {{w|MacOS}}, [[Le système d'exploitation GNU-Linux|GNU-Linux]] ou autre Unix commercial, ce qui en fait un langage très portatif.
La sortie de PHP 5 en 2004 a permis au langage d'atteindre une certaine maturité, pour être reconnu comme un serveur d'application à part entière tel que [[Programmation JEE|JEE]] ou [[Programmation .Net|.Net]].
PHP a ensuite acquis une place incontournable dans le développement Web ''Open Source''. Sa popularité vient de sa syntaxe, proche du [[Programmation C|C]], de sa vitesse et de sa simplicité. En 2013, on estime qu'il y a plus de 244 millions de serveurs qui utilisent le langage. En 2016 il est utilisé dans plus de 80 % des sites Internet, et toujours 77,5 % en août 2022<ref>https://w3techs.com/technologies/details/pl-php</ref>.
=== PHP 5 ===
Les nouvelles fonctionnalités du PHP 5 concernent surtout la [[programmation orientée objet]]<ref>https://www.web24.com.au/tutorials/features-of-php5</ref> :
# interfaces
# classes abstraites
# constructeurs et destructeurs de classes (ainsi que d'autres méthodes magiques)
# portée des attributs et méthodes (public, protected, private)
# attributs et {{wt|méthode statique|méthodes statiques}}
# attributs et {{wt|méthode finale|méthodes finaux}}
# {{wt|type hinting}} de classe.
=== PHP 7 ===
Les principales fonctionnalités apportées par PHP 7 (depuis 2015) sont<ref>https://www.php.net/manual/fr/migration70.new-features.php</ref> :
# typage strict par classe
# paramètres typés
# retours de méthode typés
# {{wt|opérateur de coalescence null}} (??)
# {{wt|opérateur vaisseau spatial}} (<=>)
# tableaux de constantes
# {{wt|classe anonyme|classes anonymes}}
# groupage des déclarations (use, avec des accolades).
=== PHP 8 ===
Nouvelles fonctionnalités du PHP 8.0 en 2020<ref>https://kinsta.com/fr/blog/php-8/</ref><ref>https://php.developpez.com/actu/335682/PHP-8-2-est-disponible-en-beta-2-Cette-version-propose-null-true-et-false-en-tant-que-types-autonomes-ainsi-que-des-constantes-dans-les-traits/</ref> :
# {{wt|paramètre nommé|paramètres nommés}}
# types d'union (X|Y)
# propriétés promues (déclarations dans le constructeur)
# autorisation d'une virgule de fin dans les paramètres
# autorisation des méthodes abstraites dans les traits
# autorisation des indices négatifs dans les tableaux autoincrémentés
# l'instruction <code>match</code>
# {{wt|opérateur null-safe}} (?->)
# fonction <code>str_contains()</code>
# fonction <code>str_starts_with()</code> et <code>str_ends_with()</code>
# fonction <code>get_debug_type()</code> : il s'agit d'un gettype() plus précis, car il renvoie le nom de la classe au lieu de "object"
# exécution {{wt|juste-à-temps}} (JIT).
Pour PHP 8.1 :
# types d'intersection (X&Y)
# {{wt|énumération}}s
# attributs en lecture seule (readonly).
PHP 8.2 :
# classes en lecture seule
# types null, true et false.
== Sites Web statiques ou dynamiques ==
À l'origine du Web, les sites Web étaient des sites '''statiques''' : constitués d'un ensemble de pages écrites dans le langage HTML. L'information présente sur ces pages était toujours identique et leur mise à jour était particulièrement fastidieuse. Le serveur Web se contentait de diffuser les pages telles quelles à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire : l'utilisateur demandait une page web et le serveur la lui fournissait.
Aujourd'hui la plupart des sites sont '''dynamiques''' : à l'intérieur des pages HTML, le concepteur du site a inséré des programmes.
Ces programmes permettent une plus grande souplesse dans la gestion du site, sa mise à jour et ses fonctionnalités. La possibilité d'insérer des programmes a permis de décupler les fonctionnalités des sites Web.
Pour vous en convaincre prenons quelques exemples :
*Vous voulez écrire un site qui présente une centaine de produits. Vous n'allez pas écrire 100 pages différentes, une pour chacun des produits ! Mais plutôt une seule page (page type) permettant de présenter n'importe quel produit. Cette page va contenir un programme qui interagira avec une base de données. Dans la base de données, seront stockées les informations utiles pour chaque produit : le nom du produit, sa présentation, sa référence, son prix, etc. Le programme aura donc pour rôle d'aller chercher l'information utile dans la base de données et de l'afficher en HTML. De plus, pour ajouter un produit, il suffira d'ajouter un élément dans la base de données. Il est même possible d'avoir des programmes permettant de passer une commande pour vos différents produits !
* Vous voulez diffuser rapidement des informations sur Internet : vous voulez avoir un outil convivial qui vous permet d'ajouter un article, de le modifier, de le supprimer... Vous allez donc écrire un programme permettant de modifier à volonté les différents articles. Un exemple bien connu de ce type de programme est le blog : il s'agit d'un programme permettant à n'importe quel utilisateur non informaticien de gérer ses différents articles.
* L'encyclopédie Wikipédia est réalisée avec un programme (en PHP d'ailleurs) qui permet à chaque utilisateur de créer et de modifier les articles tout en gardant un historique complet des différentes versions des articles.
* les forums de discussion sont des lieux d'échange permettant une interaction étroite entre le serveur et l'utilisateur. Grâce aux programmes qu'ils utilisent, il est possible de se connecter, de consulter les messages des différents forums, d'y répondre. Les modérateurs de ces forums peuvent modifier les messages, les supprimer, interdire un utilisateur indélicat.
Dans chacun des exemples précédents il a été nécessaire d'incorporer un programme à l'intérieur des pages du site afin de réaliser des fonctionnalités de haut niveau. Aujourd'hui la quasi-totalité des sites professionnels sont dynamiques et il est quasi inconcevable de réaliser un site statique. Le langage PHP est un des langages utilisables pour réaliser facilement les sites Web dynamiques, ne serait-ce que parce qu'il est disponible sur la plupart des serveurs hébergeant des sites.
== Possibilités ==
Si vous êtes déjà allés sur un site qui vous demandait de vous connecter, vous avez utilisé un script côté serveur. Ce script était certainement écrit en PHP, en raison de la popularité de ce dernier.
PHP transforme une page statique (fichier [[Programmation HTML|HTML]] par exemple), en une suite d'instructions interprétables par PHP, installée sur un serveur Web comme [[Apache]] - ça peut-être simplement un "Hello World" 50 fois dans une colonne, ou une interaction avec un système de base de données, comme [[MySQL]], fréquemment couplé à PHP.
Mais PHP peut aussi servir à programmer des batchs sans page web aucune.
Les premières versions de PHP étaient faiblement typées, mais depuis la version 7 il est possible de forcer un typage fort dans un fichier en lui ajoutant :
<syntaxhighlight lang=php>
declare(strict_types = 1);
</syntaxhighlight>
hxub75j8ofty9v487fmbvh5t1z22qse
683351
683350
2022-08-13T16:56:56Z
JackPotte
5426
/* PHP 8 */
wikitext
text/x-wiki
<noinclude>{{Programmation PHP}}</noinclude>
== Historique ==
<div style="float:right;">[[Image:Server-side websites programming languages.PNG|thumb|Répartition des langages de programmation côté serveur, des sites Internet le 28 avril 2016.]]</div>
[[w:PHP|PHP]] est un langage de script créé par Rasmus Lerdorf en 1995. Principalement utilisé pour la programmation Web, on pourrait le situer entre les SSI ([[w:Server Side Includes|Server Side Includes]]) et le langage de script [[Programmation Perl|Perl]]. Il est utilisable sur tous les systèmes d'exploitation, donc sur {{w|Windows}}, {{w|MacOS}}, [[Le système d'exploitation GNU-Linux|GNU-Linux]] ou autre Unix commercial, ce qui en fait un langage très portatif.
La sortie de PHP 5 en 2004 a permis au langage d'atteindre une certaine maturité, pour être reconnu comme un serveur d'application à part entière tel que [[Programmation JEE|JEE]] ou [[Programmation .Net|.Net]].
PHP a ensuite acquis une place incontournable dans le développement Web ''Open Source''. Sa popularité vient de sa syntaxe, proche du [[Programmation C|C]], de sa vitesse et de sa simplicité. En 2013, on estime qu'il y a plus de 244 millions de serveurs qui utilisent le langage. En 2016 il est utilisé dans plus de 80 % des sites Internet, et toujours 77,5 % en août 2022<ref>https://w3techs.com/technologies/details/pl-php</ref>.
=== PHP 5 ===
Les nouvelles fonctionnalités du PHP 5 concernent surtout la [[programmation orientée objet]]<ref>https://www.web24.com.au/tutorials/features-of-php5</ref> :
# interfaces
# classes abstraites
# constructeurs et destructeurs de classes (ainsi que d'autres méthodes magiques)
# portée des attributs et méthodes (public, protected, private)
# attributs et {{wt|méthode statique|méthodes statiques}}
# attributs et {{wt|méthode finale|méthodes finaux}}
# {{wt|type hinting}} de classe.
=== PHP 7 ===
Les principales fonctionnalités apportées par PHP 7 (depuis 2015) sont<ref>https://www.php.net/manual/fr/migration70.new-features.php</ref> :
# typage strict par classe
# paramètres typés
# retours de méthode typés
# {{wt|opérateur de coalescence null}} (??)
# {{wt|opérateur vaisseau spatial}} (<=>)
# tableaux de constantes
# {{wt|classe anonyme|classes anonymes}}
# groupage des déclarations (use, avec des accolades).
=== PHP 8 ===
Nouvelles fonctionnalités du PHP 8.0 en 2020<ref>https://kinsta.com/fr/blog/php-8/</ref><ref>https://php.developpez.com/actu/335682/PHP-8-2-est-disponible-en-beta-2-Cette-version-propose-null-true-et-false-en-tant-que-types-autonomes-ainsi-que-des-constantes-dans-les-traits/</ref> :
# {{wt|paramètre nommé|paramètres nommés}}
# types d'union (X|Y)
# propriétés promues (déclarations dans le constructeur)
# autorisation d'une virgule de fin dans les paramètres
# autorisation des méthodes abstraites dans les traits
# autorisation des indices négatifs dans les tableaux autoincrémentés
# l'instruction <code>match</code>
# {{wt|opérateur null-safe}} (?->)
# fonction <code>str_contains()</code>
# fonction <code>str_starts_with()</code> et <code>str_ends_with()</code>
# fonction <code>get_debug_type()</code> : il s'agit d'un <code>gettype()</code> plus précis, car il renvoie le nom de la classe au lieu de "<code>object</code>"
# exécution {{wt|juste-à-temps}} (JIT).
Pour PHP 8.1 :
# types d'intersection (X&Y)
# type de retour <code>never</code>
# {{wt|énumération}}s
# attributs en lecture seule (readonly).
PHP 8.2 :
# classes en lecture seule
# types <code>null</code>, <code>true</code> et <code>false</code>.
== Sites Web statiques ou dynamiques ==
À l'origine du Web, les sites Web étaient des sites '''statiques''' : constitués d'un ensemble de pages écrites dans le langage HTML. L'information présente sur ces pages était toujours identique et leur mise à jour était particulièrement fastidieuse. Le serveur Web se contentait de diffuser les pages telles quelles à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire : l'utilisateur demandait une page web et le serveur la lui fournissait.
Aujourd'hui la plupart des sites sont '''dynamiques''' : à l'intérieur des pages HTML, le concepteur du site a inséré des programmes.
Ces programmes permettent une plus grande souplesse dans la gestion du site, sa mise à jour et ses fonctionnalités. La possibilité d'insérer des programmes a permis de décupler les fonctionnalités des sites Web.
Pour vous en convaincre prenons quelques exemples :
*Vous voulez écrire un site qui présente une centaine de produits. Vous n'allez pas écrire 100 pages différentes, une pour chacun des produits ! Mais plutôt une seule page (page type) permettant de présenter n'importe quel produit. Cette page va contenir un programme qui interagira avec une base de données. Dans la base de données, seront stockées les informations utiles pour chaque produit : le nom du produit, sa présentation, sa référence, son prix, etc. Le programme aura donc pour rôle d'aller chercher l'information utile dans la base de données et de l'afficher en HTML. De plus, pour ajouter un produit, il suffira d'ajouter un élément dans la base de données. Il est même possible d'avoir des programmes permettant de passer une commande pour vos différents produits !
* Vous voulez diffuser rapidement des informations sur Internet : vous voulez avoir un outil convivial qui vous permet d'ajouter un article, de le modifier, de le supprimer... Vous allez donc écrire un programme permettant de modifier à volonté les différents articles. Un exemple bien connu de ce type de programme est le blog : il s'agit d'un programme permettant à n'importe quel utilisateur non informaticien de gérer ses différents articles.
* L'encyclopédie Wikipédia est réalisée avec un programme (en PHP d'ailleurs) qui permet à chaque utilisateur de créer et de modifier les articles tout en gardant un historique complet des différentes versions des articles.
* les forums de discussion sont des lieux d'échange permettant une interaction étroite entre le serveur et l'utilisateur. Grâce aux programmes qu'ils utilisent, il est possible de se connecter, de consulter les messages des différents forums, d'y répondre. Les modérateurs de ces forums peuvent modifier les messages, les supprimer, interdire un utilisateur indélicat.
Dans chacun des exemples précédents il a été nécessaire d'incorporer un programme à l'intérieur des pages du site afin de réaliser des fonctionnalités de haut niveau. Aujourd'hui la quasi-totalité des sites professionnels sont dynamiques et il est quasi inconcevable de réaliser un site statique. Le langage PHP est un des langages utilisables pour réaliser facilement les sites Web dynamiques, ne serait-ce que parce qu'il est disponible sur la plupart des serveurs hébergeant des sites.
== Possibilités ==
Si vous êtes déjà allés sur un site qui vous demandait de vous connecter, vous avez utilisé un script côté serveur. Ce script était certainement écrit en PHP, en raison de la popularité de ce dernier.
PHP transforme une page statique (fichier [[Programmation HTML|HTML]] par exemple), en une suite d'instructions interprétables par PHP, installée sur un serveur Web comme [[Apache]] - ça peut-être simplement un "Hello World" 50 fois dans une colonne, ou une interaction avec un système de base de données, comme [[MySQL]], fréquemment couplé à PHP.
Mais PHP peut aussi servir à programmer des batchs sans page web aucune.
Les premières versions de PHP étaient faiblement typées, mais depuis la version 7 il est possible de forcer un typage fort dans un fichier en lui ajoutant :
<syntaxhighlight lang=php>
declare(strict_types = 1);
</syntaxhighlight>
gkmwxmf8vh12dc73110lvj9kfagltkk
Les suites et séries/Les suites récurrentes (cas général)
0
72188
683357
634091
2022-08-13T22:33:02Z
Slzbg
108600
pluriel
wikitext
text/x-wiki
Dans le premier chapitre, nous avons vu qu'il existe deux manières de décrire une suite, l'une donnant les suites paramétrées et l'autre les suites récurrentes (les deux n'étant pas exclusives). Dans ce chapitre, nous allons parler des suites récurrentes dans le cas général. Celles-ci sont très nombreuses et font clairement partie des plus étudiées, loin devant les simples suites paramétrées. Dans les grandes lignes, il existe deux choses importantes à propos des suites récurrentes : leur trouver une expression paramétrée et étudier leur comportement quand le rang grandit. Trouver leur limite, si elle existe, est aussi intéressant pour certaines suites récurrentes. Pour rappel, les suites récurrentes sont définies pour tout rang n par une fonction de récurrence, comme suit :
: <math>u_n = f(u_{n-1} , u_{n-2} , u_{n-3}, ... , u_2 , u_1 , u_0 )</math>
Comme on le voit, ces suites sont intégralement définies par une fonction, qui détermine la relation de récurrence. Étudier ces suites, c'est simplement étudier la fonction qui les définit : est-elle croissante, décroissante, stationnaire au-delà d'un point, continue, dérivable, linéaire, etc. Par exemple, on peut savoir si la suite est croissante ou décroissante en calculant la dérivée de la fonction f : la suite est croissante si cette dérivée est positive, décroissante si elle est négative, constante si elle est nulle. Malheureusement, il n'existe pas de méthode à tout faire qui puisse traiter toute suite récurrente existante et nous allons donc nous rabattre sur des cas particuliers de suites récurrentes.
==Les concepts de base des suites récurrentes du premier ordre==
Dans ce chapitre et le suivant, nous allons étudier deux cas particuliers : les suites récurrentes linéaires et certaines suites non-linéaires. Nous verrons les suites récurrentes linéaires dans le prochain chapitre. Dans ce chapitre, nous allons nous intéresser aux suites définies par une relation de la forme :
: <math>u_{n+1} = f(u_n)</math>
Dans ce qui suit, la fonction f est choisie pour avoir quelques propriétés qui simplifient l'analyse : elle est supposée continue, éventuellement dérivable.
===Les intervalles stables===
On pourrait croire que choisir une relation de récurrence <math>u_{n+1} = f(u_n)</math> et une valeur <math>u_0</math> suffise à donner une suite. Mais il existe cependant quelques exceptions qui viennent compliquer la situation. Par exemple, regardez l'exemple suivant :
: <math>\begin{cases} u_0 = 2 \\ u_{n+1} = \frac{1}{u_n - 1} \end{cases}</math>
Le terme <math>u_0</math> et <math>u_1</math> existent, mais le terme <math>u_2</math> non ! Il suffit de faire les calculs pour s'en rendre compte.
: <math>u_0 = 2</math>
: <math>u_1 = \frac{1}{2 - 1} = 1</math>
: <math>u_2 = \frac{1}{1 - 1} = \frac{1}{0} \ldots</math>
Le calcul donne une belle division par zéro qui stoppe net la progression de la suite. Le problème est alors que les opérations utilisées pour le calcul de la fonction ne donnent pas un nombre, alors qu'on s'attend à ce que ce soit le cas dans une suite numérique. On pourrait trouver d'autres exemples du même genre , mais pour des suites plus complexes, voire des suites qui ne sont pas numériques. Et bien évidemment, les problèmes peuvent survenir pour d'autres raisons que des divisions par zéro : que pensez-vous d'une suite dont un terme donnerait <math>0^0</math> ? Pour comprendre quand ce genre de problème peut arriver, nous devons introduire la notion d''''intervalle stable'''. Un intervalle stable est défini comme suit :
: Soit une fonction <math>f(x)</math> et un intervalle <math>I</math>, ce dernier est un intervalle stable si <math>f(I) \in I</math>.
Cette définition nous donne une explication assez intuitive des problèmes mentionnés plus haut. Tout vient du fait que la fonction donne un résultat qui n'est ni un entier ni un réel, alors que la suite récurrente associée est censée être une suite d'entiers ou de réels. Pour reprendre l'exemple cité plus haut de la suite définie par <math>u_{n+1} = \frac{1}{u_n - 1}</math>. Le problème est que certains opérandes vont donner une division par zéro : les opérandes de la fonction sont censés être des entiers ou des réels (<math>u_n \in \R</math>), mais ce n'est pas le cas du résultat ! L'intervalle utilisé n'est pas stable, ce qui permet à ces problèmes de se manifester (ou du moins, ces problèmes peuvent potentiellement se manifester, vu que certains opérandes ne posent pas de problèmes).
===Les suites récurrentes associées===
Maintenant, prenons les deux hypothèses suivantes :
* la relation de récurrence est <math>u_{n+1} = f(u_n)</math> ;
* le terme <math>u_0</math> appartient à un intervalle stable par f, que nous noterons I.
Alors une simple relation de récurrence nous permet de dire que la suite existe, qu'elle est définie pour tout entier n. Intuitivement, cela s'explique par le fait qu'à chaque passage par la fonction, le résultat sera bien dans l'intervalle I. Une véritable démonstration demande simplement de faire une démonstration par récurrence triviale. La suite alors définie est appelée la '''suite récurrente associée à f'''.
Si une fonction possède un intervalle stable fini (borné), alors la suite récurrente associée l'est tout autant. Ses termes sont dans l'intervalle stable, par définition, ce qui rend la suite bornée entre la borne inférieure et supérieure de l'intervalle. Par exemple, si une fonction <math>f</math> a [0,1] pour intervalle stable, on sait que la suite récurrente associée est bornée entre 0 et 1. Là où les choses deviennent intéressantes, c'est que cette propriété évidente permet de déterminer rapidement si la suite associée converge ou non. Le cas le plus simple est celui où la suite associée est monotone (croissante ou décroissante). Dans ce cas, on sait que la limite va converger et on peut calculer sa limite facilement : c'est tout simplement la borne supérieure ou inférieure de l'intervalle (selon que la suite est croissante ou décroissante). Aussi, ne vous étonnez pas si beaucoup de démonstrations sur les suites récurrentes utilisent les théorèmes de convergence des fonctions monotones.
===Les points fixes d'une suite===
Ce qui va nous intéresser chez ces suites est l'étude des '''points fixes''' de la fonction f. Par point fixe on entend un nombre x tel que :
: <math>x = f(x)</math>
[[File:Fixed point example.svg|vignette|Exemple de fonction avec plusieurs points fixes. On voit que son graphe coupe la ligne identité en plusieurs points fixes.]]
Évidemment, toutes les fonctions n'ont pas de point fixe, bien que cela soit quand même assez courant.
On peut trouver les points fixes d'une fonction en regardant son graphe. Formellement, les points fixes sont ceux où le graphe de la fonction <math>y = f(x)</math> coupe la droite identité (<math>y = x</math>).
Évidemment, toutes les fonctions n'ont pas de point fixe et il n'y a alors aucun point d'intersection entre le graphe de la fonction et la droite identité. À l'inverse, une fonction peut aussi avoir plusieurs points d'intersection, et donc plusieurs points fixes, comme le montre le graphe ci-contre. On peut se demander si les fonctions admettant au moins un point fixe sont courantes ou non. Eh bien c'est le cas : toute fonction ''continue'' définie sur un intervalle stable admet au moins un point fixe. Cette propriété capture un grand nombre de fonctions, y compris des fonctions courantes comme les puissances, les logarithmes, l'exponentielle, etc.
{{démonstration | contenu =
On part d'une fonction <math>f(x)</math> définie sur un intervalle stable <math>I = [a;b]</math>.
On souhaite démontrer qu'il existe un point pour lequel <math>x = f(x)</math>, ce qui se reformule comme suit : <math>x - f(x) = 0</math>.
Considérons donc la fonction <math>g(x) = x - f(x)</math>. On déduit facilement que la fonction est continue sur l'intervalle <math>I = [a;b]</math>, cette propriété étant héritée de la fonction <math>f(x)</math>.
Maintenant, regardons ce qui se passe aux bords <math>a</math> et <math>b</math> de l'intervalle. Vu que <math>g(a) \in I</math> et <math>g(b) \in I</math>, on a :
: <math>g(a) = a - f(a) \leq 0</math>
: <math>g(b) = b - f(b) \geq 0</math>
D’après le théorème des valeurs intermédiaires, on déduit que <math>g(x)</math> doit s'annuler en une valeur précise de <math>x</math>. Ce qu'il fallait démontrer.}}
===Les points périodiques d'une suite===
Les '''points périodiques''' sont une sorte de généralisation des points fixes, la différence étant que la fonction est appliquée plusieurs fois au lieu d'une seule pour les points fixes. Par exemple, prenons le cas d'un point périodique pour lequel une fonction est appliquée deux fois. On a alors :
: <math>x = f(f((x))</math>
En toute généralité, un point périodique est une valeur x telle que :
: <math>x = f_n(x)</math>, où <math>f_n(x) = f(f(f(f(f(f(...(x))))))</math> avec f appliquée sur elle-même <math>n</math> fois.
Si <math>f</math> possède un ou plusieurs points périodiques, alors la suite associée appartient à une classe de suite particulière : les suites périodiques ou quasi-périodiques. Si on omet les suites constantes ou stationnaires, aucune suite périodique ou ultimement périodique n'a de point fixe vers lequel elles peuvent converger. Ce qui signifie que toute suite (ultimement) périodique de période > 1 diverge.
==La convergence d'une suite récurrente associée==
La présence de points fixes fait que la suite peut devenir stationnaire (constante au-delà d'un certain rang). Il suffit qu'il existe un rang <math>n</math> tel que <math>u_n = x</math> : tous les rangs supérieurs donneront une sous-suite stationnaire. Mais ce qui est intéressant est que cela permet de déterminer la limite de la suite si celle-ci converge. En effet, on peut démontrer que la limite d'une suite récurrente est aussi un cas particulier de point fixe.
===La limite, si elle existe, est un point fixe===
Si une suite récurrente associée possède une limite <math>l</math>, alors cette limite est un des points fixes de f. En clair, on a : <math>l = f(l)</math>.
{{démonstration | contenu =
Partons de la relation de récurrence d'une suite, définie comme suit :
: <math>u_{n+1} = f(u_n)</math>
Passons à la limite quand <math>n</math> tend vers l'infini :
: <math>\lim_{n \rightarrow \infty} u_{n+1} = \lim_{n \rightarrow \infty} f(u_n)</math>
On peut alors écrire :
: <math>\lim_{n \rightarrow \infty} u_{n+1} = f \left( \lim_{n \rightarrow \infty} u_n \right)</math>
Les deux limites sont égales à la limite de la suite, par définition. Si on note <math>l</math> la limite de la suite, on a :
: <math>l = f(l)</math>
Ce qui nous dit que la limite <math>l</math> est bien un point fixe.}}
Faisons quelques remarques, histoire de bien comprendre la portée de ce résultat.
# On doit s'assurer que la suite converge pour utiliser ce théorème. Il existe en effet des suites qui divergent, mais qui admettent quand même un ou plusieurs points fixes. Trouver les points fixes d'une fonction ne suffisent pas à dire que la suite récurrente associée converge vers ce point fixe : il faut encore prouver que la suite converge effectivement. Dit autrement : si l'existence d'un point fixe est une condition nécessaire, mais pas suffisante pour la convergence. Par contre, on sait que la réciproque est vraie : si la fonction <math>f(x)</math> n'a pas de point fixe, alors la suite récurrente associée ne converge pas. L'inexistence d'un point fixe implique ''de facto'' la divergence. Pour donner un exemple, la fonction <math>f(x) = \sqrt{1 + x^2}</math> n'a pas de point fixe, ce qui fait que toute suite définie par <math>u_{n+1} = \sqrt{1 + {u_n}^2}</math> ne converge pas.
# Le point fixe peut ne s'exprimer que pour certains <math>u_0</math> bien précis, qui sont les seuls à faire converger la fonction. Par exemple, la suite définie par <math>u_{n+1} = \frac{1}{u_n}</math> ne converge que si le premier terme vaut 1 et diverge systématiquement sinon.
# Un autre problème est le cas où la fonction f a plusieurs points fixes. Dans ce cas, on sait que la limite de la suite est un de ces points fixes, mais on ne sait pas lequel. Pour en donner un exemple, prenons la suite définie par la relation suivante (un exemple de suite logistique, dont nous reparlerons plus tard) : <math>u_{n+1} = \frac{3}{2} u_n (1 - u_n)</math>. Cette suite possède deux points fixes : 0 et 1/3. La limite, si elle existe, ne peut être qu'un de ces deux points fixes, mais on ne sait pas l'avance lequel. Pour cet exemple, la suite converge effectivement et sa limite est de 1/3, mais l'analyse des points fixes seule ne nous permet pas de le déduire.
Les points précédents sont assez importants et font que la découverte d'un point fixe ne suffit pas à déterminer la limite d'une suite récurrente. Il faut d'abord s'assurer que la suite converge effectivement, avant de déterminer quel point fixe est le bon. Dans les démonstrations qui suivront, nous aurons à respecter ces deux étapes, dans cet ordre. D'abord on prouvera la convergence, avant de dire quel est le point fixe qui sert de limite. Pour cette seconde étape, il arrivera qu'on prouve que la fonction ne dispose que d'un seul point fixe, ce qui rend la tâche assez aisée.
===Les différents types de points fixes===
On peut classer les points fixes d'une fonction en deux types, selon la manière dont la limite converge vers ce point fixe.
* Avec un '''point fixe répulsif''', la suite ne converge vers un point fixe <math>l</math> que si elle est constante et égale à <math>l</math> au-delà d'un certain rang. En clair, la suite doit non seulement être stationnaire, mais les termes de sa portion constante doivent être égaux à <math>l</math>.
* Avec un '''point fixe attractif''', ce n'est pas nécessairement le cas : la suite peut converger vers <math>l</math> progressivement, sans pour autant être stationnaire. Un point attractif <math>a</math> cause la convergence de toutes les suites construites avec la fonction f, sous condition que le premier terme soit suffisamment proche de <math>a</math>.
Ils se distinguent par la valeur absolue de la dérivée de la fonction <math>f</math>, <math>| f'(x) |</math>, selon qu'elle est inférieure, supérieure ou égale à 1.
* Si <math>| f'(x) | > 1</math>, les points fixes de la suite sont répulsifs ;
* Si <math>| f'(x) | < 1</math>, les points fixes de la suite sont attractifs ;
* Si <math>| f'(x) | = 1</math>, la suite peut converger ou non vers ses points fixes, qui peuvent être autant attractifs que répulsifs.
==Un exemple : la suite de Héron==
Dans la suite de ce chapitre, nous allons étudier quelques exemples emblématiques de suites récurrentes de premier ordre. Pour commencer, nous allons étudier un exemple classique de suite récurrente : la '''suite de Héron''', définie par :
: <math>u_{n+1} = \frac{1}{2} \left( u_n + \frac{A}{u_n} \right)</math>, avec <math>A</math> un nombre constant positif.
Voici une autre formulation équivalente, qui nous sera utile par la suite :
: <math>u_{n+1} = \frac{1}{2} \frac{u_n^2 + A}{u_n} = \frac{u_n^2 + A}{2 u_n}</math>
Le premier terme <math>u_0</math> est choisi plus ou moins arbitrairement, mais cela ne change pas grand-chose à sa limite. Dans ce qui va suivre, nous allons étudier la convergence de cette suite et démontrer qu'elle converge vers <math>\sqrt{A}</math>. Nous allons utiliser pour cela quelques arguments, dont l'étude du point fixe de cette suite.
Avant toute chose, on peut donner l'intuition qui se cache derrière cette suite, expliquer pourquoi elle converge vers <math>\sqrt{A}</math>. Pour comprendre pourquoi, imaginons que l'on choisisse un premier terme <math>u_0</math> tel que <math>u_0 < \sqrt{A}</math>. Dans ce cas, le terme <math>\frac{A}{u_n}</math> sera tel que : <math>\frac{A}{u_n} > \sqrt{A}</math>. Le premier terme est donc inférieur à la racine carrée, tandis que le second est supérieur. On peut appliquer le même raisonnement avec un premier terme tel que <math>u_0 > \sqrt{A}</math>. Pour obtenir une meilleure approximation de <math>\sqrt{A}</math>, on peut prendre la moyenne des deux termes. C'est ce que fait la relation de récurrence : c'est la moyenne de deux termes <math>u_n</math> et <math>\frac{A}{u_n}</math>. Il suffit ensuite d'itérer ce calcul de moyenne avec l'approximation obtenue, le raisonnement précédent valant pour toutes les étapes. Ce raisonnement intuitif ne vaut cependant pas une démonstration en bonne et due forme, chose que nous allons faire dans ce qui suit.
Avant d'utiliser les points fixes de cette suite, nous devons avaoir vérifier si celle-ci converge effectivement. On pourrait imaginer un cas où la suite ne converge pas, ce qui rendrait l'utilisation du point fixe inutile. Il nous faut donc démontrer que la suite de Héron converge, avant de crier victoire. Heureusement, cette démonstration est très simple, vu que la suite est monotone. On peut alors utiliser les théorèmes vus dans le chapitre sur les limites pour dire si elle converge ou non.
===Preuve de la monotonie de la suite de Héron===
Pour commencer, vérifions si la suite est croissante, décroissante ou constante. Pour cela, calculons simplement le terme <math>u_{n+1} - u_n</math> :
: <math>u_{n+1} - u_n = \frac{1}{2} \left( u_n + \frac{A}{u_n} \right) - u_n</math>
Développons et réarrangeons les termes :
: <math>u_{n+1} - u_n = \left[ \frac{1}{2} u_n - u_n \right] + \frac{1}{2} \frac{A}{u_n}</math>
Simplifions :
: <math>u_{n+1} - u_n = \frac{1}{2} \frac{A}{u_n} - \frac{1}{2} u_n</math>
: <math>u_{n+1} - u_n = \frac{1}{2} \left( \frac{A}{u_n} - u_n \right)</math>
Multiplions par <math>u_n</math> :
: <math>u_{n+1} - u_n = \frac{1}{2} \left( A - {u_n}^2 \right)</math>
Le terme de droite est nul si <math>u_n = \sqrt{A}</math>, positif quand <math>u_n < \sqrt{A}</math> et négatif avec <math>u_n > \sqrt{A}</math>. La suite est donc constante si <math>u_n = \sqrt{A}</math>, croissante quand <math>u_n < \sqrt{A}</math> et décroissante avec <math>u_n > \sqrt{A}</math>. Reste enfin à trouver des minorants et des majorants à la suite.
===Les minorants et majorants de la suite===
Pour finir la démonstration, il nous reste à trouver des minorants et des majorants à la suite. Il se trouve que, quel que soit le premier terme, tous les termes suivants de la suite seront tels que <math>x_n \geq \sqrt{A}</math>, ou encore <math>x_n - \sqrt{A} \geq 0</math>. Pour simplifier les calculs, nous allons calculer le carré de l'inégalité précédente, à savoir :
: <math>x_{n+1}^{2} - A</math>
On remplace <math>x_{n+1}</math> par sa valeur déterminée par récurrence. Cela signifie que les calculs qui vont suivre ne seront valables qu'au-delà du premier rang, le premier terme n'étant pas concerné.
: <math>\left(\frac{u_n^2 + A}{2 u_n}\right)^{2} - A</math>
Développons le terme au carré :
: <math>\left(\frac{u_n^4 + A^{2} + 2 A u_n^{2}}{4 u_n^{2}}\right) - A</math>
Mettons au même dénominateur :
: <math>\left(\frac{u_n^4 + A^{2} + 2 A u_n^{2}}{4 u_n^{2}}\right) - \frac{4 u_n^{2} A}{4 u_n^{2}}</math>
Factorisons :
: <math>\frac{u_n^4 + A^{2} - 2 A u_n^{2}}{4 u_n^{2}}</math>
En faisans appel à une identité remarquable, on trouve :
: <math>\left(\frac{u_n^2 - A}{2 u_n}\right)^2</math>
Vu que cette expression est un carré, elle est toujours positive ou nulle. Ce qu'il fallait démontrer.
: <math>\left(\frac{u_n^2 - A}{2 u_n}\right)^2 \geq 0</math>
Cette inégalité n'étant qu'une reformulation de l'inégalité <math>x_n - \sqrt{A} \geq 0</math>, on peut en déduire que pour tout rang au-delà du premier terme : <math>x_n \geq \sqrt{A}</math>. La suite est donc minorée par <math>\sqrt{A}</math> au-delà du premier rang. Sachant qu'on a démontré au-dessus que la suite est alors décroissante, on en déduit qu'elle converge. La suite de Héron converge donc vers la racine carrée du nombre A.
===Le point fixe de la suite de Héron===
D'après ce qu'on a vu en introduction, on sait que la limite de la suite de Héron est un point fixe de la fonction de récurrence. Calculons donc la valeur de ce point fixe, définit par :
: <math>l = \frac{1}{2} \left( l + \frac{A}{l} \right)</math>
Multiplions par <math>2 l</math> :
: <math>2 l^2 = l^2 + A</math>
En isolant A et en prenant la racine carrée, on trouve :
: <math>l = \sqrt{A}</math>
Ce résultat nous dit que si cette suite converge, elle converge vers <math>\sqrt{A}</math>.
<noinclude>
{{NavChapitre | book=Les suites et séries
| prev=Les suites récurrentes linéaires
| prevText=Les suites récurrentes linéaires
| next=Les suites récurrentes k-contractantes
| nextText=Les suites récurrentes k-contractantes
}}{{autocat}}
</noinclude>
sk12xh1nuk0gp7ayxveb6fqfscxnpvi
Auto-éditer un wikilivre/addappendix/documents et directives
0
77798
683358
676356
2022-08-13T22:33:28Z
Slzbg
108600
pluriel
wikitext
text/x-wiki
== Généralités ==
* Les '''messages''' et les '''manuels''' doivent être écrits en anglais puis traduits dans d'autres langues.
== Directives libres de programmation ==
:<span style="font-size:66%">Directive de programmation établie par Goelette Cardabela et J Clara . Janvier 2022</span>
: y-a-t-il une contradiction entre ''directive'' et ''libre'' ?
#Le langage de programmation est le shell '''BASH non compilé''' afin d'être accessible à la compréhension.
#L'indentation des lignes de scripts est à la discrétion des programmeurs.
#Les fichiers de commandes pour '''sbin/''' pourront éventuellement être compilés avec '''shc''' sans l'extension '''.sh.x'''
#Les fichiers sources bash auront l'extension '''.sh'''
#Les fichiers exécutables seront obtenus par extraction du code shell et les ''messages'' seront extraits en fichiers '''.pot'''
#Les fichiers '''.pot''' devront rester à la disposition des mainteneurs et des utilisateurs pour assurer les traductions dans d'autres langues sans qu'il soit nécessaire de mettre le paquet à jour. Ces fichiers '''.pot''' seront disponibles dans le répertoire '''/usr/share/doc/addapendix'''
#Les scripts doivent être largement documentés en anglais pour assurer la maintenance universelle.
#Les organigrammes commencent par '''#O''' en première colonne.
#Les commentaires pour les programmeurs commencent par '''#P''' en première colonne.
#Les points particulier d'attention commencent par '''#w''' en première colonne
#Les entêtes commencent par '''#H''' en première colonne
Convention d'entêtes :
<pre style="color:black; background-color:#FFFF00;">
#!/bin/bash
#H Header doc
#H -------------------------------
#H File : <source>/<file>.sh
#H Syntax : <executable> [ ? | -v ]
#H Created : AAMMDD by <wikibooks user>
#H Updated : AAMMDD by ... for
#O Organizational chart
#O -------------------------------
#P Programmers notes
#P -------------------------------
VERSION=AAMMDD
TEXTDOMAIN=<executable>
TEXTDOMAINDIR="/usr/share/locale"
export TEXTDOMAINDIR
#P . gettext for translation
. gettext.sh
#O Script begin here
....
#O Script end
</pre>
; Encodage du programme principal:<span style="font-size:66%">Directive d'encodage établie par J Clara . Janvier 2022</span>
#Le logiciel addappendix n'aura qu'un seul programme principal contrairement aux logiciels ''Annexer'' et ''Add_appendix'' qui disposent de plusieurs points d'entrée dont la principale est ''annex''.
#La ligne de commandes contiendra uniquement le lien vers le livre compilé et les deux options « ? » et « -v » la commande sera détaillée dans le manuel.
#Le script addappendix.sh pourra être constitué de parties des scripts déjà éprouvés du logiciel ''Add_appendix.''
#Les fichiers qui ne contiennent pas de texte traductible avec ''gettext'' pourront être inclus dans le script ''addappendix.sh'' avec la directive « source » ou « . ». Ces scripts devront être accessibles dans la librairie addappendix.lib (/usr/lib/addappendix.lib ou /usr/local/lib/addapendix.lib) selon la directive d'installation du paquet.
#Les scripts seront éprouvés dans le répertoire des tests puis assemblés progressivement en un seul. Noter que les scripts ont déjà été éprouves avec ''Add_apendix.''
== Documents pour l'utilisateur ==
=== manuel wiki ===
* Ce manuel est commun à la série des '''''logiciels Add_appendix''''' (annexer, annex, add_appendix, addappendix)
:{{fr}}: [[Auto-éditer_un_wikilivre/addappendix/manuel_Add_appendix_fr|Manuels Wiki pour les logiciels Add_appendix]]
:{{en}}: [[Auto-éditer_un_wikilivre/addappendix/manual_Add_appendix_en|Wiki manuals for Add_appendix softwares]]
=== manuel traditionnel ===
==== code du manuel pour annex (Dec 2021) ====
{{en cours}}
* Le code comprimé addappendix.1.gz en anglais doit être placé dans le répertoire par défaut /usr/share/man/man1/.
* Le code comprimé addappendix.1.gz traduit en français doit être placé dans /usr/share/man/fr.UTF-8/man1/.
<pre>
.\" Création par Utilisateur:Goelette_Cardabela pour wikilivres le 26 juin 2020
.\" Vérifications UTF-8 par Clara le 6 novembre 2012
.\" Mise à jour par GC le 28 août 2021 pour Add_appendix
.\" Mise à jour par GC le 14 décembre 2021 Retouches
.\" .
.\" FILE manuel annex_fr.1 to edit in UTF-8 format
.TH annex 1 "14 Décembre 2021"
.SH NOM
annex \- Crée la page Annexe des livres de wikilivres.
.SH RÉSUMÉ
\fBannex\fP < \fBnom du livre | ? \fP > [ -v ] [ -pb | -pc ]
.SH DESCRIPTION
\fBannex\fP permet de créer les pages \fIAnnexe\fP des livres de Wikilivres.
.SH PRÉ-REQUIS
Les répertoires de l'application doivent être créés grâce à la commande users_install_annex.sh
.TP
Le logiciel mkd doit être installé: https://en.wikipedia.org/wiki/Mkd_(software)
.TP
Le répertoire du livre doit être créé et contenir les wikicodes de la compilation ou du sommaire ou encore du contenu du livre. \
Pour les livres de wikibooks anglais et français ce travail peut être simplifié grâce à la commande pre-annex <url> complète du livre ou de la compilation. \
\fIannexer\fP et \fIaddappendix\fP sont aussi des commandes simplifiées
.SS Options
.TP
\fB ?\fR
Affiche la syntaxe de la commande.
.TP
\fB-v\fR
Mode bavard (Verbose mode)
.TP
\fB-pb\fR
Crée une version personnalisée du classement des images avec les données du serveur Mediawiki \fIWikilivres\fP.
.TP
\fB-pc\fR
Crée une version personnalisée du classement des images avec les données du serveur Mediawiki \fICommons\fP
.SH "EXIT STATUS"
L'application renvoie normalement la valeur 0 et une valeur différente en cas d'erreur
.SH ERREURS
Les erreurs les plus fréquentes peuvent être causées par des débordement de la capacité de la ligne de commandes. \
Il peut être intéressant, à titre exceptionnel, de créer une page à la racine du serveur et de créer une redirection \
vers une page plus longue, afin de débloquer la ligne de commande. Il serait plus judicieux de renommer le nom de\
la page trop longue vers la racine du site Wikibooks avec un nom plus court.
.SH FICHIERS
Il existe de nombreux fichiers dont les versions peuvent changer lorsque des améliorations sont souhaitées. \
Reportez votre attention, pour cette version française vers la section 19 :\
\fIhttps://fr.wikibooks.org/w/index.php?title=Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée)§ion=19\fP
.SH VERSIONS
Les versions sont notée AAMMJJ - AA pour année, MM pour mois, JJ pour jour, de la dernière modification.
.SH HISTOIRE
.PP
2020 - Début de l'histoire avec les confinements au domicile à cause du virus COVID-19 :
\fIhttps://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre\fP
2021 - Internationalisation des codes et des messages avec les versions \fIAdd_appendix\fP et \fIAnnexer\fP
.SH TELECHARGEMENTS
.PP
https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée)#src.orig_en_français
.SH AUTEURS
.PP
Manuel créé par le wikipédien : Goelette Cardabela
.SH NOTES
.PP
La version 211214 de Add_appendix est une version bêta
.SH BUGS
.PP
Il est possible de créer une discussion sur l'ensemble du projet et également pour chaque article de ce logiciel, \
il suffit se connecter sur wikibooks : https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée) \
et de consulter la page de discussion de l'article concerné.
.SH EXEMPLES
Exécuter dans le répertoire Add_appendix/bin :
.TP
"./pre-annex https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_sa_fleur_de_sel"
.TP
"./annex Faire_sa_fleur_de_sel -pb"
.TP
Consulter le fichier "Faire_sa_fleur_de_sel.appendix"
.SH VOIR AUSSI
https://fr.wikibooks.org/wiki/Goélette_Cardabela/Référencement_manuel
</pre>
==== aperçu du manuel annex (Dec 2021) ====
<pre style="color:white;background-color:black;height:297mm; width:180mm; align:center;>
annex(1) General Commands Manual annex(1)
NOM
annex - Crée la page Annexe des livres de wikilivres.
RÉSUMÉ
annex < nom du livre | ? > [ -v ] [ -pb | -pc ]
DESCRIPTION
annex permet de créer les pages Annexe des livres de Wikilivres.
PRÉ-REQUIS
Les répertoires de l'application doivent être créés grâce à la com‐
mande users_install_annex.sh
Le logiciel mkd doit être installé:
https://en.wikipedia.org/wiki/Mkd_(software)
Le répertoire du livre doit être créé et contenir les wikicodes de la
compilation ou du sommaire ou encore du contenu du livre. Pour les
livres de wikibooks anglais et français ce travail peut être simplifié
grâce à la commande pre-annex <url> complète du livre ou de la compi‐
lation. annexer et addappendix sont aussi des commandes simplifiées
Options
? Affiche la syntaxe de la commande.
-v Mode bavard (Verbose mode)
-pb Crée une version personnalisée du classement des images avec
les données du serveur Mediawiki Wikilivres.
-pc Crée une version personnalisée du classement des images avec
les données du serveur Mediawiki Commons
EXIT STATUS
L'application renvoie normalement la valeur 0 et une valeur différente
en cas d'erreur
ERREURS
Les erreurs les plus fréquentes peuvent être causées par des déborde‐
ment de la capacité de la ligne de commandes. Il peut être
intéressant, à titre exceptionnel, de créer une page à la racine du
serveur et de créer une redirection vers une page plus longue, afin de
débloquer la ligne de commande. Il serait plus judicieux de renommer
le nom dela page trop longue vers la racine du site Wikibooks avec un
nom plus court.
FICHIERS
Il existe de nombreux fichiers dont les versions peuvent changer
lorsque des améliorations sont souhaitées. Reportez votre attention,
pour cette version française vers la section 19 :https://fr.wiki‐
books.org/w/index.php?title=Auto-éditer_un_wikilivre/Annexer_(Ver‐
sion_internationalisée)§ion=19
VERSIONS
Les versions sont notée AAMMJJ - AA pour année, MM pour mois, JJ pour
jour, de la dernière modification.
HISTOIRE
2020 - Début de l'histoire avec les confinements au domicile à cause
du virus COVID-19 : https://fr.wikibooks.org/wiki/Auto-éditer_un_wik‐
ilivre 2021 - Internationalisation des codes et des messages avec les
versions Add_appendix et Annexer
TELECHARGEMENTS
https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Ver‐
sion_internationalisée)#src.orig_en_français
AUTEURS
Manuel créé par le wikipédien : Goelette Cardabela
NOTES
La version 211214 de Add_appendix est une version bêta
BUGS
Il est possible de créer une discussion sur l'ensemble du projet et
également pour chaque article de ce logiciel, il suffit se connecter
sur wikibooks : https://fr.wikibooks.org/wiki/Auto-éditer_un_wik‐
ilivre/Annexer_(Version_internationalisée) et de consulter la page de
discussion de l'article concerné.
EXEMPLES
Exécuter dans le répertoire Add_appendix/bin :
"./pre-annex https://fr.wikibooks.org/wiki/Wikilivres:Compila‐
tions/Faire_sa_fleur_de_sel"
"./annex Faire_sa_fleur_de_sel -pb"
Consulter le fichier "Faire_sa_fleur_de_sel.appendix"
VOIR AUSSI
https://fr.wikibooks.org/wiki/Goélette_Cardabela/Référencement_manuel
14 Décembre 2021 annex(1)
</pre>
=== manuels texte ===
;Ces manuels se trouvent dans /usr/share/doc/addapendix/:addapendix_de.txt, addappendix_en.txt, addappendix_fr.txt
: Si le manuel existe dans d'autres langues on peut les créer par la commande:
man addappendix > addappendix_<lang>.txt
=== manuel html ===
;Ces manuels se trouvent dans /usr/share/doc/addapendix/html/:addapendix_de.html, addappendix_en.html, addappendix_fr.html
: Ces manuels sont généralement accessibles par un fichier d'index ou par un alias (voir: ''comment créer un alias'')
: Si le manuel existe dans d'autres langues on peut utiliser la commande''' man2html''' (voir le manuel: ''man man2html'')
{{Autocat}}
[[Catégorie:Addappendix (livre)]]
nw3lnyv4ky50n9fqjqtg8v72tgqtyaq
Mathc initiation/Fichiers h : c72
0
77873
683352
683330
2022-08-13T20:42:29Z
Xhungab
23827
modification mineure
wikitext
text/x-wiki
[[Catégorie:Mathc initiation (livre)]]
:
[[Mathc initiation/a08| Sommaire]]
:
----{{Partie{{{type|}}}|Changement de variables|fond={{{fond|}}<nowiki>}</nowiki>}}
:
En mathématiques, et plus précisément en analyse, l’intégration par changement de variable est un procédé d'intégration qui consiste à considérer une nouvelle variable d'intégration, pour remplacer une fonction de la variable d'intégration initiale.[https://fr.wikipedia.org/wiki/Int%C3%A9gration_par_changement_de_variable]
:
<br>
Copier la bibliothèque dans votre répertoire de travail :
* [[Mathc initiation/Fichiers h : c72a1|x_hfile.h ............ Déclaration des fichiers h]]
* [[Mathc initiation/Fichiers h : c72a2|x_def.h .............. Les utilitaires]]
* [[Mathc initiation/Fichiers h : c72a3|x_symp.h ......... L'algorithme pour la méthode sympson]]
:
* Méthode standard :
** [[Mathc initiation/Fichiers h : c72b05|fe.h ]] <................> [[Mathc initiation/Fichiers c : c72c05|c1e.c : ..... "e**(ax)"]]
** [[Mathc initiation/Fichiers h : c72b10|fh.h ]] <................> [[Mathc initiation/Fichiers c : c72c10|c1h.c : ..... "sec(ln(x)) tan(ln(x)) 1./x"]]
** [[Mathc initiation/Fichiers h : c72b11|fi.h ]] <................> [[Mathc initiation/Fichiers c : c72c11|c1i.c : ..... "(4*x+5) / (1+(4*x+5)**2)"]]
** [[Mathc initiation/Fichiers h : c72b12|fj.h ]] <................> [[Mathc initiation/Fichiers c : c72c12|c1j.c : ..... "(4*x+5) / sqrt(1+(4*x+5)**2)"]]
** .
** Études de : [[Mathc initiation/Fichiers c : c72c07|1 / (x ln(x))]] --*-- [[Mathc initiation/Fichiers c : c72c08|ln(x) / x]]
* Multiplier par 1 :
** [[Mathc initiation/Fichiers h : c72b06|ff.h ]] <................> [[Mathc initiation/Fichiers c : c72c06|c1f.c : ..... "-1 / (e**x+1)"]]
* Ajouter 0 :
** [[Mathc initiation/Fichiers h : c72b09|fg.h ]] <................> [[Mathc initiation/Fichiers c : c72c09|c1g.c : ..... "e**(3*x) / (e**x+1)"]]
* Méthode : u = x + a ==> x = u - a :
** [[Mathc initiation/Fichiers h : c72b01|fa.h ]] <................> [[Mathc initiation/Fichiers c : c72c01|c1a.c : ..... "(x+6) (x+5)**(1/2)"]]
** [[Mathc initiation/Fichiers h : c72b02|fb.h ]] <................> [[Mathc initiation/Fichiers c : c72c02|c1b.c : ..... "(x+6) / (x+5)**(1/2)"]]
**.
** [[Mathc initiation/Fichiers h : c72b03|fc.h ]] <................> [[Mathc initiation/Fichiers c : c72c03|c1c.c : ..... "(x**3) (x**2+5)**(1/2)"]]
**.
** [[Mathc initiation/Fichiers h : c72b04|fd.h ]] <................> [[Mathc initiation/Fichiers c : c72c04|c1d.c : ..... "4*x / (2*x-1)**(1/2)"]]
:
----
{{AutoCat}}
8uj8omxhwivbqke0prgqb20r587wzqz
683356
683352
2022-08-13T21:01:39Z
Xhungab
23827
modification mineure
wikitext
text/x-wiki
[[Catégorie:Mathc initiation (livre)]]
:
[[Mathc initiation/a08| Sommaire]]
:
----{{Partie{{{type|}}}|Changement de variables|fond={{{fond|}}<nowiki>}</nowiki>}}
:
En mathématiques, et plus précisément en analyse, l’intégration par changement de variable est un procédé d'intégration qui consiste à considérer une nouvelle variable d'intégration, pour remplacer une fonction de la variable d'intégration initiale.[https://fr.wikipedia.org/wiki/Int%C3%A9gration_par_changement_de_variable]
:
<br>
Copier la bibliothèque dans votre répertoire de travail :
* [[Mathc initiation/Fichiers h : c72a1|x_hfile.h ............ Déclaration des fichiers h]]
* [[Mathc initiation/Fichiers h : c72a2|x_def.h .............. Les utilitaires]]
* [[Mathc initiation/Fichiers h : c72a3|x_symp.h ......... L'algorithme pour la méthode sympson]]
:
* Méthode standard :
** [[Mathc initiation/Fichiers h : c72b05|fe.h ]] <................> [[Mathc initiation/Fichiers c : c72c05|c1e.c : ..... "e**(ax)"]]
** [[Mathc initiation/Fichiers h : c72b10|fh.h ]] <................> [[Mathc initiation/Fichiers c : c72c10|c1h.c : ..... "sec(ln(x)) tan(ln(x)) 1./x"]]
**.
** [[Mathc initiation/Fichiers h : c72b11|fi.h ]] <................> [[Mathc initiation/Fichiers c : c72c11|c1i.c : ..... "(4*x+5) / (1+(4*x+5)**2)"]]
** [[Mathc initiation/Fichiers h : c72b12|fj.h ]] <................> [[Mathc initiation/Fichiers c : c72c12|c1j.c : ..... "(4*x+5) / sqrt(1+(4*x+5)**2)"]]
** .
** Études de : [[Mathc initiation/Fichiers c : c72c07|1 / (x ln(x))]] --*-- [[Mathc initiation/Fichiers c : c72c08|ln(x) / x]]
* Multiplier par 1 :
** [[Mathc initiation/Fichiers h : c72b06|ff.h ]] <................> [[Mathc initiation/Fichiers c : c72c06|c1f.c : ..... "-1 / (e**x+1)"]]
* Ajouter 0 :
** [[Mathc initiation/Fichiers h : c72b09|fg.h ]] <................> [[Mathc initiation/Fichiers c : c72c09|c1g.c : ..... "e**(3*x) / (e**x+1)"]]
* Méthode : u = x + a ==> x = u - a :
** [[Mathc initiation/Fichiers h : c72b01|fa.h ]] <................> [[Mathc initiation/Fichiers c : c72c01|c1a.c : ..... "(x+6) (x+5)**(1/2)"]]
** [[Mathc initiation/Fichiers h : c72b02|fb.h ]] <................> [[Mathc initiation/Fichiers c : c72c02|c1b.c : ..... "(x+6) / (x+5)**(1/2)"]]
**.
** [[Mathc initiation/Fichiers h : c72b03|fc.h ]] <................> [[Mathc initiation/Fichiers c : c72c03|c1c.c : ..... "(x**3) (x**2+5)**(1/2)"]]
**.
** [[Mathc initiation/Fichiers h : c72b04|fd.h ]] <................> [[Mathc initiation/Fichiers c : c72c04|c1d.c : ..... "4*x / (2*x-1)**(1/2)"]]
:
----
{{AutoCat}}
24y1u546rn21kr5xgz8kgv5r698p1dd
Introduction à LilyPond/Livre-imprimable-avant
0
78843
683359
683326
2022-08-14T01:00:46Z
JackBot
14683
Formatage, [[Spécial:Pages non catégorisées]]
wikitext
text/x-wiki
{| class="flexible"
| [[Fichier:LilyPond-logo-with-music.png|class=transparent|200px]]
|
'''GNU'''<br>
'''LilyPond'''
Réalisez des partitions irréprochables
|}
{{:Introduction à LilyPond/Présentation}}
{{AutoCat}}
6qw38s2l3qi1ps6fltphaj5eln2ggl4
Mathc initiation/Fichiers h : c72b12
0
78846
683353
2022-08-13T20:42:46Z
Xhungab
23827
modification mineure
wikitext
text/x-wiki
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/Fichiers h : c72| Sommaire]]
Installer ce fichier dans votre répertoire de travail.
{{Fichier|fj.h|largeur=70%|info=|icon=Crystal Clear mimetype source h.png}}
<syntaxhighlight lang="c">
/* ---------------------------------- */
/* save as fj.h */
/* ---------------------------------- */
double f(
double x)
{
return( (4*x+5)/sqrt(1+(4*x+5)*(4*x+5)) );
}
char feq[] = "(4*x+5)/sqrt(1+(4*x+5)**2)";
/* ---------------------------------- */
double F(
double x)
{
return( 1./4. *sqrt(1+(4*x+5)*(4*x+5)) );
}
char Feq[] = "1./4. *sqrt(1+(4*x+5)***2)";
/* ---------------------------------- */
/* ---------------------------------- */
</syntaxhighlight>
{{AutoCat}}
qcagujg680xrsq65aa4vkni9fipr3g5
Mathc initiation/Fichiers c : c72c12
0
78847
683354
2022-08-13T20:48:48Z
Xhungab
23827
modification mineure
wikitext
text/x-wiki
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/Fichiers h : c72| Sommaire]]
Installer et compiler ces fichiers dans votre répertoire de travail.
{{Fichier|c01j.c|largeur=70%|info=|icon=Crystal Clear mimetype source c.png}}
<syntaxhighlight lang="c">
/* ---------------------------------- */
/* save as c1j.c */
/* ---------------------------------- */
#include "x_hfile.h"
#include "fj.h"
/* ---------------------------------- */
int main(void)
{
int n = 2*50;
double a = 1.;
double b = 3.;
clrscrn();
printf(" With the Simpson's rule. (n = %d)\n\n"
" (%.3f\n"
" int( (%s) dx = %.6f\n"
" (%.3f\n\n\n\n",n, b, feq, simpson(f,a,b,n), a);
printf(" With the antiderivative of f.\n\n"
" F(x) = %s \n\n\n"
" F(%.3f) - F(%.3f) = %.6f \n\n\n", Feq, b,a, F(b)-F(a));
stop();
return 0;
}
/* ---------------------------------- */
/* ---------------------------------- */
</syntaxhighlight>
Calculons l'intégrale avec la fonction simpson(f,a,b,n); puis avec sa primitive F(x).
'''Exemple de sortie écran :'''
<syntaxhighlight lang="dos">
With the Simpson's rule. (n = 100)
(3.000
int( ((4*x+5)/sqrt(1+(4*x+5)**2)) dx = 1.993500
(1.000
With the antiderivative of f.
F(x) = 1./4. *sqrt(1+(4*x+5)***2)
F(3.000) - F(1.000) = 1.993500
Press return to continue.
</syntaxhighlight>
'''Calculons la primitive :'''
<syntaxhighlight lang="dos">
Calculer la primitive de
/ (4x+5)
| ----------------- dx =
/ sqrt(1+(4x+5)**2)
__________________________
| u = 1+(4x+5)**2 |
| du = 2(4x+5)(4) dx |
| 1/8 du = (4x+5) dx |
|__________________________|
/ 1
| ----------------- (4x+5) dx =
/ sqrt(1+(4x+5)**2)
1 / 1
--- | ------ du =
8 / u**1/2
1 /
--- | u**(-1/2) du = 1/8 2 u**1/2 + c
8 /
= 1/4 (1+(4x+5)**2)**1/2 + c
</syntaxhighlight>
'''Remarque 1 :'''
<syntaxhighlight lang="dos">
/ (4x+8)
| ----------------- dx =
/ sqrt(1+(4x+5)**2)
/ (4x+5) / 3
| ----------------- dx + | ----------------- dx
/ sqrt(1+(4x+5)**2) / sqrt(1+(4x+5)**2)
__________________
| u = 4x+5 |
| du = 4 dx |
|1/4 du = dx |
|__________________|
/ (4x+5) 3 / 1
| ----------------- dx + --- | ------------ du
/ sqrt(1+(4x+5)**2) 4 / sqrt(1+u**2)
= 1/4 (1+(4x+5)**2)**1/2 + 3/4 sinh(u) + c
= 1/4 (1+(4x+5)**2)**1/2 + 3/4 sinh(4x+5) + c
</syntaxhighlight>
'''Remarque 2 :'''
<syntaxhighlight lang="dos">
/ (4x+5)**2
| ----------------- dx =
/ sqrt(1+(4x+5)**3)
____________________________
| u = 1+(4x+5)**3 |
| du =(3)(4x+5)**2(4) dx |
|1/12 du = (4x+5)**2 dx |
|____________________________|
/ 1
| ----------------- (4x+5)**2 dx =
/ sqrt(1+(4x+5)**3)
1 / 1
---- | ------ du =
12 / u**1/2
1 /
---- | u**(-1/2) du = 1/12 2 u**1/2 + c
12 /
= 1/6 (1+(4x+5)**3)**1/2 + c
</syntaxhighlight>
'''Remarque 3 :'''
<syntaxhighlight lang="dos">
/ (4x+5)**(-1/2)
| --------------------- dx =
/ sqrt(1+(4x+5)**(1/2))
_____________________________________
| u = 1+(4x+5)**(1/2) |
| du = (1/2)(4x+5)**(-1/2)(4) dx |
|(1/2) du = (4x+5)**(-1/2) dx |
|_____________________________________|
/ 1
| --------------------- (4x+5)**(-1/2) dx =
/ sqrt(1+(4x+5)**(1/2))
1 / 1
--- | ------ du =
2 / u**1/2
1 /
--- | u**(-1/2) du = 1/2 2 u**1/2 + c
2 /
= [1+(4x+5)**(1/2)]**1/2 + c
...
</syntaxhighlight>
{{AutoCat}}
4hcudec592almd7snfgz9eedhzox7zs
683355
683354
2022-08-13T20:59:49Z
Xhungab
23827
modification mineure
wikitext
text/x-wiki
[[Catégorie:Mathc initiation (livre)]]
[[Mathc initiation/Fichiers h : c72| Sommaire]]
Installer et compiler ces fichiers dans votre répertoire de travail.
{{Fichier|c01j.c|largeur=70%|info=|icon=Crystal Clear mimetype source c.png}}
<syntaxhighlight lang="c">
/* ---------------------------------- */
/* save as c1j.c */
/* ---------------------------------- */
#include "x_hfile.h"
#include "fj.h"
/* ---------------------------------- */
int main(void)
{
int n = 2*50;
double a = 1.;
double b = 3.;
clrscrn();
printf(" With the Simpson's rule. (n = %d)\n\n"
" (%.3f\n"
" int( (%s) dx = %.6f\n"
" (%.3f\n\n\n\n",n, b, feq, simpson(f,a,b,n), a);
printf(" With the antiderivative of f.\n\n"
" F(x) = %s \n\n\n"
" F(%.3f) - F(%.3f) = %.6f \n\n\n", Feq, b,a, F(b)-F(a));
stop();
return 0;
}
/* ---------------------------------- */
/* ---------------------------------- */
</syntaxhighlight>
Calculons l'intégrale avec la fonction simpson(f,a,b,n); puis avec sa primitive F(x).
'''Exemple de sortie écran :'''
<syntaxhighlight lang="dos">
With the Simpson's rule. (n = 100)
(3.000
int( ((4*x+5)/sqrt(1+(4*x+5)**2)) dx = 1.993500
(1.000
With the antiderivative of f.
F(x) = 1./4. *sqrt(1+(4*x+5)***2)
F(3.000) - F(1.000) = 1.993500
Press return to continue.
</syntaxhighlight>
'''Calculons la primitive :'''
<syntaxhighlight lang="dos">
Calculer la primitive de
/ (4x+5)
| ----------------- dx =
/ sqrt(1+(4x+5)**2)
__________________________
| u = 1+(4x+5)**2 |
| du = 2(4x+5)(4) dx |
| 1/8 du = (4x+5) dx |
|__________________________|
/ 1
| ----------------- (4x+5) dx =
/ sqrt(1+(4x+5)**2)
1 / 1
--- | ------ du =
8 / u**1/2
1 /
--- | u**(-1/2) du = 1/8 2 u**1/2 + c
8 /
= 1/4 (1+(4x+5)**2)**1/2 + c
</syntaxhighlight>
'''Remarque 1 :'''
<syntaxhighlight lang="dos">
/ (4x+8)
| ----------------- dx =
/ sqrt(1+(4x+5)**2)
/ (4x+5) / 3
| ----------------- dx + | ----------------- dx
/ sqrt(1+(4x+5)**2) / sqrt(1+(4x+5)**2)
__________________
| u = 4x+5 |
| du = 4 dx |
|1/4 du = dx |
|__________________|
/ (4x+5) 3 / 1
| ----------------- dx + --- | ------------ du
/ sqrt(1+(4x+5)**2) 4 / sqrt(1+u**2)
*** int(1/sqrt(1+u**2) = sinh(u) ***
Voir fin de fichier.
= 1/4 (1+(4x+5)**2)**1/2 + 3/4 sinh(u) + c
= 1/4 (1+(4x+5)**2)**1/2 + 3/4 sinh(4x+5) + c
</syntaxhighlight>
'''Remarque 2 :'''
<syntaxhighlight lang="dos">
/ (4x+5)**2
| ----------------- dx =
/ sqrt(1+(4x+5)**3)
____________________________
| u = 1+(4x+5)**3 |
| du =(3)(4x+5)**2(4) dx |
|1/12 du = (4x+5)**2 dx |
|____________________________|
/ 1
| ----------------- (4x+5)**2 dx =
/ sqrt(1+(4x+5)**3)
1 / 1
---- | ------ du =
12 / u**1/2
1 /
---- | u**(-1/2) du = 1/12 2 u**1/2 + c
12 /
= 1/6 (1+(4x+5)**3)**1/2 + c
</syntaxhighlight>
'''Remarque 3 :'''
<syntaxhighlight lang="dos">
/ (4x+5)**(-1/2)
| --------------------- dx =
/ sqrt(1+(4x+5)**(1/2))
_____________________________________
| u = 1+(4x+5)**(1/2) |
| du = (1/2)(4x+5)**(-1/2)(4) dx |
|(1/2) du = (4x+5)**(-1/2) dx |
|_____________________________________|
/ 1
| --------------------- (4x+5)**(-1/2) dx =
/ sqrt(1+(4x+5)**(1/2))
1 / 1
--- | ------ du =
2 / u**1/2
1 /
--- | u**(-1/2) du = 1/2 2 u**1/2 + c
2 /
= [1+(4x+5)**(1/2)]**1/2 + c
...
</syntaxhighlight>
''' *** [[Mathc initiation/Fichiers h : c80d|int(1/sqrt(1+u**2) = sinh(u) ]] *** '''
{{AutoCat}}
5h8gghvqvcc1soj2xq9c4xe2vcxnv19