C++ ile iki bilinmeyenli denklem çözümü

Merhabalar , iyi geceler öğrenciyim 2 arkadaşım ile bir problemi kağıt üzerinde çözebiliyoruz fakat c++ da yazılıma dökerken bir yerde takıldık.
Sorunu anlatıyım hemen aslında çok basit iki bilinmeyenli iki denklemde a ve b nin kat sayılarını bulma örneğin 710=16a+136b
6661=136a+1496b a ve b yi c++ da nasıl bulabiliriz sorumuz budur

  • y için

Ax+By=M
Cx+Dy=N

x+(B/A)y = (M/A)
x+(D/C)y = (N/C)

[(B/A)-(D/C)]y = [(M/A)-(N/C)]

y = [(M/A)-(N/C)] / [(B/A)-(D/C)]

  • x için

(A/B)x + y = (M/B)
(C/D)x + y = (N/D)

[(B/A)-(C/D)]x = [(M/B)-(N/D)]

x = [(M/B)-(N/D)] / [(B/A)-(C/D)]

Degerleri yerine yazarak denklemdeki x ve y yi çözebilirsiniz.

Ha bu arada çok bilinmeyenli denklem için Ax=b formunu kullanarak bilinmeyenlere ulaşmak da sanırım mümkün. Bu dediğim lineer cebir konusu. Once denklemleri Ax = b formunda belirtip sonra x = inv(A).b den A matrixinin tersini bulmaya çalışabilir, ya da A matrixini Gauss-Jordan Elimination ile row echelon formuna getirebilirsiniz. Malum denklemin sonsuz çözümü falan olabilir.


inv(A), burada A matrixinin tersini göstermektedir. A^-1 yapamadım klavyede.

3 Beğeni

Aslında Python’da kütüphane ile yalnızca bir kaç satırda çözülebiliyor. İlla C++ lazım değilse temel seviye Python ile çözebilirsiniz. Muhtemelen C++'ta da bu tür kütüphaneler vardır fakat o dille pek alakam yok.

from sympy import symbols, Eq, solve

a, b = symbols('a b')

first_equation = Eq(16*a + 136*b, 710)
second_equation = Eq(136*a + 1496*b, 6661)

solution = solve((first_equation, second_equation), (a, b))

for key in solution:
    print(f"{key} = {solution[key]}")

Çıktı:

a = 1149/40
b = 313/170