+ All Categories

mn_lab1

Date post: 02-Jun-2018
Category:
Upload: jen4ik
View: 219 times
Download: 0 times
Share this document with a friend

of 12

Transcript
  • 8/10/2019 mn_lab1

    1/12

    Universitatea Tehnic a Moldovei

    Catedra Informatic Aplicat

    RAPORT

    la Metode Numerice

    Lucrarea de laborator Nr.1

    Tema : Rezolvarea numeric a ecuaiilor algebrice i transcendente

    Varianta 11,12

    A efectuat : st.gr.SI-131 Popov Eugen

    A verificat : lect.sup G. Marusic

    Chiinu 2014

  • 8/10/2019 mn_lab1

    2/12

    Scopul lucrrii :

    1) S se separe toate rdcinile reale ale ecuaieif(x)=0 undey=f(x) este o funcie real devariabil real.

    2) S se determine o radacin real a ecuaiei date cu ajutorul metodei njumtiriiintervalului cu o eroare mai mic dect =

    .

    3)

    S se precizeze rdcina obinut cu exactitatea =,utiliznd: metoda aproximaiilor succesive ; metoda tangentelor (Newton); metoda secantelor .

    4) Sse compare rezultatele lund n consideraie numrul de iteraii , evaluarile pentrufuncii i derivat.

    Ecuaiile propuse spre rezolvare

    Realizarea lucrrii

    1) Separarea rdcinilor

    Pentru prima ecuaie este convenabil folosirea metodei grafice de separare ardcinilor.

    Scriem ecuaia sub forma () ()i obinem:

    a)

    Pentru determinarea punctelor de intersecie a funciilor ()i ()construim graficele :

    Astfel ecuaia are o rdcin real (0,1).b)

    Pentru a doua ecuaie folosim metoda irului lui Rolle.

    Derivata() se anuleaz pentru x= . Prin urmare irul lui Rolle esteurmtorul :x -3

    -

    3

    y 94 94,04 -8,04 -8

  • 8/10/2019 mn_lab1

    3/12

    Avem o alternan de semn i respectiv o singur rdcin real ( , ).Pentru a determina celelalte rdcini folosim metoda grafic.

    Astfel mai avem 2 rdcini

    (

    ,

    ) i

    (

    )

    2) Calculul rdcinii reale prin metoda njumtirii intervalului

    a)

    #include

    #include

    using namespace std;

    double f(double x){

    return 2*x-exp(-x);

    }

    int main(){int k=0;

    double

    a = -3,

    b = 3,

    c = 0,

    eps = 0.0001;

    while( (b-a)>eps ){

    k++;

    c = a+(b-a)/2;

    if (f(c)==0)

    break;if (f(a)*f(c)

  • 8/10/2019 mn_lab1

    4/12

    b)

    #include

    #include

    using namespace std;

    double f(double x){

    return pow(x,3)-26*x+43;

    }

    int main(){

    int k=0;

    double

    a = -3,

    b = 3,

    c = 0,

    eps = 0.0001;

    while( (b-a)>eps ){

    k++;

    c = a+(b-a)/2;

    if (f(c)==0)

    break;

    if (f(a)*f(c)

  • 8/10/2019 mn_lab1

    5/12

    3) Calculul rdcinii reale prin metoda aproximaiilor succesive

    a) Pentru aplicarea metodei aproximaiilor succesive verificm condiia de convergen.

    Scriind ecuaia n forma ()obinem : () ()

    Prin urmare irul converge.

    Codul surs

    #include

    #include

    #include

    using namespace std;

    double fi(double x){

    return exp(-x)/2;

    }

    main(){

    int k=0;

    double x0,x1,eps;

    coutx0;

    couteps;

    while(1){

    x1=fi(x0);

    k++;

    if(abs(x1-x0)

  • 8/10/2019 mn_lab1

    6/12

    a)

    Verificm condiia de convergen :

    => => => () => () =>

    #include#include

    #include

    using namespace std;

    double fi(double x){

    return (pow(x,3)+43)/26;

    }

    main(){

    int k=0;

    double x0,x1,eps;

    coutx0;

    couteps;

    while(1){

    x1=fi(x0);

    k++;

    if(abs(x1-x0)

  • 8/10/2019 mn_lab1

    7/12

    4)

    Calculul rdcinii reale prin metoda tangentelor(Newton)a)

    #include#include#includeusing namespace std;

    double f(double x){return 2*x-exp(-x);

    }

    double fderiv(double x){return exp(-x)+2;

    }

    main(){int k=0;

    double x0,x1,eps;

    coutx0;

    couteps;while(1){

    x1=x0-f(x0)/fderiv(x0);k++;if(abs(x1-x0)

  • 8/10/2019 mn_lab1

    8/12

    b)#include#include#includeusing namespace std;

    double f(double x){return pow(x,3)-26*x+43;

    }

    double fderiv(double x){return 3*pow(x,2)-26;

    }

    main(){int k=0;double x0,x1,eps;

    coutx0;couteps;while(1){x1=x0-f(x0)/fderiv(x0);

    k++;if(abs(x1-x0)

  • 8/10/2019 mn_lab1

    9/12

    5) Calculul rdcinii reale prin metoda secantelor

    a)#include #include

    using namespace std;

    double f(double x){

    return 2*x-exp(-x);}main()

    {double x2,x1,x3,y,eps=0.000001;int n=0;coutx1;

    coutx2;

    do{n++;

    y=x3;x3=x2-(f(x2)*(x2-x1)/(f(x2)-f(x1)));x1=x2;

    x2=x3;}while (fabs(y-x3)>=eps);cout

  • 8/10/2019 mn_lab1

    10/12

    b)

    #include

    #include

    using namespace std;

    double f(double x)

    {

    return pow(x,3)-26*x+43;}

    main()

    {

    double x2,x1,x3,y,eps=0.000001;

    int n=0;

    coutx1;

    coutx2;

    do{

    n++;y=x3;

    x3=x2-(f(x2)*(x2-x1)/(f(x2)-f(x1)));

    x1=x2;

    x2=x3;

    }while (fabs(y-x3)>=eps);

    cout

  • 8/10/2019 mn_lab1

    11/12

  • 8/10/2019 mn_lab1

    12/12

    6) Compararea rezultatelor i concluzia

    Metoda Rdcina () Nr. de iteraii Valoarea () Eroarea () () () () () ()Biseciei 0.351654 1.93057 16 16 0.0002 0.0006 0.0001

    Apr. succesive 0.351733 1.93061 14 16 0.000002 0.000016 0.000001

    Tangentelor 0.351734 1.93061 4 4 0.0000008 0.000016 0.000001Secantelor 0.351734 1.93061 5 9 0.0000008 0.000016 0.000001

    Concluzie :

    n urma efecturii lucrrii de laborator am realizat n practic rezolvarea numeric a ecuaiilor algebrice itranscendente. Putem concluziona c cea mai eficient metoda este metoda tangentelor,calculatorulefectund un numar minim de iteraii ,ns numarul acestor iteraii este dependent de aproximaia iniial

    aleas. Acest numr este cu att mai mic cu ct aproximaia iniial este mai aproape de rdcina cutat.La fel se observ din tabel c metoda Newton converge ctre soluie cu vitez ptratic ,aceasta fiind uncaz particular a metodei aproximaiilor succesive.O alt vulnerabilitate a acestei metode este necesitateacalculului derivatei, ceea ce n unele cazuri poate fi dificil sau practic imposibil. Pentru astfel de funcii oalegere mai bun este metoda secantelor.La fel putem afirma rezultatul obinut pe baza acestei metodeare o precizie destul de mare.