1. Tema
Rezolvarea numerică a ecuațiilor algebrice neliniare sau transcendente prin metoda tangentei.
Fie f:R->R o funcție dată. Forma generală a unei ecuații algebrice neliniare sau transcendente este f(x)=0.
2. Metoda
Fie [a,b] un interval unde ecuația f(x)=0 are o soluție.
Relația de recurență pentru metoda tangentei este:
Utilizăm verificarea condiției |xn+1 – xn| < ε pentru convergența șirului.
3. Exemplu
Să se parcurgă primii trei pași din metoda părților proporționale pentru rezolvarea ecuației: x²-x-3=0, x∈[2,3].
Rezolvare:
Cum f(2)=-1 și f(3)=3 rezultă că f(2)f(3)=-3<0, adică ecuația are o soluție în intervalul [2,3].
Alegem x0=3. Cum f'(x)=2x-1 rezultă:
4. Algoritmul
Algoritmul asociat metodei tangentei este:
Intrări:
- f, fd = funcția, derivata din metodă
- a,b = capetele intervalului unde ecuația are o soluție
- ε = precizia
- y = aproximația inițială a soluției
Ieșiri:
- x = soluția aproximativă.
5. Implementare
#include "stdafx.h" #include using namespace std; #define max 10 float funct(float t) { float f; f = t*t - t - 3; return f; } float funct_der(float t) { float fd; fd = 2 * t - 1; return fd; } void main(void) { float a, b, eps, x, y, d; int k; cout << " Dati a= " << endl; cin >> a; cout << " Dati b= " << endl; cin >> b; cout << " Dati eroarea " << endl; cin >> eps; cout << "Dati x= " << endl; cin >> y; d = eps + 1; k = 0; while (d >= eps) { x = y - (funct(y)) / funct_der(y); d = abs(x - y); y = x; k = k + 1; } cout << "Dupa " << k << " etape solutia este " << x << endl; system("pause"); }
Rezultat