Cursul 1 1. Introducere Corpul numerelor complexe Dezvoltarea istorică a gândirii matematice a urmărit îndeaproape evoluţia ideii de număr. Această ev

Documente similare
Gheorghe IUREA Adrian ZANOSCHI algebră geometrie clasa a VII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA 45 Matematică. Clasa a VII-

Dorel LUCHIAN Gabriel POPA Adrian ZANOSCHI Gheorghe IUREA algebră geometrie clasa a VIII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA

PROGRAMA CONCURSULUI NAŢIONAL

Examenul de bacalaureat 2012

Microsoft Word - cap1p4.doc

Microsoft Word - D_ MT1_II_001.doc

Cursul 8 Funcţii analitice Vom studia acum comportarea şirurilor şi seriilor de funcţii olomorfe, cu scopul de a dezvălui o proprietate esenţială a ac

DAN LASCU ADRIANA-LIGIA SPORIŞ ANDA OLTEANU PAUL VASILIU MATEMATICĂ. CULEGERE DE PROBLEME TIP GRILĂ PENTRU ADMITEREA ÎN ACADEMIA NAVALĂ MIRCEA CEL BĂT

Prelegerea 4 În această prelegere vom învăţa despre: Algebre booleene; Funcţii booleene; Mintermi şi cuburi n - dimensionale. 4.1 Definirea algebrelor

Facultatea de Matematică Anul II Master, Geometrie Algebrică Mulţimi algebrice ireductibile. Dimensiune 1 Mulţimi ireductibile Propoziţia 1.1. Fie X u

Examenul de bacalaureat 2012

Examenul de bacalaureat 2012

Universitatea Politehnica din Bucureşti 2019 Disciplina: Geometrie şi Trigonometrie G1 * Varianta A 1. Ştiind cos x = 3 2, atunci sin2 x

FIŞA DISCIPLINEI

Cursul 12 (plan de curs) Integrale prime 1 Sisteme diferenţiale autonome. Spaţiul fazelor. Fie Ω R n o mulţime deschisă şi f : Ω R n R n o funcţie de

Laborator 3

Cursul 7 Formula integrală a lui Cauchy Am demonstrat în cursul precedent că, dacă D C un domeniu simplu conex şi f : D C o funcţie olomorfă cu f cont

BAC 2007 Pro Didactica Programa M1 2 Rezolvarea variantei 36 versiune finală Redactia Pro Didactica Suportul pe net:

Microsoft Word - Programa finala olimpiadei matematica 2007 gimnaziu.doc

MD.09. Teoria stabilităţii 1

C:/Users/Lenovo/Dropbox/activitate matematica/cursuri/MS ETTI /msetti.dvi

Cursul 13 Mulţimi Julia Fie f : C C o funcţie complexă şi fie f n = f f f iterata de ordin n a lui f. Peste tot în continuare vom presupune că f este

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Microsoft Word - Programa_Evaluare_Nationala_2011_Matematica.doc

UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ Concurs MATE-INFO UBB 6 aprilie 2019 Proba scrisă la MATEMATICĂ NOTĂ IM

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

Pachete de lecţii disponibile pentru platforma AeL

Notiuni de algebra booleana

Şiruri de numere reale Facultatea de Hidrotehnică Universitatea Tehnică Gheorghe Asachi Iaşi, 2015 Analiză Matematică Lucian Maticiuc 1 / 29

Prelegerea 3 În această prelegere vom învăţa despre: Clase speciale de latici: complementate. modulare, metrice, distributive şi 3.1 Semi-distributivi

Probleme date la examenul de logică matematică şi computaţională. Partea a II-a Claudia MUREŞAN Universitatea din Bucureşti Facultatea de Matematică ş

Şcoala ………

Elemente de aritmetica

20 SUBIECTE DE EXAMEN - De fapt, în pofida acestor probleme, până la urmă tot vom logaritma, căci aceasta este tehnica naturală în context. Trebuie do

Matematica VI

Clasa IX 1. O lăcustă face salturi, fiecare salt în linie dreaptă şi de două ori mai lung ca precedentul. Poate vreodată lăcusta să revină în punctul

matematica

I

Cursul 10 Fractali de tip Newton Vom prezenta în continuare o nouă modalitate de generare a fractalilor, modalitate care îşi are originea într-o probl

Teoreme cu nume 1. Problema (Năstăsescu IX, p 147, propoziţia 5) Formula lui Chasles Pentru orice puncte M, N şi P avem MN + NP = MP.

PROGRAMARE ORIENTATA PE OBIECTE

COMENTARII FAZA JUDEŢEANĂ, 9 MARTIE 2013 Abstract. Personal comments on some of the problems presented at the District Round of the National Mathemati

Spatii vectoriale

CURBE BÉZIER În CAGD se utilizează adesea curbele polinomiale, adică acele curbe definite de o parametrizare polinomială: C : [a, b] R 3 C(t) = (x(t),

Distanţa euclidiană (indusă de norma euclidiană) (în R k ). Introducem în continuare o altă aplicaţie, de această dată pe produsul cartezian R k XR k,

programa_olimpiada_matematica_IX-XII_

Analiz¼a Matematic¼a - Curs 6 M¼ad¼alina Roxana Buneci

Noțiuni matematice de bază

Aero-BCD, , Prof. L. Costache & M. Olteanu Notițe de Adrian Manea Seminar 5 Șiruri și serii de funcții. Serii de puteri 1 Șiruri de funcții D

ETTI-AM2, , M. Joița & A. Niță Notițe de Adrian Manea Seminar 11 Transformarea Laplace Aplicații Transformarea Z Ecuații și sisteme diferenți

Cursul 14 Mulţimea lui Mandelbrot Mulţimile şi funcţiile cu caracter excepţional (mulţimea lui Cantor, insula lui Koch, funcţiile lui Weierstrass şi T

SUBPROGRAME

E_d_Informatica_sp_MI_2015_bar_02_LRO

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Școala: Clasa a V-a Nr. ore pe săptămână: 4 Profesor: MATEMATICĂ Clasa a V-a Aviz director PLANIFICARE CALENDARISTICĂ ORIENTATIVĂ Nr. crt. Unitatea de

E_d_Informatica_sp_SN_2014_bar_10_LRO

D.Rusu, Teoria măsurii şi integrala Lebesgue 6 MĂSURA LEBESGUE Cursul 5 Teorema 6.26 Există submulţimi ale lui R care nu sunt măsurabile Lebesgue. Dem

Paradigme de programare

LOGICA MATEMATICA SI COMPUTATIONALA Sem. I,

METODE NUMERICE ÎN INGINERIE

Cursul 6 Cadru topologic pentru R n În continuarea precedentei părţi, din cursul 5, dedicată, în întregime, unor aspecte de ordin algebric (relative l

GHEORGHE PROCOPIUC PROBLEME DE ANALIZĂ MATEMATICĂ ŞI ECUAŢII DIFERENŢIALE IAŞI, 2007

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x.

Coordonate baricentrice Considerăm în plan un triunghi ABC şi un punct Q în interiorul său, fixat arbitrar. Notăm σ c = aria ( QAB) σ a = aria ( QBC),

gaussx.dvi

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Alexandru Ioan Cuza din Iaşi 1.2 Facultatea Facultatea de

I. Partea introductivă Proiectul unității de învățare CONCEPTUL DE MATRICE ŞCOALA: Colegiul Național Petru Rareș Suceava CLASA: a XI a- matematică / a

Probleme rezolvate de fizică traducere de Nicolae Coman după lucrarea

Examenul de bacalaureat 2012

Calcul Numeric

Lucian L. TURDEANU Georgeta D. POP (MANEA) BAZELE GEOMETRICE ALE FOTOGRAMETRIEI CONSPRESS BUCUREŞTI 2009

Logică și structuri discrete Mulțimi Casandra Holotescu

Algebra si Geometri pentru Computer Science

BAC 2007 Pro Didactica Programa M1 2 Rezolvarea variantei 61 versiune finală Redactia Pro Didactica Suportul pe net:

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Alexandru Ioan Cuza din Iaşi 1.2 Facultatea Facultatea de

Tiberiu Trif Analiză matematică 2 Calcul diferențial și integral în R n

PAS cap. 2: Reprezentări rare p. 1/35 Prelucrarea avansată a semnalelor Capitolul 2: Reprezentări rare Bogdan Dumitrescu Facultatea de Automatică şi C

Microsoft Word - Matematika_kozep_irasbeli_javitasi_0911_roman.doc

Slide 1

Microsoft Word - probleme_analiza_numerica_ses_ian09.rtf

www. didactic.ro Aplicaţii ale trigonometriei în geometrie Trecem în revistă următoarele rezultate importante: 1) Teorema sinusurilor: Teorema cosinus

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

2

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Geometrie afină Conf. Univ. Dr. Cornel Pintea cpintea math.ubbcluj.ro Cuprins 1 Săptămâna Endomorfismele unui spaţiu afin Transla

U.T.Cluj-Napoca, C.U.N. Baia Mare Facultatea: Inginerie PLAN de INVĂŢĂMÂNT Domeniul: Calculatoare şi Tehnologia Informaţiei anul univ Progr

02. Analiza matematica 3 - MI 2

CONCURSUL NAŢIONAL DE MATEMATICA PANAITOPOL EDIŢIA a X-a, TULCEA, 21 aprilie 2018 Clasa a VII - a 1. Se consideră numerele reale x, y şi z, cel puţin

Cursul 12 Şiruri recurente în planul complex Vom studia, în continuare, comportarea în raport cu data iniţială a şirurilor definite prin relaţii de re

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Microsoft Word - a5+s1-5.doc

Examenul de bacalaureat 2012

C10: Teoria clasică a împrăștierii Considerăm un potențial infinit în interiorul unui domeniu sferic de rază a și o particulă incidentă (Figura 1) la

Paradigme de Programare

Microsoft Word - Curs1.docx

Microsoft Word - CarteC.doc

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

rrs_12_2012.indd

Transcriere:

Cursul 1 1. Introducere Corpul numerelor complexe Dezvoltarea istorică a gândirii matematice a urmărit îndeaproape evoluţia ideii de număr. Această evoluţie, exprimată succint prin şirul de incluziuni N Z Q R C, nu a fost nicicum liniară ci foarte sinuoasă, cu etape suprapuse sau chiar în ordine inversă. Primele au apărut numerele naturale 1, 2, 3,..., urmate de fracţii şi rapoarte. In lumea antică deja apăruseră semne că numai acestea nu sunt suficiente; de exemplu, incomensurabilitatea diagonalei pătratului cu latura sa era cunoscută din vremea lui Pitagora. Următoarea achiziţie a fost numărul zero care, plecând din India, a ajuns în Europa în jurul anului 1000, odată cu scrierea poziţională a numerelor, prin intermediul cărţilor lui Muhammad al-khwarizmi, persanul de la numele căruia provine termenul de algoritm. Numerele negative şi imaginare apar în acelaşi timp, în Italia secolului al XVIlea, în parte tot sub influenţa surselor islamice şi bizantine. Aceste numere, cu denumiri care sugerează o acceptare doar formală a existenţei lor, s-au dovedit utile în rezolvarea ecuaţiilor algebrice. Astfel, unitatea negativă, 1, a fost definită ca fiind soluţia ecuaţiei x + 1 = 0, iar unitatea imaginară, 1, ca soluţie a ecuaţiei x 2 + 1 = 0, chiar dacă printre numerele deja cunoscute nu exista niciunul care să verifice vreo una dintre aceste două ecuaţii. Calculul formal cu numere complexe, adică cu expresii de forma a + b 1 s-a dezvoltat prin analogie cu cel al numerelor iraţionale pătratice de forma a + b 2. În ciuda numeroaselor rezultate obţinute cu astfel de numere în secolele XVII-XVIII, matematicienii au avut reţineri cu privire la utilizarea lor. Îndoiala asupra existenţei acestor numere a dispărut odată cu apariţia unei interpretări geometrice foarte simple a lor, şi anume reprezentarea lor ca puncte în plan. Folosirea sistematică şi popularizarea reprezentării geometrice a numerelor complexe o datorăm lucrărilor lui Carl Friedrich Gauss (1777-1855). Denumirile nefericite, care mai provoacă şi astăzi confuzii, de numere reale şi numere imaginare au fost introduse de René Descartes (1596 1650) pentru clasificarea rădăcinilor polinoamelor. Inţelegerea deplină, atât a numerelor reale cât şi a celor complexe, a avut loc concomitent, în secolul al XIX-lea, odată cu fundamentarea analizei matematice începută de Augustin-Louis Cauchy (1789 1857). 1

Mulţimea numerelor complexe C, apărută ca instrument de lucru în rezolvarea ecuaţiilor polinomiale, s-a dovedit a fi chiar cadrul natural al acestui domeniu, dacă luăm în consideraţie, de exemplu, Teorema fundamentală a algebrei, enunţată în 1608 şi demonstrată două secole mai târziu, în 1806, care afirmă că orice polinom cu coeficienţi reali sau complecşi are măcar o rădăcină în C. Dezvoltarea teoriei numerelor complexe a continuat cu trecerea de la funcţii polinomiale la funcţii oarecare de o variabilă complexă, cu studiul derivabilităţii şi integrabilităţii acestora, ajungându-se în final la stabilirea unui capitol fundamental în matematică, capitol numit Analiză complexă, prin analogie cu Analiza matematică a funcţiilor de variabilă reală. Teoria funcţiilor de o variabilă complexă a pătruns, prin intermediul ecuaţiilor diferenţiale mai ales, în numeroase domenii din ştiinţă şi tehnică. De exemplu, în electrotehnică toate mărimile sinusoidale care caracterizează curentul electric sunt definite prin funcţii cu valori complexe. Sub presiunea numeroaselor lor utilizări, numerele complexe au ajuns şi în limbajele de programare, în C++ sub formă de clase în biblioteca standard iar în C # chiar ca tip predefinit al limbajului. In cursul pe care îl vom parcurge în acest semestru vom prezenta elementele de bază ale analizei complexe, cu accent pe aplicaţiile acestora în principal în grafica pe calculator, dar nu numai. Deoarece în C #, limbajul de programare pe care l-am ales pentru programele noastre ilustrative, modul de lucru cu tipul Complex este destul de greoi, după cum se vede, de exemplu, din secvenţa de cod Complex z = new Complex(12, 6); Console.WriteLine(z.Imaginary); am preferat să ne definim pentru numere complexe propriul tip de dată, şi anume structura Complex din fişierul Complex.cs ataşat. 2. Forma algebrică a unui număr complex Mulţimea numerelor complexe C se defineşte ca fiind mulţimea perechilor de numere reale C = R R = (x, y) x, y R dotată cu două operaţii binare, adunarea: şi înmulţirea (x 1, y 1 ) + (x 2, y 2 ) = (x 1 + x 2, y 1 + y 2 ), (x 1, y 1 ), (x 2, y 2 ) C, (x 1, y 1 )(x 2, y 2 ) = (x 1 x 2 y 1 y 2, x 1 y 2 + x 2 y 1 ), (x 1, y 1 ), (x 2, y 2 ) C. 2

Teoremă. (C, +, ) este un corp comutativ. Prin corespondenţa x (x, 0), R devine un subcorp al lui C. Demonstraţie. Este evident că adunarea şi înmulţirea sunt operaţii interne. Asociativitatea şi comutativitatea adunării sunt imediate, (0, 0) este element neutru iar opusul z al lui z = (x, y) este ( x, y). Asociativitatea înmulţirii se verifică prin calcul, comutativitatea este evidentă, iar (1, 0) este elementul unitate. Pentru un z = (a, b) (0, 0) găsirea inversului z 1 = (x, y) revine la rezolvarea sistemului liniar ax by = 1 bx + ay = 0, care, deoarece = a 2 + b 2 0, are soluţia unică z 1 = ( ) a b, a 2 +b 2 a 2 +b. Distributivitatea înmuţirii faţă de adunare se verifică uşor prin calcul, şi astfel am arătat 2 că (C, +, ) este un corp comutativ. In sfârşit, este clar că aplicaţia x (x, 0), definită pe R cu valori în C este injectivă şi are proprietăţile (x 1, 0) + (x 2, 0) = (x 1 + x 2, 0) (x 1, 0)(x 2, 0) = (x 1 x 2, 0), de unde rezultă imediat că imaginea sa (x, 0) x R C, este un subcorp al lui C izomorf cu corpul numerelor reale R. Observaţie. Fiind dat un număr complex z = (x, y), convenim să numim numerele reale x şi y ca fiind partea reală şi, respectiv, partea imaginară a lui z, şi vom utiliza notaţiile x = Re z, y = Im z. Aplicaţiile z Re z şi z Im z, definite pe C cu valori în R păstrează operaţia de adunare, adică dar nu şi operaţia de înmulţire. Re (z 1 + z 2 ) = Re z 1 + Re z 2 Im (z 1 + z 2 ) = Im z 1 + Im z 2, A doua parte a teoremei de mai sus afirmă că mulţimea numerelor reale R poate fi identificată, prin izomorfismul de corpuri dat de aplicaţia de scufundare x R (x, 0) C, cu mulţimea numerelor complexe cu partea imaginară nulă Aceasta înseamnă că, în loc de R = z Re z = 0 = (x, 0) x R C. R = R C vom scrie R C, 3

iar numerele complexe de forma (x, 0) vor fi notate cu x atunci când nu există pericol de confuzie. Mai mult, se verifică imediat că orice număr complex z = (x, y) poate fi descompus sub forma şi, prin urmare, cu notaţia z = (x, y) = (x, 0) + (0, y) = (x, 0) + (0, 1)(y, 0), i = (0, 1), obţinem aşa numita formă algebrică a lui z: z = x + iy, unde, subliniem, x, y şi i sunt numere complexe. Din definiţia înmultirii avem că (0, 1)(0, 1) = ( 1, 0) = (1, 0), relaţie care, cu convenţiile făcute, se scrie i 2 = 1. Aplicând regulile de calcul dintr-un corp comutativ, deducem mai departe că (x 1 + iy 1 )(x 2 + iy 2 ) = x 1 x 2 + ix 1 y 2 + iy 1 x 2 + i 2 y 1 y 2 = x 1 x 2 y 1 y 2 + i(x 1 y 2 + y 1 x 2 ), justificând astfel de ce înmulţirea numerelor complexe a fost definită atât de complicat. Să urmărim cum au fost implementate cele de mai sus în structura Complex definită în fişierul Complex.cs. Egalitatea C = R R se reflectă direct în structura unui obiect de tip Complex, care este format numai din două câmpuri de tip double iniţializate de constructorul obiectului: public struct Complex public double x; public double y; public Complex(double x, double y) this.y = y; this.x = x;... 4

Definiţiile operaţiilor cu numere complexe apar, exact sub forma dată, la supraîncărcarea operatorilor corespunzători: public static Complex operator +(Complex zst, Complex zdr) return new Complex(zst.x + zdr.x, zst.y + zdr.y); public static Complex operator *(Complex zst, Complex zdr) return new Complex(zst.x * zdr.x - zst.y * zdr.y, zst.y * zdr.x + zst.x * zdr.y); Mai mult, este implementată chiar şi aplicaţia de scufundare a lui R în C, şi anume la definirea operatorului de conversie implicită de la double la Complex: public static implicit operator Complex(double x) return new Complex(x, 0); Această conversie implicită ne permite, printre altele, să lucrăm în cod cu numere complexe sub formă algebrică: Complex i = new Complex(0,1); Complex z1 = 1 + 2*i; Definiţie. Conjugatul lui z = x + iy este numărul complex z = a ib. Propoziţie. Aplicaţia z z are următoarele proprietăţi imediate: (i) z 1 + z 2 = z 1 + z 2 (ii) z 1 z 2 = z 1 z 2 (iii) z = z (iv) z = z z R (v) Re z = z+ z 2 (vi) Im z = z z 2i Verificăm de exemplu (ii) z 1 z 2 = (x 1 iy 1 )(x 2 iy 2 ) = (x 1 x 2 y 1 y 2 ) i(x 1 y 2 + x 2 y 1 ) = z 1 z 2. Observaţie. iar prin împărţire În corpul comutativ (C, +, ) prin scădere se înţelege z 1 z 2 = z 1 + ( z 2 ), = z 1 z 1 z 2 Este clar că din (i) şi (ii) urmează şi z 1 5 2.

(vii) z 1 z 2 = z 1 z 2 ( ) z (viii) 1 z 2 = z 1 z 2 (ix) z n = z n Definiţie. Modulul lui z = x + iy este numărul real z = x 2 + y 2. Propoziţie. Aplicaţia z z are următoarele proprietăţi: (i) z 2 = z z (ii) z = z (iii) z = 0 z = 0 (iv) z 1 z 2 = z 1 z 2 (v) z 1 + z 2 z 1 + z 2 Verificăm de exemplu inegalitatea triunghiulară (v): z 1 + z 2 2 = (z 1 + z 2 )(z 1 + z 2 ) = (z 1 + z 2 )(z 1 + z 2 ) = = z 1 z 1 + z 1 z 2 + z 2 z 1 + z 2 z 2 = z 1 2 + (z 1 z 2 + z 1 z 2 ) + z 2 2 = z 1 2 + 2Re z 1 z 2 + z 2 2 z 1 2 + 2 z 1 z 2 + z 2 2 = z 1 2 + 2 z 1 z 2 + z 2 2 = ( z 1 + z 2 ) 2. 3. Forma trigonometrică a unui număr complex Identificând R cu o dreaptă pe care se consideră o axă a numerelor Ox, urmează că C = R R se identifică cu un plan raportat la un sistem de coordonate cartezian xoy, asociind fiecărui punct M de coordonate (x, y) numărul complex z = x + iy, numit afixul lui M. Vom trece acum la coordonate polare. Propoziţie. Fie z C, z 0. Există şi este unic θ ( π, π], numit argumentul numărului complex z şi notat arg z, astfel încât cos θ = Re z z şi sin θ = Im z z. Demonstraţie. Fie z = x + iy, cu z = 0. Din z = x 2 + y 2 x 2 = x rezultă că x [ 1, 1], deci există z θ 0 = arccos x z 6 [ 0, π ].

( Avem sin 2 θ 0 = 1 cos 2 y 2. θ 0 = z ) Dacă y 0 definim θ = θ0, altfel θ = θ 0. Unicitatea lui θ = arg z decurge din echivalenţa cos θ = cos φ k Z a. î. θ φ = 2kπ, sin θ = sin φ prin urmare, θ, φ ( π, π ] implică θ = φ. Observaţie. Fie punctul M(x, y) cu afixul z = x + iy. Raza ρ = z 0 şi unghiul θ = arg z ( π, π ] reprezintă chiar coordonatele polare ale lui M. Legătura dintre cele două tipuri de coordonate este dată de formulele x = ρ cos θ ρ = x2 + y 2 x y = ρ sin θ θ = ± arccos x 2 +y 2 unde semnul din faţa lui arccos este dat de semnul lui y. Este uşor de văzut că argumentul unui număr complex z cu Re z 0 se poate afla şi cu formula θ = arctg y x + kπ, unde k are una din valorile 0, 1 sau 1, în funcţie de cadranul în care cade z. Cu aceste notaţii obţinem imediat forma trigonometrică a lui z; z = x + iy = ρ cos θ + iρ sin θ = ρ(cos θ + i sin θ). Să observăm că aceste două modalităţi de exprimare a unui număr complex au fost implementate în structura Complex prin metodele statice 7

public static Complex setreim(double x, double y) //forma algebrica return new Complex(x, y); şi public static Complex setrotheta(double Ro, double Theta) //forma trigonometrica return new Complex(Ro * Math.Cos(Theta), Ro * Math.Sin(Theta)); în timp ce modulul şi argumentul unui număr complex sunt date de proprietăţile public double Ro return Math.Sqrt(x * x + y * y); public double Theta return Math.Atan2(y, x); Observaţie. Conform implemetării de mai sus, argumentul θ = argz returnat de proprietatea Theta este în intervalul ( π, π], conform cerinţelor. Acest fapt este utilizat, de exemplu, în următorul test care decide dacă punctul z se află sau nu în semiplanul stâng determinat de dreapta ab parcursă de la a la b: public bool zestelastangaluiab(complex z, Complex a, Complex b) Complex r=(z-a)/(b-a); if (r.theta > 0) return true; else return false; 8

4. Structura Complex Prezentăm în continuare codul sursă al implementării numerelor complexe în C #. public struct Complex private double x; private double y; public Complex(double x, double y) this.y = y; this.x = x; public override string ToString() double eps = 1.0e-12; if (Math.Abs(y) < eps) // z=real return string.format("0", x); if (Math.Abs(x) < eps) // z=imaginar if (Math.Abs(y - 1) < eps) //z=i return "i"; if (Math.Abs(y + 1) < eps) //z=-i return "-i"; return string.format("0i", y); if (y > 0) return string.format("0+1i", x, y); return string.format("01i", x, y); public void show() Console.WriteLine(this); public double Ro return Math.Sqrt(x * x + y * y); public double Ro2 9

return x * x + y * y; public double Theta return Math.Atan2(y, x); public double Re return x; set.x = value; public double Im return y; set y = value; public Complex conj return new Complex(x, -y); public static Complex setrotheta(double Ro, double theta) return new Complex(Ro * Math.Cos(theta), 10

Ro * Math.Sin(theta)); public static Complex setreim(double x, double y) return new Complex(x, y); public static Complex operator +(Complex zst, Complex zdr) return new Complex(zst.x + zdr.x, zst.y + zdr.y); public static Complex operator +(Complex zst) return new Complex(zst.x, zst.y); public static Complex operator -(Complex zst, Complex zdr) return new Complex(zst.x - zdr.x, zst.y - zdr.y); public static Complex operator -(Complex zst) return new Complex(-zst.x, -zst.y); public static Complex operator *(Complex zst, Complex zdr) return new Complex(zst.x * zdr.x - zst.y * zdr.y, zst.y * zdr.x + zst.x * zdr.y); public static Complex operator /(Complex zst, Complex zdr) double r = zdr.ro2; return new Complex((zst.x * zdr.x + zst.y * zdr.y) / r, (zst.y * zdr.x - zst.x * zdr.y) / r); public static implicit operator Complex(double x) return new Complex(x, 0); public static bool operator ==(Complex zst, Complex zdr) return (zst - zdr).ro2 < 1.0e-12; public static bool operator!=(complex zst, Complex zdr) return (zst - zdr).ro2 >= 1.0e-12; 11

public override bool Equals(object o) if (o.gettype()!= this.gettype()) return false; else return this == (Complex)o; public override int GetHashCode() return 0; 12