BluePink BluePink
XHost
Gazduire site-uri web nelimitata ca spatiu si trafic lunar la doar 15 eur / an. Inregistrare domenii .ro .com .net .org .info .biz .com.ro .org.ro la preturi preferentiale. Pentru oferta detaliata accesati site-ul BluePink
POLINOAME CU COEFICIENŢI REALI.
OPERAŢII CU POLINOAME.
O expresie de forma f = a0 + a1X1 + a2X2 + … + anXn se numeşte polinom cu coeficienţi reali. Datorită proprietăţii de comutativitate a adunării, expresia mai poate fi scrisă:
f = anXn + an-1Xn-1 +…+a2X2 + a1X1 + a0.

- an , an-1 , …a2 , a1 , a0 sunt numere reale date, numite coeficienţi ai polinomului
- gradul lui f, notat grad f, este cel mai mare număr natural n astfel încât an≠0
- an se numeşte coeficientul dominant al polinomului f
- a0 se numeşte termenul liber al polinomului f
- X este variabila polinomului
<< Back
Valoarea unui polinom cu coeficienţi reali într-un punct

Fie f = a0 + a1X1 + a2X2 + … + arXr + … + anXn un polinom de grad n şi q un număr real arbitrar.
Atunci numărul
f(q) = a0 + a1q1 + a2q2 + … + arqr + … + anqn
se numeşte valoarea polinomului f în q.

Adunarea a două polinoame cu coeficienţi reali

Fie f = a0 + a1X1 + a2X2 + … + arXr + … + anXn un polinom de grad n şi
g = b0 + b1X1 + b2X2 + … + brXr … + bmXm un polinom de grad m.
Atunci
f + g = (a0+b0) + (a1+b1)X1 + (a2+b2)X2 + …+ (ar+br)Xr + …
f + g =
grad(f + g) ≤ max(grad f, grad g)
dacă m≠n atunci grad(f + g) = max(n, m)
dacă m=n, atunci grad(f + g) = cel mai mare număr natural k astfel încât ak + bk ≠ 0

Înmulţirea a două polinoame cu coeficienţi reali

Fie f = a0 + a1X1 + a2X2 + … + arXr + … + anXn un polinom de grad n şi
g = b0 + b1X1 + b2X2 + … + brXr … + bmXm un polinom de grad m.
Atunci
f ∙ g = a0∙b0 + (a0b1+a1b0)X1 + (a0b2+a1b1+a2b0)X2 + …+ (a0br+a1br-1+a2br-2+…+arb0)Xr + …
- termenul r al produsului f ∙ g este , i = 0,1,…,n şi j = 0,1,…,m
grad (f∙g) = grad(f) + grad(g) = n+m

Împărţirea a două polinoame cu coeficienţi reali

Fie f = a0 + a1X1 + a2X2 + … + arXr + … + anXn un polinom de grad n şi
g = b0 + b1X1 + b2X2 + … + brXr … + bmXm un polinom de grad m , g ≠ 0
Atunci există două polinoame c şi r astfel încât f = g ∙ c + r, unde grad r < grad g. În plus polinoamele c şi r sunt unice satisfăcând această proprietate.
În expresia f = g ∙ c + r
f se numeşte deîmpărţit
g se numeşte împărţitor
c se numeşte cât
r se numeşte rest

Implementarea operaţiilor cu polinoame folosind limbajul Turbo Pascal

- Pentru declararea unui polinom se foloseşte tipul de date tablou (vector) care reţine coeficienţii polinomului şi o variabilă (număr natural) care reţine gradul polinomului.
- Introducerea datelor unui polinom presupune citirea de la tastatură a gradului polinomului şi a coeficienţilor acestuia, începând de la coeficientul dominant până la termenul liber.
- Implementarea operaţiilor cu polinoame (valoarea unui polinom într-un punct, adunarea, înmulţirea şi împărţirea a două polinoame) presupune de fapt prelucararea coeficineţilor, variabila polinomului X apare doar la afişarea unui polinom la monitor.

{ delararea tipurilor de date}
type polinom=array[0..100] of real;
var opt,n,m:byte;
a,b:polinom;

{citirea de la tastatura a datelor unui polinom}
procedure citire(var a:polinom;var n:byte);
var i:byte;
begin
write('introduceti gradul polinoului: ');
readln(n);
repeat
write('coeficientul lui X^',n,'=');
readln(a[n]);
until a[n]<>0;
for i:=n-1 downto 0 do begin
write('coeficientul lui X^',i,'=');
readln(a[i]);
end;
end;

{afisarea la monitor a unui polinom}
procedure afisare(a:polinom;n:byte);
var i:byte;
begin
if n=0 then if frac(a[0])=0 then write(a[0]:0:0)
else write(a[0]:0:2)
else
for i:=n downto 0 do begin
if (a[i]>0)and(i<>n) then write('+')
else if a[i]<0 then write('-');
if frac(a[i])<>0 then write(abs(a[i]):0:2)
else if (a[i]<>0) and (abs(a[i])<>1) then write(abs(a[i]):0:0);
if (i<>0)and(a[i]<>0) then write('X^',i);
if (i=0) and (abs(a[0])=1) then write(1);
end;
end;

{calculul valorii unui polinom intr-un punct}
procedure valoare;
var i:byte;
S,P,q:real;
begin
citire(a,n);
write('introduceti punctul in care se va calcula valoarea polinomului : ');
readln(q);
write('Valoarea polinomului ');
afisare(a,n);
writeln(' in punctul ',q:0:2,' este ');
S:=a[0];P:=1;
for i:=1 to n do begin
P:=P*q;
S:=S+P*a[i];
end;
writeln('f(',q:0:2,')=',S:0:2);
end;

{operatia de adunare a doua polinoame}
procedure adunare;
var i,gs:byte;
s:polinom;
begin
citire(a,n);
citire(b,m);
writeln('Polinomul obtinut prin adunarea celor doua polinoame este:');
write('(');
afisare(a,n);write(')+(');afisare(b,m);write(')=');
if n>m then gs:=n
else if m>n then gs:=m
else begin
gs:=n;
while a[gs]+b[gs]=0 do dec(gs);
end;
for i:=0 to gs do s[i]:=a[i]+b[i];
afisare(s,gs);writeln;
end;

{operatia de inmultire a doua polinoame}
procedure inmultire;
var i,j,r,gp:byte;
p:polinom;
begin
citire(a,n);
citire(b,m);
writeln('Polinomul obtinut prin inmultirea celor doua polinoame este:');
write('(');
afisare(a,n);write(')*(');afisare(b,m);write(')=');
gp:=n+m;
for r:=0 to gp do begin
p[r]:=0;
for i:=0 to n do
for j:=0 to m do
if i+j=r then p[r]:=p[r]+a[i]*b[j];
end;
afisare(p,gp);writeln;
end;

{operatia de impartire a doua polinoame}
procedure impartire;
var gc,gr,i,j:byte;
c,r:polinom;
begin
citire(a,n);citire(b,m);
write('(');
afisare(a,n);write(')/(');afisare(b,m);writeln(')');
if n<m then begin
gc:=0;
gr:=n
end
else begin
r:=a;
gc:=n-m;
for i:=gc downto 0 do begin
c[i]:=r[i+m]/b[m];
for j:=i+m-1 downto 0 do
r[j]:=r[j]-c[i]*b[j-i];
end;end;
gr:=0;
while r[gr]=0 do dec(gr);
writeln('Catul obtinut prin impartirea celor doua polinoame este:');
afisare(c,gc);writeln;
writeln('Restul obtinut prin impartirea celor doua polinoame este:');
afisare(r,gr);writeln;
end;

{programul principal}
begin
writeln('Introduceti optiunea 0 pentru a iesi din program');
writeln('Introduceti optiunea 1 pentru calculul valorii unui polinom intr-un punct');
writeln('Introduceti optiunea 2 pentru operatia de adunare a doua polinoame');
writeln('Introduceti optiunea 3 pentru operatia de inmultire a doua polinoame');
writeln('Introduceti optiunea 4 pentru operatia de impartire a doua polinoame');
readln(opt);
repeat
case opt of
1:valoare;
2:adunare;
3:inmultire;
4:impartire;
0:exit;
else writeln('ati introdus o optiune gresita');
end;
write('optiune=');readln(opt);
until opt=0;

readln;
end.

<< Back

Prof. Vasilica Tomulescu, Prof. Dumitru Tomulescu, Colegiul Naţional „Ecaterina Teodoroiu” Târgu-Jiu