Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CURSURI POSTUNIVERSITARE
LUCRARE DE DIPLOMA
!
2002
REZOLVAREA NUMERIC
CUPRINS
Introducere.
CAPITOLUL I Metode numerice pentru rezolvarea
1.1 Introducere…………………………………………………………………………………4
!"#$%%
1.2 Metoda în serie Taylor…………………………………………………………5
1.3 Metoda lui Euler……………………………………………………………………………6
1.4 Metoda Runge -Kutta……………………………………………………………………...11
1.5 Controlul pasului în metoda Runge -Kutta………………………………………………..16
1.6 Bibliografie………………………………………………………………………………..18
CAPITOLUL II Func & în C
2.1 Moduri video ……………………………………………………………………………..19
2.2 Domenii '% ferestre………………………………………………………………………..19
2.3. Modul text………………………………………………………………………………..20
,
2.3.1. ()*+ %% -.% '-$ '% manevrare……………………………………………………20
2.3.2. Controlul atributelor……………………………………………………………..22
"# 12
2.3.3 Inspectarea / $%% 0000000000000000000000000
2.3.4 Controlul cursorului……………………………………………………………...23
2.4 Modul grafic ……………………………………………………………………………..24
2.4.1. Controlul sistemului grafic……………………………………………………….24
2.4.2. Desenarea '% umplerea regiunilor………………………………………………...26
" 24
2.4.3. Manevrarea elementelor -.% '- 00000000000000000003
2.4.4. 5. % '-$- textelor………………………………………………………………….31
2.4.5. Controlul culorii………………………………………………………………….33
! , #
2.4.6. Tratarea erorilor…………………………………………………………………..34
2.5 Un exemplu de -6 % +- % 7$-.% + ………………………………………………………….35
2.6 Bibliografie…………………………………………………………………………….…37
CAPITOLUL ! ,III 89 în :;
! $00000000000000000000000000
%
3.1 Studiul /+ - %% 33 02<
3.2 =% '+-$- planetelor…………………………………………………………………..…..48
3.3 Bibliografie…………………………………………………………………………..…..53
Concluzii ……………………………………………………………………………………54
2
REZOLVAREA NUMERIC
Introducere
! # ! !$
%&Lucrarea nu ur % " %
' ( ) ! * +#, - .
#$ ! & #
! - & /# ! 000 !!# & $# ! ' #%
# & "# % # $ ()
, # " !$
%& #$ ! /# 1 % ,
2#!$ ,&! %# 3 455 & C
/#-# % !6 ! ' #! "6#%
.
&#!$ !#"
% ( ! $ & !
În ultimul capitol am prezentat %programe C cu în " . Primul , intitulat
! $ ! $ & #$ ! #
"Studiul 7 " " oscilatorului liber ,
oscilatorului amortizat , oscilatorului Duffing oscilatorului Van der
#
Pol " grafic
$ ! ! $ %
() doilea , intitulat" 8 planetelor" " #"
& #$ !
rii unei planete în jurul Soarelui "" # $ acesteia .
!
3
REZOLVAREA NUMERIC
1.1 Introducere
!! "!# !
Majoritatea legilor fizicii sunt formulate sub forma unor
!! "!# ! $% & ordinare sau cu
derivate '$ iale . Problemele în care intervin
!! "!# ! " $% & ordinare de ordin superior! pot fi
reduse la rezolvarea unui sistem de $ &
% ordinul 1 .De exemplu , fie
"!# $% ! &( " ordinul 2
d2y dy
2
+ q( x ) = r( x) (1.1)
dx dx
dy i
= f i ( x, y i ,......, y n ), i = 1,......, n (1.3)
dx
O problem( '% $
* , ! "!# $% ! &( % )* ,+'& * #,$+&*( "( !! % ! ) "3(
, "! !! & ! *$ $ # $!*,$ & 1&,$! & ,& ! ! 4 !* '%* & ",+%!&! "
" %#! ! ! )6', +% "! !! & & ! *$ 4 $* $,)7& & %4 %",+ ! * , !!
% 5 % ) ' +% +' ' + % ( +$ 3 $ :
• probleme cu condi ii 9:9 9;<=
8 8
8 C
• probleme cu >?:@9 99 <; <9A9B bilocale
*
În 7) ( lucrare vom considera numai prima categorie de probleme.
,
O '$ &+ ( %
, "! !! ! ! ! & $ 0&*( *D2 " sistemului (1.3) , "! !! & ! *$ 4 *$-un
* ! ! ! % % % ) ' +% %
' % % & E 0 ,
y i ( x 0 ) = y i0 i = 1,2,......, n (1.4)
F 0,&1$ $,7& ! ! & ! ( " * $ ! $ "! $, 4 $, ,& ! ! , ! "
' + +' + % % ' ' % ' ' ) ' ) ) %
puncte x0, x1,…….,xmax.
4
REZOLVAREA NUMERIC
!" # # $! $ %
' ( # ! )
• metode
directe
(pas cu pas ) & n numai pe baza
(# ! ) .
• metode & ( # ! ) pe baza
'n-1
(# # !* ) , x , …..
indirecte (multipas) n
* '
În lucrare vom considera numai metodele directe Euler +
n-1 n-2
-Kutta .
55
1.2 Metoda ,-./01234 în serie Taylor
* ( # #
&
! $ ! * (
Aceast
( 6 7
#
# ! 68!# $
(! ( ! ! ! 6& &
9 !" # # ! # (#
y(x0) = y0 (1.6)
: $ ! )
solu#ia în serie Taylor 0
x − x0 / ( x − x 0 ) 2 ''
y( x ) = y ( x 0 ) + y ( x0 ) + y ( x 0 ) + ..... (1.7)
1! 2!
# ! #
;(
Presupun ! !! $ puncte
!x!0 , x1,…..,
x
n , dezvoltarea
"
(1.7) 67 ( ' &
)
! # # !! # !
# (# # # n la punctul xn+1
este echivalent (1.5)
y( x n ) = y n
* ! " (
h 2 ''
y n +1 = y n + hy n' + y n + ...... (1.8)
2
este pasul. Cu c;
! '# *
unde h = x n +1 − x n ;
; # $ # $ (1.8) , cu atât valoarea y
este mai apropiat
) # 6 < = este n+1
# n+1
determinarea valorilor y ' , y '' ,..... ale derivatelor
n n în punctul x . n
5
REZOLVAREA NUMERIC
Din ia
avem
y n' = f ( x n , y n )
! &
"# $% $ $% (1.5) '() * (%$
∂f ∂f ∂y ∂f ∂f
y n'' = + = + f
∂x ∂y ∂x xn , yn ∂x ∂y x , y
n n
h2 ∂f ∂f
y n +1 = y n + hf ( x n , y n ) + ∂x + f ∂y + O(h 3 ) (1.9)
2 xn , ym
) ) ) )
unde/ nota ia O (h3) indic ' + + 0($ + ( ,3 - ( $
) )
) ) ) )
. ) ( , ' + $ $ 1 ($) ) $ O (h3)
'1 ( eroare de trunchiere de forma K h3 , unde K este o (+
) )
Metoda este (+ deoarece pentru calculul lui yn+1 sunt necesare informa ii numai
despre punctul anterior (xn , yn ).
) ) )
De 2 + . ' practic , metoda 1"( în serie Taylor 11 criterii de
)
evaluare a preciziei altor metode. Aceste criterii se gradul în care o +( '(*$ "
coincide cu dezvoltarea în serie Taylor a + (
exacte
) , grad
exprimabil) ca putere a lui h din
ultimul termen din dezvoltarea cu care este ," +( '(* $ " 3 spune (
$ )( este de ordinul p termenul + eroare este O(hp+1).
) )
Fie ecua (1.5) cu ( (1.6) . 4 . $ '(2 ' (x0,y0) iar
)
))
din (1.5) se imediat panta curbei în punctul (x0,y0)
y n' = f ( x n , y n )
(1.11)
y n +1 = y n + hy n'
cu h = xn+1 - xn .
6
REZOLVAREA NUMERIC
!" $ $&
Interpretarea geometric ## % #
y
C
y
y1
C'
y=y(x)
A
y0 B
A3
a
h
A2
A0 A1
x0 x1 x x0 x1 x2 x3 x
/
Figura 1.1 Interpretarea geometric' ( )*+,-*. Figura 1.2 *+,-( 012*3 4* 51)*6+* 6.
Euler. metoda liniilor poligonale.
y1 − y 0
= tg a = y 0'
h
de unde
y1 = y 0 + hy 0'
A prin
punct panta curbei , începem aduce
9 din A0 dreapta ce trece prin acest punct cu coeficientul
unghiular f(x0,y0) , ob@ 7
A 7 9 1B 7$C 7 @ " 7 B
.Apoi ducem dreapta ce trece prin A1 , cu coeficientul
unghiular f(x 1 ,y1 ) ob @ 2
%
metoda
liniilor poligonale , Fig.1.2.
Este % 7 un astfel de procedeu
;;poate conduce la erori mari de calcul , un
deD% prin se cumule $
care eroarea
'
8
7 7 7 E 9 7
h2 (din seria Taylor se iau doar doi termeni) % $ 7
" ! 7 B ! A 7 " $
ordinul
F ! ? !
7 7 B @ 7 B
G utilizarea
7 7 7 ?E " C 7 H
impune h "foarte mic.
unui pas de integrare
& B
7 @ ! @ B # % $
7
REZOLVAREA NUMERIC
Exemplul 1
Programul urm :
y ' + y = 0 cu condi y(0) = 1
! $ $ $
Rezultatele execu "# % -
& # este furnizat de
utilizator.
//metoda lui Euler ex. 1
#include <stdio.h>
#include <math.h>
FILE *f; char s[60];
float omega0; float y,t,h,u;
int i;
void main()
{
printf("numele fisierului: ");
scanf("%s",s);
f =fopen(s,"wt");
fprintf(f," i t y solutia exacta \n");
fprintf(f,"----------------------------------------------\n");
t=0; h=.01 ; y=1;i=0;
for (i=1;i<=10;i++)
{
t=h*i;
y=y-h*y;
u=exp(-t);
fprintf(f,"%i\t%f\t%f\t%f\n",i,t,y,u);
}
fclose(f);
}
execu programului pentru
$ ! + ,
pasul '()* % # *
+
Rezultatele
$ !!" ! $ # % !-# .
& $ - -t.
i t y solutia exacta
----------------------------------------------
1 0.100000 0.900000 0.904837
2 0.200000 0.810000 0.818731
3 0.300000 0.729000 0.740818
4 0.400000 0.656100 0.670320
5 0.500000 0.590490 0.606531
6 0.600000 0.531441 0.548812
7 0.700000 0.478297 0.496585
8 0.800000 0.430467 0.449329
9 0.900000 0.387420 0.406570
10 1.000000 0.348678 0.367879
8
REZOLVAREA NUMERIC
! " "# ! $ %
" #
' " ! rezultatele
& programului
" ) & (%
Astfel execu
pentru pasul h=0.01 .
& (
i t y solutia exacta
---------------------------------------------
1 0.100000 0.904382 0.904837
2 0.200000 0.817907 0.818731
3 0.300000 0.739700 0.740818
4 0.400000 0.668972 0.670320
5 0.500000 0.605006 0.606531
6 0.600000 0.547157 0.548812
7 0.700000 0.494839 0.496585
8 0.800000 0.447523 0.449329
9 0.900000 0.404732 0.406570
10 1.000000 0.366032 0.367879
* !2
Exemplul
(" # & !+ & ! ! , (un punct
# +
material asupra c & & )
y ' '+ ω 2 y = 0
! 0
& & y (0) = 1 y ' (0) = 0
"
Utilizatorul introduce valoarea pentru & ω 0 iar rezultatele execu& -
+) " + # ! # %. !+ ! ! ,
+" " ! , !+ ! ! /&0
într-
scrise &
-un & &
y' = z
z ' = −ω 02 y
i t y solutia exacta
--------------------------------------
1 0.010000 0.999900 0.999950
2 0.020000 0.999700 0.999800
3 0.030000 0.999400 0.999550
4 0.040000 0.999000 0.999200
5 0.050000 0.998500 0.998750
6 0.060000 0.997901 0.998201
7 0.070000 0.997201 0.997551
8 0.080000 0.996402 0.996802
9 0.090000 0.995503 0.995953
10 0.100000 0.994505 0.995004
h
y nc +1 = y n + [ f ( x n , y n ) + f ( x n +1 , y np+1 )] (1.13)
2
10
REZOLVAREA NUMERIC
h 2 ∂f ∂f
y n +1 = y n + hf ( x n , y n ) + + f + O(h 3 ) (1.15)
2 ∂x ∂y x , y
n m
(! #"! # ! !# " ! #$' " !" !-! !$
Re#$0
"( !& !. - $!$ !! +( 1 . !
" $" - - $! ! %&! ! $" $!
1 " f(x,y) % ! ( (1.15) $," termeni de ordin cât mai mare ,
&
" ,dar
nu
derivatele
0 sale
+(
indiferent
""# de f(x,y).
C
(
y sub forma unei combina ii liniare
n+1
p
y n +1 = y n + ∑ wi k i (1.16)
i =1
unde
k = hf (ξ , η )
i i i
ξ i = x n + α i h (1.17)
i −1
η i = y n + ∑ β ij k j
j =1
- !"
αi ,βij i wi fiind constante care trebuie determinate . În toate cazurile se
11
REZOLVAREA NUMERIC
α 1 = 0 , β 11 = 0 , ξ 1 = x n , η1 = y n
Avem atunci
k 1 = hf ( x n , y n )
k = hf ( x + α h, y + β k )
2 n 2 n 21 1
(1.18)
k 3 = hf ( x n + α 3 h, y n + β 31 k 1 + β 32 k 2 )
.......................................
y n +1 = y n + hf ( x n , y n )
+
* ,
• pentru p = 2 din formulele (1.16) (1.18) "
y n +1 = y n + w1 k 1 + w 2 k 2
cu
k 1 = hf ( x n , y n )
k 2 = hf ( x n + α 2 h, y n + β 21 k1 )
sau
y n +1 = y n + w1 hf ( x n , y n ) + w 2 hf ( x n + α 2 h, y m + β 21 hf ( x n , y n ))
-"# $ ! ('
∂f ∂f
y n +1 = y n + ( w1 + w 2 )hf ( x n , y n ) + h 2 [w 2α 2 + w 2 β 21 f ]x , y
∂x ∂y n n
Comparând formul cu (1.15) *
w1 + w 2 = 1
w 2α 2 = 1 / 2
w β = 1 / 2
2 21
12
REZOLVAREA NUMERIC
Acesta este un sistem de 3 ecua necunoscute , care nu are
trebuie avem w 2 ≠ 0 . Alegând w2 = 1/2
α 2 = β 21 = 1
w1 = w 2 = 1 / 2
1
y n +1 = y n + (k 1 + k 2 ) (1.19)
2
unde
k 1 = hf ( x n , y n )
(1.20)
k 2 = hf ( x n + h, y n + k1 )
• %!!"! "! &! &'"!" ! &"( )# - *""! '" ' = 4 .Urmând
!!& ( &! !+ # ! "& ( ,- ! ,. " / ! !
$ $ " / '$1(- 2
" " 0 " ("&!" ! ( " "& ( " "!
&' 2 (! 3 ! ! &! " 4!"" ! !" !&"(
Runge - Kutta , reprezentând un optim de simplitate-'4 / (! ( !
1
y n +1 = y n + ( k 1 + 2 k 2 + 2 k 3 + k 4 ) n = 0,1,2,............. (1.21)
6
k 1 = hf ( x n , y n )
k
k 2 = hf ( x n + h , y n + 1 )
2 2
(1.22)
k = hf ( x + h , y + k 2 )
3 n
2
n
2
k = hf ( x + h, y + k )
4 n n 3
i x y solutia exacta
----------------------------------------
1 0.100000 1.095407 1.095445
2 0.200000 1.183138 1.183216
3 0.300000 1.264790 1.264911
4 0.400000 1.341471 1.341641
5 0.500000 1.413988 1.414214
6 0.600000 1.482950 1.483240
7 0.700000 1.548828 1.549193
8 0.800000 1.611998 1.612452
9 0.900000 1.672762 1.673320
10 1.000000 1.731369 1.732051
1
y n +1 = y n + ( k1 + 3k 2 + 3k 3 + k 4 ) n = 0,1,2,............. (1.23)
8
14
REZOLVAREA NUMERIC
k 1 = hf ( x n , y n )
k 2 = hf ( x n + h , y n + k 1 )
3 3
(1.24)
k = hf ( x + 2h , y + k − k 1 )
3 n
3
n 2
2
k = hf ( x + h, y + k − k + k )
4 n+ n 3 2 1
ε T = K h5 (1.25)
f(x,y) ! " " ! # $
instabilitate numerica
eroarea de trunchiere
eroarea de rotunjire
Figura 1.3 Reprezentarea erorii totale în metoda Euler (curba continu%) &' () *+,-./ 01)2+ -
3
de ordinul 4(curba punctat%) , func ie de inversul pasului de integrare . Reprezentare
4-2/5 ,*
Kutta
' '6%78] .
9! : ; ! < = ; = "
Metoda Runge - > <"
; <" ; (Figura
1.3).
mare(<10-5 ).În celelalte cazuri se poate folosi ?"
" ! < $@ <
metoda
care s-ar " !
Burlisch-Stoer care folose
! <! " # " ! " < " = " $
=
unui rezultat spre valoarea
15
REZOLVAREA NUMERIC
~
y n +1
ε n +1 = 1 − (1.26)
y n +1
"
" F * $! " " , $
În cazul metodei
GH - E
" " )4 * " ) $ $% $#
% Runge
I
ε n +1 = Kh 5 (1.27)
% #! & % K , aceasta ar
" & % $! * $ , $# ' G . *
Dac -un procedeu oarecare s-ar
)
$ % % % $# % ε #!% I" $ h
"%
ε = Kh 5
J% I" "% * #! $ $ # $%
h -l
% "%. & % "$# % ε * , ! " % $ ) . "
$% ε
n +1
1/ 5
ε
h = h (1.28)
ε n +1
16
REZOLVAREA NUMERIC
Dac
ε
< 1 formula (1.28)
!
•
ε
! n+1 .
ε
" -ar # $ % #
ε
• > 1
ε
n +1 & .
# ε '
Controlul automat pe baza formulelor (1.26) (1.28) implic ! (dup
) ( ) * ε sub valoarea prin reducerea
ε
+ ! % ! n +, 1! ! !+ ! , ! , !
- -
- $ % , ! ' + - !
decât în cazul foarte restrictiv ε n +1 = ε . Prin urmare , utilizarea nediscriminatorie a acestui
$ ! ! ! ! ! ! ). !
# #
#!! ! !+ [ε ' , ε ] de valori ale lui ε mai mici decât ε - , ! #
! ! ( ! , ! ! ! % n!+1 ) /! ! ! +
$0! # (1.28) un factor multiplicativ pozitiv subunitar , numit factor de
123456789
1/ 5
ε
h = S h (1.29)
ε n +1
17
REZOLVAREA NUMERIC
1.6 Bibliografie
numerice pentru -
/30()) /3 1-9)=0,- : 09()02-
>"?@!
[6] M.Racoveanu , Gh.Dodescu !"#
, I.Mincu $%AB
, Metode
de tip hiperbolic ,
18