Rezolvarea Ecuatiilor Diofantice

Imagine preview
(7/10)

Aceasta fituica rezuma Rezolvarea Ecuatiilor Diofantice.
Mai jos poate fi vizualizat un extras din document (aprox. 2 pagini).

Arhiva contine 1 fisier doc de 3 pagini .

Iti recomandam sa te uiti bine pe extras si pe imaginile oferite iar daca este ceea ce-ti trebuie pentru documentarea ta, o poti descarca. Ai nevoie de doar 4 puncte.

Domeniu: Calculatoare

Extras din document

Rezolvarea Ecuatiilor Diofantice

Orice Congruenta Ax1+cº0 (Mod B) Se Poate Scrie Ca O Ecuatie Ax1+bx2+c=0 (În Care A¹ 0), B³1 si C, X1, X2 Sunt Numere Întregi. Daca A, B, C Sunt Numere Întregi Date si X1 si X2 Sunt Considerate Necunoscute, Problema Se Reduce La Gasirea Solutiilor Întregi Ale Unei Ecuatii Liniare Cu Coeficienti Întregi. Daca F(X1,…, Xn) Este Un Polinom În X1,…, Xn Cu Coeficienti Întregi, Atunci Ecuatia F(X1,…, Xn) = A Se Numeste Diofantica Daca Solutiile Ei Sunt Numere Întregi. Denumirea Acestor Ecuatii Deriva De La Numele Matematicianului Grec Diofantos Din Alexandria. Daca O Astfel De Ecuatie Admite Solutii, Atunci Ea Admite O Infinitate De N-upluri Care O Satisfac.

În Continuare Se Va Trata Cazul N=2: Ax+by=c

Daca A si B Sunt Numere Prime Între Ele si X0, Y0 Constituie O Solutie Pentru Ax+by=c, Atunci Totalitatea Solutiilor Se Poate Reprezenta Sub Forma: X= X0+bt, Y= Y0 –at, Unde T Este Un Numar Întreg Oarecare. O Solutie A Ecuatiei Se Poate Obtine Cu Ajutorul Penultimei Fractii De Aproximare Pentru Reprezentarea Sub Forma De Fractie Continua A Lui A/B. Considerând Ca Penultima Fractie Este M/N, X0=nc, Y0=-mc.

Exemplu:

Fie Ecuatia: 43x+19y=2.

Fractiile De Aproximare Ale Lui 43/19 Sunt: 7/3, 9/4, 43/19.

Din Fractia 9/4 Se Obtine X0=4*2=8, Y0=-9*2=-18. Astfel, Solutia Generala Se Poate Scrie De Forma: X=8+19t si Y=-18-43t, Unde T Este Un Numar Oarecare.

Implementare

Algoritmul De Mai Sus Este Valabil, Dupa Cum Am Precizat, În Cazul Când Cele 2 Numere A si B Sunt Prime Între Ele. Daca Dorim Rezolvarea Unei Ecuatii În Care Cele 2 Numere Nu Sunt Neaparat Prime Între Ele, Se Poate Proceda În Felul Urmator: Se Calculeaza Cel Mai Mare Divizor Comun Al Lor (Sigur Este Diferit De 1), Iar Apoi Se Evalueaza Daca Ecuatie Poate Sau Nu Avea Solutii, În Functie De Valoarea Lui C. Daca C Este Divizibil Cu Cmmdc-ul Celor 2 Numere, Atunci Se Simplifica Întreaga Ecuatie Cu Cmmdc si Problema Se Reduce La Cea Prezentata Mai Sus. Daca C Nu Se Împarte Exact La Cmmdc, Atunci Putem Spune Ca Ecuatia Nu Are Solutii Întregi.

Pe Lânga Aceasta, Intervin O Serie De Cazuri Critice În Care Algoritmul De Mai Sus Nu Poate Fi Aplicat, Cum Ar Fi De Exemplu Cazurile În Care Nu Exista Penultima Fractie. Dar Se Poate Calcula Solutia si În Aceste Cazuri:

- A=0, B=0

În Acest Caz Solutia Depinde Valoarea Lui C:

- C=0 => X si Y Poate Fi Orice Numar Întreg

- C ¹ 0 => Nu Exista Solutii

- A=0, B¹ 0

Ecuatia Devine: By=c. Deci Y Se Poate Calcula, tinând Însa Cont Ca Vorbim Numai De Numere Întregi.

- A¹0, B= 0

Analog Cu Cazul Anterior.

Daca Unul Dintre Numerele A Sau B Are Valoarea 1 Nu Se Mai Poate Vorbi De Penultima Fractie De Aproximare, Deci si Aceste Cazuri Trebuie Tratate Separat.

O Alta Observatie Este Aceea Ca Fractia De Aproximare (M/N) Aproximeaza Fractia (A/B) În Plus Sau În Minus. De Aceea În La Sfârsit Trebuie Sa Corectez Rezultatul În Functie De Aceasta, tinând Seama si De Semnul Fractiei A/B.

Sursa Programului

#include <Stdio.H>

#include <Conio.H>

#include <Math.H>

Long Int V[100];

//Obtine Penultima Fractie De Aproximare

Void Get_mn(Long Int &a,Long Int &b,Int K)

{

If (K>0) { Long Int Aux=v[K-1]*b+a;

A=b;B=aux;

Get_mn(A,B,K-1);

}

Else A=a+b-(B=a);

}

Long Int _cmmdc(Long Int A,Long Int B)

{

While (A!=b)

If (A>B) A-=b;

Else B-=a;

Return A;

}

oid Stop()

{

Printf("Nu Exista Solutii...n");

}

Int Solutii(Long Int A,Long Int B,Long Int C,

Long Int &x0,Long Int &n1,Long Int &y0,Long Int &n2)

{

Long Int M,N,Cmmdc=1,_a,_b;

Int Nr=-1;

_a=labs(A);_b=labs(B);

If ((_a>1)&&(_b>1)) Cmmdc=_cmmdc(_a,_b);

If (Cmmdc!=1){

If (C%cmmdc) {Stop();Return 0;}

Else A/=cmmdc,B/=cmmdc,C/=cmmdc;

}

M=a;N=b;

If (!(A*b))

If (!A) If (!B)

{

//0=c

If (!C) Printf("X,YÎzn");

Else Stop();

Return 0;

}

Else

{ // By=c

If (C%b) Stop();

Else { Printf("XÎzn");

Printf("Y=%ldn",C/B);

}

Return 0;

}

Else

{ //Ax=c

If (C%a) Stop();

Else {Printf("X=%ldn",C/A);

Printf("YÎzn");

}

Return 0;

}

Fisiere in arhiva (1):

  • Rezolvarea Ecuatiilor Diofantice.doc