Descărcați ca pdf sau txt
Descărcați ca pdf sau txt
Sunteți pe pagina 1din 9

Lucrarea 3

Tabelarea şi reprezentarea grafică a funcţiilor


monovariabile

3.1. Obiectivele lucrării

- programarea în C++ a unei funcţii monovariabile;


- familiarizarea cu conţinutul şi modul utilizare a bibliotecii de
programe necesare simulării sistemelor automate şi rezolvării
unor probleme de calcul numeric;
- tabelarea unei funcţii monovariabile, utilizând funcţia C++
TabFunc;
- reprezentarea grafică a unei funcţii monovariabile, utilizând
funcţia C++ TabGraf.

3.2. Programarea în C++ a unei funcţii monovariabile

Se consideră o funcţie monovariabilă reală, cu argument real, de


forma următoare:

. (1.1)

Funcţia implementată în limbajul C++ pentru declararea ac estei


funcţii, de argument real x, este cea prezentată în continuare:

float f(float x){

return(5/2*pow(x,4)-1/3*pow(x,3)+4/3*pow(x,2)-5*x+4);

35
3.3. Tabelarea unei functii monovariabile

Pentru tabelarea unei funcţii continue este necesară, într-o primă


etapă, transformarea acesteia în funcţie discretă. Prin tabelarea unei
funcţii continue între valorile xmin şi xmax este obţinută funcţia discretă
definită prin perechile de valori Xi - Yi, i=1,…,n, n reprezentând numărul
perechilor de puncte ale tabelului.

Pentru n puncte ale tabelului se obţin n-1 intervale egale, de lungime


. Coordonatele argumentelor xi şi valorile funcţiei
corespunzătoare acestora yi=f(xi) sunt calculate cu ajutorul unei structuri
iterative, funcţia implementată în C++ fiind TabFunc, funcţie ce se
găseşte în biblioteca Arhiva CMN C++. Operaţia de tabelare este
prezentata sugestiv în tabelul 1.1

Tabelul 1.1

Corespondenţa între datele problemei şi tabelul funcţiei


Nr. Valori Valoarea Valoarea
corespondente argumentului functiei
1 xmin x1 f1
2 xmin+Δ x2 f2
… ... … …
n-1 xmin+(n-2)Δ xn-1 fn-1
n xmax xn fn

Problema1. Pentru funcţia monovariabilă de argument real definită


prin relaţia (1.1) se cere tabelarea acesteia în intervalul [-2,6] în n=10
puncte.

Rezolvare. Etapele ce trebuie parcurse în rezolvarea acestei


probleme sunt următoarele:

- definirea în C++ a unei funcţii monovariabile;


- însuşirea algoritmului de tabelare a unei funcţii monovariabile şi
a modului de programare a structurii iterative necesare scrierii
unui tabel;
- redactarea programului principal.

36
Funcţia TabFunc, scrisă în limbajul C++, funcţie ce se găseşte în
biblioteca de programe şi care realizează tabelarea funcţiei f, într-un
anumit interval, este prezentată mai jos:

void TabFunc(float functie(float x),float xmin,float xmax,float n,float


x[100],float y[100]){

int i;

float d;

d=(xmax-xmin)/(n-1);

for(i=0;i<n;i++){

x[i]=xmin+i*d;

y[i]=functie(x[i]);

Variabilele utilizate în funcţia TabFunc sunt următoarele:


xmin - limita inferioară a intervalului de tabelare;
xmax – limita superioară a intervalului de tabelare;
n – numărul de puncte în care se tabelează funcţia;
x – şirul valorilor asociate argumentului funcţiei;
y – şirul valorilor asociate funcţiei tabelate.

Pentru redactarea programului principal se au în vedere


următoarele:

1) citirea datelor de intrare (limita inferioară şi superioară a


intervalului de tabelare, numărul de puncte în care se tabelează
funcţia);

37
2) tabelarea funcţiei prin introducerea funcţiei C++ TabFunc;
3) scrierea tabelului de date (i, xi, fxi, i = 1,…, npuncte).

Structura programului care realizează tabelarea funcţiei

este prezentată în continuare:

#include<iostream.h>

#include<math.h>

//Se introduce functia f din Arhiva CMN

//Se introduce functia TabFunc din Arhiva CMN

void main(){

int npuncte,i;

float xmin,xmax,x[100],y[100];

cout<<"xmin = ";cin>>xmin;

cout<<"xmax = ";cin>>xmax;

cout<<"Nr. puncte:";cin>>npuncte;

TabFunc(f,xmin,xmax,npuncte,x,y);

for(i=0;i<npuncte;i++)

cout<<"\n"<<i+1<<". f("<<x[i]<<") = "<<y[i];

Rezultatele obţinute la tabelarea funcţiei (1.1) sunt prezentate mai jos

1 -2 6.2

38
2 -1.111 1.54
3 -2.22 5.1867
4 6.66 1.65
5 1.55 1.283
6 2.44 8.413
7 3.33 2.984
8 4.22 7.760
9 5.11 1.674
10 6 3.19

3.4. Reprezentarea grafică a unei funcţii discrete

Pentru utilizarea modului grafic, definirea ferestrei utilizator şi


reprezentarea grafică a funcţiei f definită prin relaţia (1.1) in limbajul C++
sunt folosite funcţiile InitGraph şi Plotf, prezentate în continuare.

void InitGraph(void)

{ int gdriver = DETECT, gmode;

initgraph(&gdriver,&gmode,"d:/soft/borlandc/bgi");

void Plotf(float x[], float y[], int n,float fxmin, float fxmax, float fymin,
float fymax)

//reprezentarea grafică a unei funcţii tabelate

//încadrează funcţia în fereastra [fxmin,fxmax] x [fymin,fymax],


specificată prin

//coordonate fracţionare din intervalul [0,1] x-abscisa,y-ordonata,n-


nr. punctelor

39
#define Nint(x) (int)floor(x + 0.5)

float ax, bx, ay, by, xmin, xmax, ymin, ymax;

int i, ixmin, ixmax, iymin, iymax; //coordonatele ferestrei

ixmin = Nint(fxmin*getmaxx()); iymin = Nint((1.0-fymin)*getmaxy());

ixmax = Nint(fxmax*getmaxx()); iymax = Nint((1.0-


fymax)*getmaxy());

rectangle(ixmin,iymax,ixmax,iymin); // chenarul

xmin = x[1]; xmax = x[n]; // Axa X

ax = (ixmax-ixmin)/(xmax-xmin); // coeficienţi de scalare

bx = ixmin - ax*xmin;

ymin = y[1]; ymax = y[1]; // Axa Y

for (i=2; i<=n; i++) { // ymin şi ymax

if (ymin > y[i]) ymin = y[i];

if (ymax < y[i]) ymax = y[i];

if (ymin == ymax) { ymin *= 0.9; ymax *= 1.1; }

ay = (iymax-iymin)/(ymax-ymin); // coeficienţi de scalare

by = iymin - ay*ymin; // trasează axele

if (xmin*xmax < 0) line(Nint(bx),iymin,Nint(bx),iymax);

if (ymin*ymax < 0) line(ixmin,Nint(by),ixmax,Nint(by));// uneşte


punctele reprezentării

moveto(Nint(ax*x[1]+bx),Nint(ay*y[1]+by)); // primul punct

for (i=2; i<=n; i++) lineto(Nint(ax*x[i]+bx),Nint(ay*y[i]+by));

40
}

#endif

Problema 2. Se considera funcţia monovariabilă reală

. Să se reprezinte grafic funcţia în intervalul [-2,6] în

100 de puncte.

Rezolvare. Pentru rezolvarea acestei probleme trebuie parcurse


următoarele etape:

- definirea în C++ a unei funcţii monovariabile;


- tabelarea unei funcţii monovariabile utilizând funcţia TabFunc;
- reprezentarea grafică a unei corelaţii discrete Xi – Yi utilizând
funcţia TabGraf;
- redactarea programului principal.

Programul care realizează tabelarea şi reprezentarea grafică a


funcţiei f, declarata anterior, este prezentat cele ce urmează.

#include<iostream.h>

#include<graphics.h>

#include<math.h>

#ifndef GRAPHLIB

#define GRAPHLIB

#include <graphics.h>

//Se introduce conţinutul fişierului TabGraf din Arhiva CMN

//Se introduce funcţia TabFunc din Arhiva CMN

41
//Se introduce funcţia f din Arhiva CMN

void main(){

int npuncte,i;

float
xmin,xmax,x[100],y[100],x_max=0.0,x_min=0.0,y_max=0.0,y_min=0.0;

cout<<"xmin = ";cin>>xmin;

cout<<"xmax = ";cin>>xmax;

cout<<"Nr. puncte:";cin>>npuncte;

TabFunc(f,xmin,xmax,npuncte,x,y);

for(i=0;i<npuncte;i++){

if(x[i] < x_min)x_min = x[i];

if(y[i] < y_min)y_min = y[i];

if(x[i] > x_max)x_max = x[i];

if(y[i] > y_max)y_max = y[i];

// cout<<"\n"<<i+1<<". f("<<x[i]<<") = "<<y[i];

InitGraph();

Plotf(x,y,npuncte,x_min,x_max,y_min,y_max);

closegraph();

// cout<<"\n"<<x_min<<" < "<<x_max<<";\n"<<y_min<<" <


"<<y_max;

42
3.5. Probleme propuse

Să se tabeleze şi să se reprezinte grafic funcţiile:

1. , ;
2. , ;
3. , .

43

S-ar putea să vă placă și