Modelarea în C++ a obiectului numar complex sub forma algebrica si
sub forma trigonometrica(conversie).
FUNDAMENTE TEORETICE
Prin introducerea numerelor reale se pot exprima rezultatele oricaror masuratori,dar problema solutiilor ecuatiilor de orice tip , cu coeficienti reali,nu este rezolvata.Ecuatii simple ca x2+1=0,x2+x+1=0 nu au solutii in multimea R a numerelor reale.
De aceea,se pune in mod necesar problema extinderii in continuare a notiunii de numar.Aceasta extindere conduce la notiunea de numar complex.Vom arata in acest capitol ca multimea numerelor complexe este suficient de larga ,incat orice ecuatie de gradul al II-lea cu coeficienti reali sa aiba solutii in aceasta multime.
Numerele complexe nu reprezinta rezultatul unor masuratori si de aceea teoria numerelor complexe are un caracter mai abstract, mai formal decat teoria numerelor reale. Remarcam ca,in pofida acestui grad de abstractizare a notiunilor, teoria numerelor complexe, prin implicatiile sale, are multiple aplicatii practice(de exemplu:in mecanica, electrotehnica, fizica atomica s.a.).
Multimea numerelor complexe
1.Definirea numerelor complexe
Fie produsul cartezian RxR=,adica multimea perechilor ordonate de numere reale.
Precizam ca doua perechi (a,b) si (a',b') sunt egale daca si numai daca a=a' si b=b'.
Astfel ,egalitatea (a,b)=(a',b') este echivalenta cu doua egalitati de numere reale a=a' si b=b'.
Definim pe multimea RxR doua operatii algebrice:adunarea si inmultirea.
Daca z=(a,b) si z'=(a',b') apartin multimii RxR , atunci definim:
z+z'=(a+a',b+b')
Elementul (a+a',b+b') se numeste suma dintre z si z', iar operatia prin care oricaror elemente z si z' din multimea RxR li se asociaza suma lor se numeste adunare.
De asemenea, definim :
z*z'=(a*a'-b*b',a*b'+a'*b).
Elementul (a*a'-b*b',a*b'+a'*b) se numeste produsul dintre z si z' ,iar operatia prin care oricaror elemente z si z' din multimea RxR li se asociaza suma lor se numeste inmultire.
Proprietatile adunarii nmerelor complexe:
a)Adunarea este comutativa,adica oricare ar fi z si z' din C , avem
z+z'=z'+z
b)Adunarea este asociativa ,adica oricare ar fi z, z' si z" din C ,avem
(z+z')+z"=z+(z'+z")
c)Element neutru .Numarul complex 0=(0,0) este element neutru pentru adunare , adica oricare ar fi z din C .
Avem :
z+0=0+z=z.
d)Orice numar complex are un opus, adica oricare ar fi z din C , exista un numar complex notat cu -z astfel incat
z+(-z)=(-z)+z=0.
Proprietatile inmultirii numerelor complexe:
a)Inmultirea este comutativa , adica oricare ar fi z si z' din C ,avem
zz'=z'z
b)Inmultirea este asociativa ,adica oricare ar fi z,z' si z" din C,avem
(zz')z"=z(z'z").
c)Element neutru.Numarul complex 1=(1,0) este element neutru pentru inmultire ,adica oricare ar fi z din C,avem:
z*1=1*z=z.
d)Orice numar complex diferit de 0are un invers,adica oricare ar fi z 0,exista un numar complex notat cu z-1 astfel incat
zz-1=z-1z=1.
e)Inmultirea este distributiva fata de adunare ,adica oricare ar fi z,z'si z" din C, au loc relatiile :z(z'+z")=zz'+zz" si (z+z')z"=zz"+z'z".
Forma algebrica a numerelor complexe
1.Notatia z=(a,b), introdusa pentru numerele complexe ,nu este prea comoda in calculele cu numere complexe .De aceea ,de obicei, se foloseste o alta scriere a numerelor comlexe.
Convenim sa notam numarul complex (0,1) prin i.Atunci,dupa regulile de adunare si inmultire a numerelor complexe, avem:
(a,b)=(a,0)+(0,b)=(a,0)+(b,0)(0,1).
Deoarece (a,0) si (b,0) se identifica cu a ,respectiv b, iar (0,1) s-a notat cu i,atunci aceasta scriere se reprezinta sub forma (a,b)=a+bi.
Aceasta expresie se numeste forma algebrica a numarului complex (a,b).
Exemple
In continuare vom scrie numerele complexe sub forma lor algebrica.
Numarul complex i se numeste unitate imaginara .Numerele de forma bi, cu b numar real, se numesc imaginare . Daca numarul complex z se scrie sub forma z = a + bi, atunci a se numeste partea reala , iar bi se numeste partea imaginara a numarului z .Numarul b se numeste coeficientul partii imaginare .
Reluam mai jos adunarea si inmultirea a doua numere complexe reprezentate sub forma algebrica.
Astfel:
(a+bi)+(a'+b'i)=(a+a')+(b+b')i; (1')
(a+bi)(a'+b'i)=(aa'- bb')+(ab'+a'b)i. (2')
Deci suma a doua numere complexe este un numar complex a carui parte reala , respectiv imaginara ,este suma partilor reale ,respectiv imaginare ale numerelor date.
Formula (2') care da inmultirea a doua numere complexe este mai greu de retinut si chiar de formulat. Observam insa ca ,daca z=a+bi si z'=a'+b'I sunt numere complexe ,atunci avand in vedere proprietatile operatiilor pe C ,rezulta :
(a+bi)(a'+b'i)=aa'+(ab'+a'b)i+bb'i2
Dar inlocuind i2 cu -1 in ultima relatie ,se obtine formula (2').
Numere complexe conjugate
Daca z=a=bi este numar complex , atunci numarului a-bi,notat prin ,(adica z barat) sau se numeste conjugatul sau .Evident , conjugatul lui este z.De aceea , numerele complexe z si se numesc conjugate.
Daca a este un numar real oarecare ,atunci a=a+0i=, si deci a este egal cu conjugatul sau . Mai mult ,daca a+bi este un numar complex astfel incat a+bi=a-bi,atunci b=-b, de unde b=0.Deci a+bi=a+0i=a este un numar real.
Astfel, am aratat ca : dintre toate numerele complexe ,numerele reale (si numai ele) sunt egale cu conjugatele lor.
Avem urmatoarele proprietati:
a.Suma si produsul a doua numere complexe conjugate sunt numere complexe.
b.Oricare ar fi numerele complexe z si z', avem =, =.
3.Modulul unui numar complex .
Modulul unui numar complex z=a+bi este intotdeauna pozitiv, el fiind egal cu zero daca si numai daca a=b=0.
4.Puterile numarului i.
In general fie n un nu8mar natural oarecare .Atunci numarul n se gaseste intr-una (si numai una) din urmatoarele situatii:
a. n=4k (k numar natural) si deci in =i4k=1;
b. n=4l +1 (l numar natural) si deci in =i4l+1=i;
c. n=4p+2 (p numar natural) si deci in=i4p+2=-1;
d. n=4q+3 (q numar natural) si deci in=i4q+3=-i;
NUMERE COMPLEXE SCRISE SUB FORMA TRIGONOMETRICA
Fiecarui numar complex z=x+iy (x,yR) ii asociem un punct unic M P de coordonate (x,y) , fata de reperul ales,numit imaginea numarului complex z.
Am definit in acest fel o functie bijectiva f:C-->P.Daca imaginea lui z=x+iy este punctul M,atunci numarul complex z se numeste afixul punctului M.
Daca coordonatele polare ale punctului M sunt r si t*,atunci conform formulelor
x=r cos t*, y=r sin t*
Numarul complex z=x+iy se scrie:
Z=r(cos t* + i sin t*),r0,t*[0,2).
Deoarece r=
Deci raza polara a imaginii lui z este egala cu modulul lui z.Argumentul polat t* al imaginii lui z se numeste argumentul redus al lui z si se noteaza cu arg z.
In concluzie,orice numar complex z poate fi scris sub forma (1),numita forma trigonometrica a lui z.
Daca z0,modul si argumentul redus ale lui z sunt determinate unic.
Daca z=0,modulul este egal cu 0 si pentru argumentul sau redus se poate lua orice numar din (0,2).
Daca schimbam pe t* in t*+2k,kZ, formula (1) ramane variabila.
Asadar exista mai multe valori t pentru care
(3) z=r(cos t + i sin t), r0.
Se pune intrebarea daca pentru un numar dat z0 formula (3) este adevarata si cu valori t diferite de arg z+2k,kZ.
Fie numarul z0,scris sub forma (3).Se stie ca oricare ar fi numarul real t, el poate fi scris ca t1 + 2k cu t1 [0,2)si kZ.Din (3) rezulta
z=r[cos(t1+2k)+i sin(t1+2k)]=r(cos t1+i sin t1) de unde r=z, t1=arg z
Am ajuns la concluzia ca t=argz+2k.
Orice numar real t,pentru care relatiile (3) au loc,se numeste argument al lui z.
Multimea argumentelor lui z se noteaza cu Arg z.Conform celor aratate mai sus putem scrie:
Arg z=, (4)
deci diferenta a doua argumente ale unui numar complex z0 este un multiplu de 2
Exemple.1. Fie umarul complex z=1-i.Sa se determine |z|,arg z ai Arg z.
Solutie. Deoarece x=1 si y=-1,imaginea lui z se afla in cadranul IV,adica si
t*=arg z
r=|z|==, tg t*==-1
deci t*=(pe fig. III.2,)
t* este lungimea arcului mare AC).
Arg z=.
2. Fie z=-i, sa se determine |z|si Arg z.
Solutie.
|z|=r==1.
Deoarece x=0 si y=-1,imaginea lui z se gaseste pe semiaxa negativa a axei de coordonatelor,deci arg z=
Arg z=
3. Conjugatul al numarului complex z=x+iy, cu y0, are argumentul redus
arg =2-arg z. (5)
Intr-adevar,daca |z=r si arg z=t* atunci
||=r cos t*-ir sin t*=r[cos(2-t*)+ i sin (2-t*)]
Deci 2-t*Arg si cum 0<2-t*<2,2-t*=arg .
PROGRAMUL SURSĂ C++
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#include<iomanip.h>
#include<iostream.h>
#include<string.h>
#define N 200
//Functii pentru activarea ferestrelor de citire si afisare
void activ_fereastracitire()
//fereastra pentru afisarea datelor
void activ_fereastradate()
z=a+bi FORMA ALGRBRICA
z=r(cos(t)+i*sin(t)) FORMA TRIGONOMETRICA
r=sqrt(a^2+b^2), r>=0 Raza polara r=|z|
x=r*cos(t) ; y=r*sin(t); tg(t)=y/x
t apart [0,2*PI) , argumentul REDUS notat arg z
z=0 => r=0, pt t se poate lua orice valoare din [0,2*PI)
argumentul lui z Arg z=
MODELAREA OBIECULUI NUMAR COMPLEX SUB FORMA TRIGONOMETRICA
TRECEREA DE LA FORMA ALGEBRICA LA CEA TRIGONOMETRICA
TRECEREA DE LA FORMA TRIGONOMETRICA LA CEA ALGEBRICA
1.-AFISAREA INTR-O FEREASTRA A FORMEI ALGEBRICE
2.-AFISAREA INTR-O FEREASTRA A FORMEI TRIGONOMETRICE CU ARGUMENT NEREDUS si exprimat in radiani
3.-AFISAREA INTR-O FEREASTRA A FORMEI TRIGONOMETRICE CU ARGUMENT NEREDUS si exprimat in multiplu de PI
4.-AFISAREA INTR-O FEREASTRA A FORMEI TRIGONOMETRICE CU ARGUMENT NEREDUS si exprimat in GRADE
5.-AFISAREA INTR-O FEREASTRA A FORMEI TRIGONOMETRICE CU ARGUMENT REDUS si exprimat in radiani
6.-AFISAREA INTR-O FEREASTRA A FORMEI TRIGONOMETRICE CU ARGUMENT REDUS si exprimat in multiplu de PI
7.-AFISAREA INTR-O FEREASTRA A FORMEI TRIGONOMETRICE CU ARGUMENT REDUS si exprimat in GRADE
//definitia obiectului numar cpmplex
typedef struct complex_t
//Constructorul formei trigonometrice a unui numar compex nenul
//pe baza formei algebice
complex_t(char *nume1,double a1,double b1);
// 1.AFISAREA INTR-O FEREASTRA A FORMEI ALGEBRICE
//FUNCTIE MEMBRU PENTRU AFISAREA FORMEI ALGEBRICE
//INTR-O FEREASTRA
void afis_z_algeb();
// 2.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT NEREDUS EXPRIMAT IN RADIANI
void af_trig_nred_rad();
// 3.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT NEREDUS si exprimat in multipli de PI
void af_trig_nred_nPI();
// 4.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT NEREDUS si exprimat in GRADE
void af_trig_nred_grad();
// 5.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT REDUS EXPRIMAT IN RADIANI
void af_trig_red_rad();
// 6.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT REDUS si exprimat in multipli de PI
void af_trig_red_nPI();
// 7.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT REDUS si exprimat in GRADE
void af_trig_red_grad();
//FUNCTIE PT CITIREA unui obiect numar complex algebric z= a+bi
void cit_z_algeb(char nume1[N]);
//FUNCTIE PT CITIREA unui obiect numar complex trigonometric
// z=r(cos t+i sin t)
void cit_z_trigo(char nume1[N]);
}complex_t; //SFARSIT CLASA
//Functie pentru normalizarea argumentului
//Stabileste valoarea argumentului redus t
void complex_t::normaliz() //fct pt normalizare
if(tt<0)
t=tt;
//1.FUNCTIE MEMBRU PENTRU AFISAREA FORMEI ALGEBRICE
//INTR-O FEREASTRA
void complex_t::afis_z_algeb()
// 2.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT NEREDUS EXPRIMAT IN RADIANI
void complex_t::af_trig_nred_rad()
// 3.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT NEREDUS si exprimat in multipli de PI
void complex_t::af_trig_nred_nPI()
// 4.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT NEREDUS si exprimat in GRADE
void complex_t::af_trig_nred_grad()
// 5.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT REDUS EXPRIMAT IN RADIANI
void complex_t::af_trig_red_rad()
// 6.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT REDUS si exprimat in multipli de PI
void complex_t::af_trig_red_nPI()
// 7.FUNCTIE MEMBRU PENTRU AFISAREA INTR-O FEREASTRA A FORMEI
// TRIGONOMETRICE CU ARGUMENT REDUS si exprimat in GRADE
void complex_t::af_trig_red_grad()
//Constructorul formei trigonometrice a unui numar compex nenul
//pe baza formei algebice
complex_t::complex_t(char *nume1,double a1,double b1)
if(a==0&&b>0)
if(a==0&&b<0)
t1=atan(b/a);
//Daca a<0, t=PI+arctg(b/a)
//Daca a>0 si b>0 t=PI+arctg(b/a)
//Daca a>0 si b<0 t=2*PI+arctg(b/a)
if(a<0)
if(b<0)
//FUNCTIE PT CITIREA unui obiect numar complex algebric z= a+bi
void complex_t::cit_z_algeb(char nume1[N])
if(a==0&&b>0)
if(a==0&&b<0)
t1=atan(b/a);
//Daca a<0, t=PI+arctg(b/a)
//Daca a>0 si b>0 t=PI+arctg(b/a)
//Daca a>0 si b<0 t=2*PI+arctg(b/a)
if(a<0)
if(b<0)
gotoxy(2,5);
getch();
//FUNCTIE PT CITIREA unui obiect numar complex trigonometric
// z=r(cos t+i sin t)
void complex_t::cit_z_trigo(char nume1[N])
//FUNCTIE PENTRU AFISAREA MENIULUI de rezolvare
void meniu_op(char aleg)
}
void main(void)
//sf switch
if(alegere=='0')
} //sf for
getch();
|