Sunteți pe pagina 1din 10

Ministerul Educaţiei, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei

Facultatea Calculatoare, Informatică şi Microelectronică

Departamentul Ingineria Software și Automatică

Raport
Lucrare de laborator Nr.1

la disciplina: Metode Numerice

Tema: Rezolvarea numerică a ecuațiilor algebrice și transendente

A efectuat:

A verificat:

Chişinău 2019
Sarcina Lucrării:
 Să se separe analitic și grafic toate rădăcinile reale al ecuațiilor
𝑦1 = 𝑥 3 + 2𝑥 2 − 𝑥 + 5 - mod analitic
𝑦2 = 𝑥 3 − 5𝑥 − 9 - mod grafic
 Să se determine rădăcinile reale ale funcțiilor cu exactitatea ε = 10-5 prin metoda
Coardelor 2,metoda mixtă și metoda Newton.

Mersul Lucrării:

1. Separarea Rădăcinilor:

a. Separarea rădăcinilor prin modul analitic.


Pentru sepeararea rădăcinilor în mod analitic este utilizata metoda șirului lui
Rolle.

1. Derivăm ecuația y1
𝑦𝑑 = 𝑦2̇ = 3𝑥 2 + 4𝑥 + 1

2. Egalăm derivat funcției cu 0 și aflăm punctele de interseсție cu axa Ox


𝑦𝑑 = 3𝑥 2 + 4𝑥 + 1 = 0
∆= 42 + 4 ∗ 3 = 28

3. Deteminăm limitele pe care este posibil ca semnul funcției să alterneze


𝑎
𝑘 =1+ 𝑢𝑛𝑑𝑒 𝑎 = 𝑚𝑎𝑥{|𝑎1 |, |𝑎2 |, ⋯ , |𝑎𝑛 |}
|𝑎0 |
5
𝑘 =1+ =6
1
Intervalul de căutare este [−6, 6]

4. Construim șirul lui Rolle


x -6 -1,5 0,2 -6
Sign(y) - + + +
Avem o singură alternanță de semn și respectic o singură soluție reală pe
intervalul 𝜀 = [−6, −1,5]

b. Separarea rădăcinilor prin modul grafic.


1. Scriem ecuția 𝑥 3 − 5𝑥 − 9 = 0 sub forma 𝑓(𝑥) = 𝑔(𝑥) și obținem 𝑥 3 =
5𝑥 + 9
2. Construim graficile funcției
Graficul funcției este prezentat în fig. 1
Figura 1 Graficul funcției y2

Funcția are o singură rădăcină reală pe intervalul 𝜀 = [0, 4]


2. Determinarea rădăcinilor funcției:
Pentru determinarea rădăcinilor reale a fost elaborat un program în limbajul de
programarea C++ care utilizează ambele metode de determinare metoda Coardelor
2 ,metoda Newton şi metoda mixtă.

Schema bloc a metodei Coardelor este prezentat în fig. 2


Shema bloc al metodei Newton este prezentat în fig. 3
Listingul programului:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float x, x0, xx0, x1, xF, t0, t1, r, eps = 0.001;

double f(double x)
{
return pow(x,3)+2*pow(x,2)-x+5;
}

double f1(double x)//f derivat


{
return 3*pow(x,2)+4*x-1;
}

double f11(double x)//f dublu derivat


{
return 6*x+4;
}

float metoda_coardelor_II(float a, float b)


{
int n = 0;
if(f(a)*f(b) > 0){
printf("\nIntroduceti din nou");
return 0;
}else{
printf("\n\n\n||metoda_coardelor_II:||\n");
if(f(a)*f11(a) < 0){
x0 = a;
xF = b;
}else{
x0 = b;
xF = a;
}
e1: n++;
x1 = x0 - ((f(x0)*(xF-x0))/(f(xF)-f(x0)));
if(fabs(x1-x0) < eps){
printf("\nx1 = %f\n",x1);
printf("f(x) = %f",f(x1));
printf("\nn = %d",n);
}else{
x0 = x1;
goto e1;
}
}
return 0;
}

float metoda_tangentelor_Newton(float a, float b)


{
int n = 0;
if(f(a)*f(b) > 0){
printf("\nIntroduceti din nou!\n");
return 0;
}else{
printf("\n\n\n||metoda_tangentelor_Newton:||\n");
if(f(a)*f11(a) > 0){
x0 = a;
xx0 = x0;
xF = b;
}else{
x0 = b;
xx0 = x0;
xF = a;
}
e1: n++;
x1 = x0 - (f(x0)/f1(x0));
if(fabs(x1-x0) < eps){
printf("\nx1 = %f",x1);
printf("\nf(x) = %f",f(x1));
printf("\nn = %d",n);
}else{
x0 = x1;
goto e1;
}
}
return 0;
}

float metoda_mixta(float a, float b)


{
int n = 0;
if(f(a)*f(b) > 0){
printf("\nIntroduceti din nou!\n");
return 0;
}else{
printf("\n\n\n|| Metoda mixta: ||\n");
if(f(a)*f11(a) > 0){
t0 = a;
x0 = b;
}else{
t0 = b;
x0 = a;
}
et: n++;
t1 = t0 - (f(t0)/f1(t0));
x1 = x0 - ((f(x0)*(t0-x0))/(f(t0) - f(x0)));
if(fabs(t1 - x1) < eps){
r = (t1 + x1)/2;
printf("\nx1 = %f",x1);
printf("\nt1 = %f",t1);
printf("\nf(x) = %f",f(x1));
printf("\nf(t) = %f",f(t1));
printf("\nn = %d",n);

}else{
x0 = x1;
t0 = t1;
goto et;
}
}
return 0;
}
int main()
{
et: char k;
float a,b,a1,b1, a2, b2;
printf("Dati datele de intrare: \n");
printf("a = ");
scanf("%f",&a);
printf("b = ");
scanf("%f",&b);
a2 = a1 = a;
b2 = b1 = b;

metoda_coardelor_II(a,b);
metoda_tangentelor_Newton(a1,b1);
metoda_mixta(a2,b2);

printf("\n\nDoriti sa continuati? (d/n): ");


getchar();
scanf("%c",&k);
if(k == 'd'){
system("cls");
goto et;
}
return 0;
}

Afișarea Rezultatelor:
Concluzie:
În urma efectuării lucrării de laborator am rezolvat în practică rezolvarea numerică a
ecuațiilor algebriceși transcendente.Toate metodele au oferit rezultate aproximativ egale
Putem concluziona că cea mai eficientă dintre metodele studiate este metoda mixta .