Documente Academic
Documente Profesional
Documente Cultură
Cuprins
Cuprins ......................................................................................................................................... 2
Suport teoretic............................................................................................................................ 3
YOUR LOGO 2
LUCRAREA 06
REZOLVAREA NUMERICĂ A ECUAȚIILOR ALGEBRICE. METODELE SECANTEI, NEWTON-RAPHSON ȘI APROXIMAȚIILOR SUCCESIVE
SUPORT TEORETIC
YOUR LOGO 3
LUCRAREA 06
REZOLVAREA NUMERICĂ A ECUAȚIILOR ALGEBRICE. METODELE SECANTEI, NEWTON-RAPHSON ȘI APROXIMAȚIILOR SUCCESIVE
Cerințele lucrării
Public Function SecantMethod(ByVal a As Double, ByVal b As Double, ByVal Toleranta As Double, ByRef contor As Integer) As Double
Dim err As Double
Dim x As Double
contor = 0
Do
contor = contor + 1
x = a - f(a) * (a - b) / (f(a) - f(b))
err = Abs(x - a)
b = a
a = x
Loop Until ((err < Toleranta) Or (contor > 1000))
SecantMethod = x
End Function
x = xmin
i = 0
Do
i = i + 1
YOUR LOGO 4
LUCRAREA 06
REZOLVAREA NUMERICĂ A ECUAȚIILOR ALGEBRICE. METODELE SECANTEI, NEWTON-RAPHSON ȘI APROXIMAȚIILOR SUCCESIVE
fx(i, 1) = x
fx(i, 2) = f(x)
x = x + dx
Loop Until x > xmax
nrN = i
j = 0
For i = 1 To nrN - 1
If (fx(i, 2) * fx(i + 1, 2) <= 0) Then ' testarea conditiei de existenta a radacinii
j = j + 1
vint(j, 1) = fx(i, 1)
vint(j, 2) = fx(i + 1, 1)
End If
Next i
nrInt = j
separa = vint
End Function
Sub Secanta()
Dim i As Integer
Dim contor As Integer
Dim a As Double, b As Double
Dim val()
Dim Toleranta As Double
Toleranta = 0.001
Worksheets(1).Range("B2:L100").ClearContents
For i = 2 To 122
Worksheets(1).Cells(i, 2).Value = f(Worksheets(1).Cells(i, 1).Value)
Next i
val = separa(-5, 10, 1)
For i = 1 To UBound(val, 1)
Worksheets(1).Cells(i + 1, 3).Value = val(i, 1)
Worksheets(1).Cells(i + 1, 4).Value = val(i, 2)
Next i
For i = 2 To UBound(val, 1)
If Not (IsEmpty(Worksheets(1).Cells(i, 3).Value)) Then
a = Worksheets(1).Cells(i, 3).Value
b = Worksheets(1).Cells(i, 4).Value
Worksheets(1).Cells(i, 5).Value = SecantMethod(a, b, Toleranta, contor)
Worksheets(1).Cells(i, 6).Value = contor
End If
Next i
End Sub
Se va adăuga un buton pe foaia de calcul din secțiunea Controls din pagina Developer:
Se va denumi butonul Metoda Secantei (click dreapta pe buton->Edit) și se va asocia
cu macro-ul Secanta (click dreapta pe buton->Assign Macro):
Se va rula scriptul prin acționarea butonului definit la pasul anterior;
Se va realiza graficul funcției;
YOUR LOGO 5
LUCRAREA 06
REZOLVAREA NUMERICĂ A ECUAȚIILOR ALGEBRICE. METODELE SECANTEI, NEWTON-RAPHSON ȘI APROXIMAȚIILOR SUCCESIVE
Public Function NewtonMethod(ByVal x0 As Double, ByVal Toleranta As Double, ByRef contor As Integer) As Variant
Dim xn As Double, err As Double, x As Double
contor = 0
x = x0
Do
contor = contor + 1
xn = x - f(x) / dF(x)
err = Abs(xn - x)
x = xn
Loop Until ((err < Toleranta) Or (contor > 1000))
NewtonMethod = xn
End Function
Sub Newton_Raphson()
Dim i As Integer
Dim contor As Integer
Dim a As Double, b As Double
Dim val()
Dim Toleranta As Double
Toleranta = 0.001
contor = 0
Worksheets(2).Range("B2:L100").ClearContents
For i = 2 To 122
Worksheets(2).Cells(i, 2).Value = f(Worksheets(2).Cells(i, 1).Value)
Next i
val = separa(-5, 10, 1)
For i = 1 To UBound(val, 1)
Worksheets(2).Cells(i + 1, 3).Value = val(i, 1)
Worksheets(2).Cells(i + 1, 4).Value = val(i, 2)
Next i
For i = 2 To UBound(val, 1)
If Not (IsEmpty(Worksheets(2).Cells(i, 3).Value)) Then
a = Worksheets(2).Cells(i, 3).Value
b = Worksheets(2).Cells(i, 4).Value
Worksheets(2).Cells(i, 5).Value = NewtonMethod((a + b) / 2, Toleranta, contor)
Worksheets(2).Cells(i, 6).Value = contor
End If
Next i
End Sub
Se va adăuga un buton pe foaia de calcul din secțiunea Controls din pagina Developer:
Se va denumi butonul Metoda Newton-Raphson (click dreapta pe buton->Edit) și se va
asocia cu macro-ul Newton_Raphson (click dreapta pe buton->Assign Macro):
Se va rula scriptul prin acționarea butonului definit la pasul anterior;
Se va realiza graficul funcției;
YOUR LOGO 6
LUCRAREA 06
REZOLVAREA NUMERICĂ A ECUAȚIILOR ALGEBRICE. METODELE SECANTEI, NEWTON-RAPHSON ȘI APROXIMAȚIILOR SUCCESIVE
Public Function AproxSucc(ByVal x0 As Double, ByVal Toleranta As Double, ByRef contor As Integer) As Variant
Dim dx As Double, xn As Double, err As Double, x As Double
contor = 0
x = x0
Do
contor = contor + 1
xn = g(x)
err = Abs(xn - x)
x = xn
Loop Until ((err < Toleranta) Or (contor > 1000))
AproxSucc = xn
End Function
Sub Aproximatiilor_Succesive()
Dim i As Integer
Dim contor As Integer
Dim a As Double, b As Double
Dim val()
Dim Toleranta As Double
Toleranta = 0.001
contor = 0
Worksheets(3).Range("B2:L100").ClearContents
For i = 2 To 122
Worksheets(3).Cells(i, 2).Value = f(Worksheets(3).Cells(i, 1).Value)
Next i
val = separa(-5, 10, 1)
For i = 1 To UBound(val, 1)
Worksheets(3).Cells(i + 1, 3).Value = val(i, 1)
Worksheets(3).Cells(i + 1, 4).Value = val(i, 2)
Next i
For i = 2 To UBound(val, 1)
If Not (IsEmpty(Worksheets(3).Cells(i, 3).Value)) Then
a = Worksheets(3).Cells(i, 3).Value
b = Worksheets(3).Cells(i, 4).Value
Worksheets(3).Cells(i, 5).Value = AproxSucc((a + b) / 2, Toleranta, contor)
Worksheets(3).Cells(i, 6).Value = contor
End If
Next i
End Sub
Se va adăuga un buton pe foaia de calcul din secțiunea Controls din pagina Developer:
Se va denumi butonul Metoda aproximatiilor succesive (click dreapta pe buton->Edit)
și se va asocia cu macro-ul Aproximatiilor_Succesive (click dreapta pe buton->Assign
Macro):
Se va rula scriptul prin acționarea butonului definit la pasul anterior;
Se vor realiza graficele funcției f(x), g(x) și a bisectoarei y=x;
YOUR LOGO 7
LUCRAREA 06
REZOLVAREA NUMERICĂ A ECUAȚIILOR ALGEBRICE. METODELE SECANTEI, NEWTON-RAPHSON ȘI APROXIMAȚIILOR SUCCESIVE
-1.00
-0.98
BisectionMethod = Midpoint
End If
End Function
Sub comparatie()
Dim i As Integer
Dim contor As Integer
Dim a As Double, b As Double
Dim val()
Dim Toleranta As Double
Toleranta = 0.001
Worksheets(4).Range("B2:L100").ClearContents
For i = 2 To 122
Worksheets(4).Cells(i, 2).Value = f(Worksheets(4).Cells(i, 1).Value)
Next i
For i = 1 To UBound(val, 1)
Worksheets(4).Cells(i + 1, 3).Value = val(i, 1)
Worksheets(4).Cells(i + 1, 4).Value = val(i, 2)
Next i
For i = 2 To UBound(val, 1)
If Not (IsEmpty(Worksheets(4).Cells(i, 3).Value)) Then
a = Worksheets(4).Cells(i, 3).Value
b = Worksheets(4).Cells(i, 4).Value
End Sub
YOUR LOGO 8
LUCRAREA 06
REZOLVAREA NUMERICĂ A ECUAȚIILOR ALGEBRICE. METODELE SECANTEI, NEWTON-RAPHSON ȘI APROXIMAȚIILOR SUCCESIVE
Se va adăuga un buton pe foaia de calcul din secțiunea Controls din pagina Developer;
Se va denumi butonul Compara (click dreapta pe buton->Edit) și se va asocia cu macro-
ul comparatie (click dreapta pe buton->Assign Macro);
Se va rula scriptul prin acționarea butonului definit la pasul anterior.
Se va realiza graficul funcției;
Se va salva fișierul și se vor purta discuții pe marginea rezultatelor obținute prin
modificarea variabilei Toleranta din foaia de calcul Comparație;
Se va salva fișierul cu numele laborator_excel_06_sin.xlsm
Se va înlocui funcția inițială f(x)=x2-0.7 cu funcția sin(x). Se vor actualiza și funcțiile
dF și g(x) din cadrul macrocomenzilor.
Se vor modifica valorile asociate variabilei x în intervalul [-4..8] cu rația 0,10, în toate
foile de calcul;
Se vor rula pe rând macrocomenzile prin intermediul butoanelor asociate;
Se va actualiza graficul funcției g(x) din foaia de calcul Metoda aproximațiilor succesive;
Se va salva fișierul și se vor purta discuții pe marginea rezultatelor obținute prin
modificarea variabilei Toleranta din foaia de calcul Comparație;
Se va salva fișierul cu numele laborator_excel_06_exp.xlsm
Se va înlocui funcția f(x)=sin(x) cu funcția ex-2x-3. Se vor actualiza și funcțiile dF și
g(x) din cadrul macrocomenzilor.
Se vor modifica valorile asociate variabilei x în intervalul [-4..2] cu rația 0,05, în toate
foile de calcul;
Se vor rula pe rând macrocomenzile prin intermediul butoanelor asociate.
Se va actualiza graficul funcției g(x) din foaia de calcul Metoda aproximațiilor succesive;
Se va salva fișierul și se vor purta discuții pe marginea rezultatelor obținute prin
modificarea variabilei Toleranta din foaia de calcul Comparație;
YOUR LOGO 9