Académique Documents
Professionnel Documents
Culture Documents
1.2 Définition
1.2.1. Le programme
2.2 programmation
Suivant le langage utilisé, un programme doit être interprété ou compilé en
passant par un autre langage qui pourra être compris par la machine :
l'assembleur ou même en code binaire.
D'un point de vue pratique, un langage de programmation permet l'écriture
de programmes de manière compréhensible par un être humain. Le
programmeur n'a pas besoin de connaître lelangage machine, dit « de bas
niveau », pour écrire un programme. Le langage deprogrammation fournit
une abstraction de niveau supérieur pour utiliser une machine.
Il existe des milliers de langages de programmation, la plupart d'entre eux
étant réservés à desdomaines spécialisés. Ils font l'objet de recherches
constantes dans les universités et dansl'industrie.
2.3 Syntaxe
Outre les particularités sémantiques des langages, ils utilisent également des
grammairesdifférentes qui proposent souvent des points communs.
Les particularités syntaxiques ne sont souvent que des détails qui ne
changent pas lesfonctionnalités proposées par les langages de
programmation. Par exemple, dans Objective-C2, il est possible d'utiliser les
accesseurs avec deux syntaxes différentes pour le mêmerésultat :
La nuance est importante, car en C, la dernière instruction d'un bloc doit
comprendre unpoint-virgule (;) qui est un terminateur alors qu'en Pascal, il
est inutile, voire fautif, d'enmettre un (cela consiste à ajouter une instruction
vide en fin de bloc). De même, le caractère ;peut être utilisé en C comme
instruction vide, ce qui n'aurait pas de sens en Pascal.
Les langages utilisant un terminateur sont réputés engendrer moins de
fautes de syntaxe queceux utilisant un séparateur.
2.4. Balisage
Certains langages utilisent des « balises » délimitant des « environnements ».
Une balise estgénéralement un mot-clé associé à plusieurs caractères : \ ; <>
; etc.
Les langages permettant de générer du code source ou des documents
utilisent souvent desbalises. Par exemple, PHP et JSP utilisent des balises
pour délimiter les parties de code àinterpréter. XML est également un
langage à balises, qui permet de définir des langages deprogrammation
comme XSP ou XSLT.
2.5. Stratégie d’évaluation
Une stratégie d'évaluation est un ensemble de règles qui décrivent comment
évaluer uneexpression dans un langage de programmation. La stratégie
d'évaluation définit à quelmoment les arguments des fonctions et opérateurs
sont évalués ou réduits.
On distingue essentiellement deux stratégies :
x l'évaluation stricte : les arguments des fonctions sont toujours évalués
avant que la fonction ne soit appliquée.
x l'évaluation paresseuse ou évaluation retardée : les arguments ne sont
évalués que lorsque leur valeur est effectivement requise. Ce type
d'évaluation est généralement utilisé dans les langages fonctionnels.
La plupart des langages ont un système d'évaluation stricte, et utilisent une
forme d'évaluationparesseuse pour les expressions booléennes (évaluation
court-circuit). Cependant il estpossible de créer une évaluation paresseuse
dans un langage à évaluation stricte. Par exemple,Scheme fournit la fonction
delay qui retarde l'évaluation d'une expression et force qui obligel'évaluation.
2.6. Gestion de la mémoire
Les langages de programmation offrent plus ou moins de libertés au
programmeur en ce qui concerne la gestion de la mémoire :
x Soit elle est entièrement sous le contrôle du développeur qui doit gérer
lui-même l'espace mémoire disponible, les allocations et libérations.
C'est le cas pour les langages de bas niveau, comme le C.
x Soit tout peut être contrôlé par le compilateur ou par le moteur
d’exécution (Java) : même s'il est possible de donner des directives, la
machine virtuelle gère elle-même la mémoire à l'aide d'un ramasse-
miettes. C'est ainsi que fonctionnent les langages dehaut niveau,
comme Python.
Certains langages proposent un système intermédiaire. En Objective-C, il est
possible de lagérer directement, d'activer la gestion automatique de la
mémoire ou d'utiliser un système deplus haut niveau.
2.7. Les exceptions
Les exceptions sont des cas limites d'exécution du programme (division par
0, etc.).
Lorsqu'elles sont générées, le déroulement du programme est interrompu. Au
contraire d'uneerreur qui interrompt brutalement le programme, la gestion
d'une exception permetd'interrompre proprement un programme, de corriger
l'erreur et d'en reprendre l'exécution.
La gestion des exceptions peut être différente selon les langages ; soit :
x Il n'y en a pas (C) ;
x Elle signale l'exception sans la traiter (C++, C#, Java) ;
x Elle permet un traitement : par exemple, la modification du
programme par leprogramme lui-même (comme en Python) pour
reprendre une exécution« normalement ».
2.8. Principaux paradigmes
Un programme logique est composé de faits et de règles qui sont traités par
un moteurd'inférence.
Prolog fut le premier langage de ce type à être fonctionnel sur un ordinateur.
Ces langages ne manipulent que des piles de données où les opérations sont
effectuées sur leséléments du sommet d'une ou plusieurs piles.
Des exemples typiques sont les langages Forth, Factor, PostScript, Joy, Cat
ou RPL (HP 48).
2.8.6. Langages à objet
Les langages à objets offrent une abstraction à la machine : l'objet est une
structuresémantique indépendante qui rassemble des données et
destraitements.
En se basant sur une méthode de conception à objet et sur un langage de
modélisation à objet,on peut facilement implanter un concept au moyen d'un
langage de programmation à objets.
Parmi les langages à objets sont généralement classés Ruby et Smalltalk,
purement objet,c'est-à-dire que tout est objet, depuis les types de base,
jusqu'à l'interprète ou les blocsd'instructions ; le C++, extension de C
permettant d'utiliser des objets mais où tout n'est pasobjet ; Python, très
orienté objet mais qui ne respecte pas tous les principes de laprogrammation
objet comme l'encapsulation.
2.9 Utilisation
On peut aussi classer les langages de programmation en fonction de leur
utilisation carbeaucoup de langages sont spécialisés à une application ou à
un domaine particulier.
Ce type de langages est utilisé pour une plus grande interaction entre un
clientet un serveur.
Du côté du serveur Web, cela permet de produire des pages dont le contenu
est généré àchaque affichage. Ces langages sont par ailleurs souvent couplés
avec un langage pourcommuniquer avec des bases de données (exemple :
PHP).
Côté client (en général le navigateur web), les langages de réagir à certaines
actions del'utilisateur sans avoir à questionner le serveur. Par exemple, le
JavaScript d'une page Webpeut réagir aux saisies de l'utilisateur dans un
formulaire (et vérifier le format des données).
Certains langages permettent de développer à la fois les aspects client et
serveur. C'est le casd'Ocsigen, de Hop ou bien encore du Server-Side
JavaScript.
MATLAB possède son propre langage, intuitif et naturel qui permet des gains
de temps de CPU spectaculaires par rapport à des langages comme le C, le
TurboPascal et le Fortran. Avec MATLAB, on peut faire des liaisons de façon
dynamique, à des programmes C ou Fortran, échanger des données avec
d'autres applications (via la DDE Dynamic Data Exchange : MATLAB serveur
ou client) ou utiliser MATLAB comme moteur d'analyse et de
visualisation.
x la programmation facile,
x la continuité parmi les valeurs entières, réelles et complexes,
x la gamme étendue des nombres et leur précision,
x la bibliothèque mathématique très compréhensive,
x l’outil graphique qui inclut les fonctions d’interface graphique et les
utilitaires,
x la possibilité de liaison avec les autres langages classiques de
programmation (C ou Fortran).
Ici, il faut noter que lorsque l'utilisateur ne fixe pas de variable de sortie,
MATLAB place le résultat d'une opération dans ans. Il est toujours possible
de connaître les variables utilisées et leur type à l'aide de la fonction whos.
Par exemple, pour les manipulations précédentes :
Figure 3.3 :commandewhos (command window)
La solution de x+y est donc perdue. Il est donc préférable de toujours donner
des noms aux variables de sortie :
>> x=4
x=
4
>>y=2
y=
2
>>a=x+y
a=
6
La commande whos exécutée après clear n’a produit aucune sortie car la
commande clear avait déjà effacé toutes les variables.
>>m
mot1=’Génie’ ;
>>mot2=’Civil’ ;
>>mot1_2=[mot1’ ‘mot2]
Mot1_2=
Génie Civil
Le fichier SCRIPT permet de lancer les mêmes opérations que celles écrites
directement à l'invite MATLAB. Toutes les variables utilisées dans un SCRIPT
sont disponibles à l'invite MATLAB.
Cette approche est définie en Matlab par les M-Files, qui sont des fichiers
pouvant contenir les données, les programmes (scripts) ou les fonctions que
nous développons.
l’icône ).
Le rôle d’une fonction est d'effectuer des opérations sur une ou plusieurs
entrées pour obtenir un résultat qui sera appelé sortie.
Par exemple :
On obtient :
3.4. Les principales constantes, fonctions et commandes
Fonction signification
cos(x) sinus de x (en radian)
sin(x) cosinus de x (en radian)
tan(x) Tangente de x (en radian)
asin(x) arc sinus de ∈ [−1; 1]
acos(x) arc cosinus de ∈ [−1; 1]
atan(x) arc tangente de ∈ℝ
sqrt(x) La racine carrée de
abs(x) La valeur absolue de
exp(x) Exponentiel népérien de
log(x) Le logarithme népérien de
log10(x) Le logarithme à base 10 de
imag(x) La partie imaginaire du
nombre complexe
real(x) La partie réelle du nombre
complexe
round(x) arrondi de à l’entier le plus
proche
floor(x) arrondi de à l’entier le plus
petit → { / ≤ }
ceil(x) arrondi de à l’entier le plus
grand → { / ≥ }
MATLAB utilise toujours les nombres réels (double précision) pour faire les
calculs, ce qui
Par exemple :
3.5.2 Les opérations mathématiques.
Les vecteurs lignes se déclarent en séparant les éléments par des espaces
ou des virgules de:
Les vecteurs colonnes se déclarent en séparant les éléments par des points-
virgules :
Par défaut, l'incrément est de 1. Ainsi, pour créer un vecteur ligne des
valeurs de 0 à 5 par incrément de 1, il suffit d'utiliser :
La fonction linspace :
La création d’un vecteur dont les composants sont ordonnés par intervalle
régulier et avec un nombre d’éléments bien déterminé peut se réaliser avec la
fonction :
−
=
éé −1
Par exemple :
>> X=linspace(1,10,4) % un vecteur de quatre éléments de 1 à 10
X=
1 4 7 10
>> Y = linspace(13,40,4) % un vecteur de quatre élément de 13 à 40
X=
13 22 31 40
Par exemple :
Les dimensions d’une matrice peuvent être acquises en utilisant la fonction
size. Cependant, avec une matrice A de dimension m × n le résultat de cette
fonction est un vecteur de deux composants, une pour m et l’autre pour n.
Application
3 4 4 4 5 8
= 6 5 3 = 3 11 12
10 8 2 2 1 7
Réalisez un code MATLAB qui permet, pour les matrices A et B données, de
vérifier que :
∗ − ∗ ≠0
( + ) = +
Dans MATLAB, les polynômes sont représentés sous forme de vecteurs lignes
dont les composantes sont données par ordre des puissances décroissantes.
Un polynôme de degré n est représenté par un vecteur de taille (n+1).
Exemple :
Soient :
( )=3 +2 − +4
( )=2 −3 +5 −1
Le produit de convolution : ℎ( ) = ( ) ( )est donné par :
ℎ( ) = 6 +4 − 11 + 17 + 10 − 19 + 21 − 4
( )=3 +2 − +4
( )=2 −3 +5 −1
La division de g(x) par f(x) :
( )
ℎ( ) = ( )
est la fonction « deconv ».
et le polynôme ℎ( ) obtenu est :ℎ( ) = 0.6667 − 0.4444
( )= + + ⋯+ + +
Où n est le degré du polynôme et (i=0 ,1 ,2, ….,n) sont les coefficients du
polynôme.
( ) = (… (… ( + ) + ) …+ ) +
Après factorisation, on a:
( )= ( − )( − )…( − )
Exemple :
( )= +2 −7 + 8 + 12
( )= ( + 2) − 7 +8 + 12
>>P=[2 1 4 5] ;
a pour racines ri .
>>r=roots(P)
r=
0.2500 + 1.5612i
0.2500 - 1.5612i
-1.0000
Les trois racines de ce polynôme (dont 2 sont complexes) sont données sous
forme d’unvecteur colonne.
Chapitre 4 : Introduction à la programmation avec
MATLAB
4.1. Introduction
= = : égale à (X= = Y)
~= : différent de (X~=Y)
| : ou (or) (X|Y)
~ : Non (not) X (~X)
3. Les entrées/sorties
Exemple :
4.4.2 L’instruction if :
sinon elles ne seront pas (ou si un else existe les instructions entre
leelse et le end seront exécutées). S’il est nécessaire de vérifier plusieurs
conditions au lieu d’une seule, on peut utiliser des clauses elseif pour
chaque nouvelle condition, et à la fin on peut mettre un else dans le cas ou
aucune condition n’a été évaluée à vrai.
Exemple :
1. y = x si x<0
2. y=x² si x>0
3. y=10 si x=0
La valeur de y est:
y = 36
Exemple :
1. y = x si <0
2. y=x² si ≥0
La valeur de y est:
y=
36
Exemple :
Créons un programme qui trouve les racines d’une équation de second degré
désigné par : + + = 0. Voici le M-File qui contient le programme
(il est enregistré avec le nom ‘Equation2deg.m’ ).
Remarque :
L’exécution va donner :
Entrez un nombre : 50
Exemple :
Dans le tableau suivant, nous avons trois formes de l’instruction for
avec le résultat MATLAB :
Partant du principe qu’une image vaut mieux qu’un long discours, MATLAB
offre un puissant système de visualisation qui permet la présentation et
l’affichage graphique des données d’une manière à la fois efficace et facile.
Dans cette partie, nous allons présenter les principes de base indispensables
pour dessiner des courbes en MATLAB.
La fonction plot est utilisable avec des vecteurs ou des matrices. Elle
trace des lignes en reliant des points de coordonnées définis dans ses
arguments, et elle a plusieurs formes :
Exemple:
Si elle contient un seul vecteur comme argument : elle considère les
valeurs du vecteur comme les éléments de l’axe Y (les ordonnées), et leurs
positions relatives définiront l’axe X (les abscisses).
Exemple :
Si elle contient une seule matrice comme argument : elle considère les
valeurs de chaque colonne comme les éléments de l’axe Y, et leurs positions
relatives (le numéro de ligne) comme les valeurs de l’axe X. Donc, elle
donnera plusieurs courbes (une pour chaque colonne).
Exemple :
x Pour donner un titre à une figure contenant une courbe nous utilisons
la fonction title comme ceci :
>>title('titre de la figure')
Exemple :
Exemple :
Exercice
Supposons, par exemple que l’on veuille représenter la surface définie par la
fonction = ( ) sur le carré suivant [− /2, /2] × [− /2, /2] à l'aide
d’une grille de points31 × 31. On utilise la séquence de commandes :
On peut modifier l'angle de vue via la commande view en spécifiant
soit un point d'observation ou deux angles d'élévation. Noter que la
commande view(2) déclenche directement une vue de dessus. On peut
également choisir l'angle de vue à la souris en activant l'option rotate3d on et
on annule ce mode par la commande rotate3d off. De même la commande
zoom in permet d'effectuer des zooms à la souris, seulement en vue plane!
4.6. Applications
3. Ecrire un script qui lit au clavier les coordonnées de 3 points non alignés
et qui trace le triangle formé par ces points ainsi que le cercle circonscrit.
Chapitre 5 : Equations algébriques
5.1. Introduction
Principe
On dira que le système est homogène lorsque le second membre est nul ( =
0, = 1, … , ).
Lorsque tous les coefficients « sous la diagonale » d’un système linéaire sont
nuls, i.e. :
> ⇒ =0
( )
= ,
=
,
b- Remontée et résolution
Puisque ( )
rappelons le, est le second membre échelonné, il a subit les
mêmes opérations que la matrice échelonnée .
⎧ = = ( )
,
⎪
⎨ 1 1 ( )
⎪ = − = ( )
− ∀ = − 1, − 2, … ,1
⎩
c- Exemple de résolution
+2 +2 =2
+ 3 − 2 = −1
3 +5 +8 =8
Avec
1 2 2 2
= 1 3 −2 , = , = −1
3 5 8 8
Première étape du pivot de Gauss pour éliminer les variables dans les
lignes et :
+2 +2 =2
−4 = −3 ⟵ −
− +2 =8 ⟵ −3
Seconde étape du pivot de Gauss pour éliminer les variables dans la ligne
:
+2 +2 =2
−4 = −3
−2 =5 ⟵ +
3
= −1
1/2
Code MATLAB implémentant la méthode de Gauss
5.2.2. Méthodes itératives
1
= − −
Application
b1
a1 d1 0 _ _ 0
c1 a2 I
0 I
A= et B=
I 0
I dn-1
0 - - 0 cn-1 an bn
On donne
1
⎧ = + , >0
⎪
⎪ 1
= , >0
. ( + 1)
⎨ = − , >0
⎪
⎪ (−1)
⎩ = , >0
+1
1. Ecrire un script qui lit au clavier > 0, un entier > 0 et qui affiche
la solution de l’équation = . On utilisera la méthode itérative de
Jacobi.
2. Créer une fonction [ , , ]= ( , , 0, , ) pour la
résolution d’un système linéaire par la méthode de Jacobi. On pourra
tester cette fonction avec la commande >> = \ sur le système
précédent. Prendre = 1.
5.2.2.2. Gauss-Seidel
1
= − −
Activité 5.4.1
=
= −( (− ) − 2 + 1)/(− (− ) − 2)
a. Ecrire un script qui lit au clavier a et n, puis calcule et affiche
b. Ecrire un script qui lit au clavier a et n, puis calcule et affiche le
tableau suivant où 1 ≤ ≤ :
k (− )−2 +1
1 ⋮ ⋮
⋮ ⋮ ⋮
n ⋮ ⋮
= − ( )/ ′( )
Activité 5.4.2
Solution
function [conv,iter,Sol]=NewRaphSol(fdf,x0,epsi,Nmax)
%==========================================================================
% Solveur d'équation non linéaire de type f(x)=0.
% Utilisation: [conv,iter,sol]=NewRaphSol(fdf,x0,epsi,Nmax)
% Méthode: Newton Raphson
% Arguments:
% fdf(x)=[f(x),f'(x)] : fonction définissant f et sa dérivée f'
% x0 : valeur d'essai
% epsi : critère de convergence => |x(n+1)-x(n)|/|x(n+1)|<epsi
% Nmax : nombre maximal d'itérations
% Sortie
% conv : variable prenant la valeur 1 s'il y a convergence et 0 sinon
% iter : variable indiquant le nombre d'itérations effectuées
% Sol : solution obtenue
% Auteur: GBAGUIDI Thomas Brice
%==========================================================================
%-----------Initialisation
compteur=0;
X1=x0;
%-----------Itérations
while 1>0
compteur=compteur+1;
rapport=fdf(X1);
X2=X1-rapport(1)/rapport(2);
Sol=X2;
test1=abs(X2-X1);
test2=abs(X2);
%-----------Test de convergence
if test1<test2*epsi
conv=1;
iter=compteur;
break;
end
%-----------Test sur le nombre d'itérations
ifcompteur>=Nmax
conv=0;
break;
end
X1=X2;
end
end
Activité 5.4.3
Reprendre l’activité 5.4.2 en considérant la méthode de la sécante.
Remarque
Les méthodes les plus sophistiquées pour le calcul des zéros d’une fonction
combinent différents algorithmes. Par exemple, la fonction de MATLAB
(voir Section 1.5.1) adopte la méthode de Dekker-Brent (voir [QSS07],
Section 6.2.3). Dans sa version de base, l’instruction ( , 0) calcule le
zéro de la fonction fun en partant de 0, où fun peut être une chaîne de
caractères qui définit une fonction de x, ou bien une fonction inline, une
fonction anonyme, ou bien encore le nom d’un M-fichier.
Activité 5.4.3
( , )= [ ℎ( )− ( )]
2
= + ℎoùℎ = et ( ) = ; = 0, 1, … ,
du trapèze correspondant.
! ℎ
( ) = ( ) = ℎ×( + ! )/2 = + +2
2
=−
Ce qui donne
=− ( ( )− ) (7.1)
Problème 7.2(Dynamique des populations) Considérons une populationde
bactéries dans un environnement confiné dans lequel pasplus de B individus
ne peuvent coexister. On suppose qu’au temps initialle nombre d’individus
est égal à ≪ et que le taux de croissancedes bactéries est une constante
positive C. Alors, la vitesse de croissancede la population est proportionnelle
au nombre de bactéries, sousla contrainte que ce nombre ne peut dépasser
B. Ceci se traduit parl’équation différentielle suivante
= 1− (7.2)
= (1 − − )
(7.3)
=− (1 − − )
Il revient donc à chercher u telle que la solution de (2) vérifie (1), c’est-à-
dire ( ) = ( ) = .
Avec 1 = et 2 = ′,
1 = 1( , 1, 2) = 2
⎧
2 = 2( , 1, 2) = ( , 1, 2)
(2) ⇔
⎨ 1( ) =
⎩ 2( ) =
Activité 1
1. Créer une fonction MATLAB 4 ( , , , , , ) pour la résolution du
problème (2) parla méthode de Runge-Kutta explicite d’ordre 4 où n est le
nombre de subdivision de l’intervalle [ , ]. La fonction retournera deux
vecteurs x et y de la solution du problème ;
Faire une application avec le problème (3):
+3 =0
(0) = 0 (3)
(2) = 1
Solution de 1
function [x,y,dy]=RK4exp(f,a,b,alpha,u,N)
%============================================================
% Cette fonction est un solveur de problème aux valeurs initiales
% d’ordre 2 de la forme y’’=f(x,y,y’) avec les conditions :
% y(a)=alpha et y’(a)=u.
%
% Utilisation: [x,y,dy]=RK4exp(f,a,b,alpha,u,N)
%
% Description des arguments :
% f : fonction de x, y et y’ définissant le second membre
% du problème
% a : borne inférieure de l’intervalle de résolution
% b : borne supérieure de l’intervalle de résolution
% alpha : scalaire définissant la condition y(a)=alpha
% u : scalaire définissant la condition y’(a)=u
% n : nombre de subdivision n de l’intervalle [a,b]
%
% Sortie
% x : vecteur des abscisses de la solution du problème
% y : vecteur des ordonnées de la solution du problème
% dy: dérivée de y
% Auteur: GBAGUIDI T. Brice
%===========================================================
%------Pas de subdivision
h=(b-a)/N ;
%------Création du vecteur x et initialisation de y1=y et y2=y’
x=linspace(a,b,N+1) ;
y1=zeros(1,N+1) ;
y2=zeros(1,N+1) ;
%------Conditions initiales
y1(1)=alpha ;
y2(1)=u ;
%------Boucle pour le calcul de y1 et y2
for n=1:N
K11=h*y2(n) ;
K21=h*f(x(n),y1(n),y2(n)) ;
K12=h*(y2(n)+K21/2) ;
K22=h*f(x(n)+h/2,y1(n)+K11/2,y2(n)+K21/2) ;
K13=h*(y2(n)+K22/2) ;
K23=h*f(x(n)+h/2,y1(n)+K12/2,y2(n)+K22/2) ;
K14=h*(y2(n)+K23) ;
K24=h*f(x(n)+h,y1(n)+K13,y2(n)+K23) ;
y1(n+1)=y1(n)+(K11+2*K12+2*K13+K14)/6 ;
y2(n+1)=y2(n)+(K21+2*K22+2*K23+K24)/6 ;
end
y=y1 ;
dy=y2 ;
end
0.5
0.4
0.3
0.2
0.1
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Solution de 2
function [yb]=theta(f,a,b,alpha,u,N)
%============================================================
% Cette fonction est un solveur de problème aux valeur initiale
% d’ordre 2 de la forme y’’=f(x,y,y’) avec les conditions :
% y(a)=alpha et y’(a)=u.
%
% Utilisation: [x,y,dy]=RK4exp(f,a,b,alpha,u,N)
%
% Description des arguments :
% f : fonction de x, y et y’ définissant le second membre
% du problème
% a : borne inférieure de l’intervalle de résolution
% b : borne supérieure de l’intervalle de résolution
% alpha : scalaire définissant la condition y(a)=alpha
% u : scalaire définissant la condition y’(a)=u
% n : nombre de subdivision de l’intervalle [a,b]
%
% Sortie
% x : vecteur des abscisses de la solution du problème
% y : vecteur des ordonnées de la solution du problème
% dy: dérivée de y
% Auteur: GBAGUIDI T. Brice
%===========================================================
%------Pas de subdivision
h=(b-a)/N ;
%------Création du vecteur x et initialisation de y1=y et y2=y’
x=linspace(a,b,N+1) ;
y1=zeros(1,N+1) ;
y2=zeros(1,N+1) ;
%------Conditions initiales
y1(1)=alpha ;
y2(1)=u ;
%------Boucle pour le calcul de y1 et y2
for n=1:N
K11=h*y2(n) ;
K21=h*f(x(n),y1(n),y2(n)) ;
K12=h*(y2(n)+K21/2) ;
K22=h*f(x(n)+h/2,y1(n)+K11/2,y2(n)+K21/2) ;
K13=h*(y2(n)+K22/2) ;
K23=h*f(x(n)+h/2,y1(n)+K12/2,y2(n)+K22/2) ;
K14=h*(y2(n)+K23) ;
K24=h*f(x(n)+h,y1(n)+K13,y2(n)+K23) ;
y1(n+1)=y1(n)+(K11+2*K12+2*K13+K14)/6 ;
y2(n+1)=y2(n)+(K21+2*K22+2*K23+K24)/6 ;
end
yb=y1(end) ;
end
Solution de 3
⎧ =
⎪
(6)
⎨ (0) = ′′(0) = 0
⎪ (1) = ′′(1) = 0
⎩
Exercice