Másodfokú egyenlet
A matematikában a másodfokú egyenlet egy olyan egyenlet, amely ekvivalens algebrai átalakításokkal olyan egyenlet alakjára hozható, melynek egyik oldalán másodfokú polinom szerepel, tehát az ismeretlen (x) legmagasabb hatványa a négyzet – a másik oldalán nulla (redukált alak). A másodfokú egyenlet általános kanonikus alakja tehát:
Az , és betűket együtthatóknak nevezzük: az együtthatója, az együtthatója, és a konstans együttható.
Megoldása
szerkesztésA valós vagy komplex együtthatójú másodfokú egyenletnek két komplex gyöke van, amelyeket általában és jelöl, noha ezek akár egyezőek is lehetnek. A gyökök kiszámítására a másodfokú egyenlet megoldóképletét használjuk.
A másodfokú egyenlet megoldóképletében a gyökjel alatti kifejezést az egyenlet diszkriminánsának nevezzük: .
Ha valós együtthatós az egyenlet, akkor
- D > 0 esetén két különböző valós gyöke van,
- D = 0 esetén két egyenlő (kettős gyöke) van,
- D < 0 esetén nincs megoldása a valós számok között.
Megoldóképlet levezetése teljes négyzetté alakítással
szerkesztésA másodfokú egyenlet megoldóképletét a teljes négyzetté való kiegészítéssel vezethetjük le.
Elosztva a másodfokú egyenletet -val (ami megengedett, mivel ).
ami átrendezve
Az egyenletnek ebben a formájában a bal oldalt teljes négyzetté alakítjuk. Egy konstanst adunk az egyenlőség bal oldalához, amely alakú teljes négyzetté egészíti ki. Mivel ebben az esetben , ezért , így négyzetét adva mindkét oldalhoz azt kapjuk, hogy
A bal oldal most teljes négyzete. A jobb oldalt egyszerű törtként írhatjuk fel, a közös nevező .
Négyzetgyököt vonva mindkét oldalból
Kivonva -t mindkét oldalból megkapjuk a megoldóképletet:
Szélsőérték helye:
Ha a diszkrimináns értéke negatív, a következőképpen kell számolni:
A megoldás ilyenkor egy komplex konjugált gyökpár lesz.
Alternatív módja a megoldóképlet levezetésének
szerkesztésAz előző levezetéssel szemben szinte törtmentesen is teljes négyzetté alakíthatunk, ha első lépésben beszorzunk -val. Ekkor a következőképpen járhatunk el:
Végeredményül pedig ugyanúgy eljutunk a közismert képlethez:
Viète-formulák
szerkesztésA Viète-formulák egyszerű összefüggések a polinomok gyökei és együtthatói között. A másodfokú egyenlet esetében a következő formájúak:
Kódok
szerkesztésHTML(JavaScript)
szerkesztés<!-- Ez meg tudja oldani a komplex gyököket is. -->
<html>
<head>
<title>Másodfokú egyenlet megoldó</title>
</head>
<body>
<form id='page' name='page'>
<div style="margin: 20px;">
<h1>Másodfokú egyenlet megoldó</h1>
<p><input name='a' size=4> * x<sup>2</sup> + <input name='b' size=4> * x + <input name='c' size=4> = 0
<p><input type='button' value='Megold' onclick='root();'></p>
<hr>
<p>x<sub>1</sub> = <input name='x1' size=16 readonly> + <input name='x1i' size=16 readonly> i</p>
<p>x<sub>2</sub> = <input name='x2' size=16 readonly> + <input name='x2i' size=16 readonly> i</p>
</div>
</form>
<script>
function root()
{
a = parseFloat(document.page.a.value);
b = parseFloat(document.page.b.value);
c = parseFloat(document.page.c.value);
if (a == 0)
{
alert("Az x^2 együtthatója nem lehet 0.");
}
else
{
d = b * b - 4 * a * c;
if (d >= 0)
{
x1 = ((-b+Math.sqrt(d))/2/a);
x2 = ((-b-Math.sqrt(d))/2/a);
x1i = x2i = 0;
}
else
{
x1 = x2 = (-b/2/a);
x1i = (Math.sqrt(-d)/2/a);
x2i = (-Math.sqrt(-d)/2/a);
}
document.page.x1.value = x1;
document.page.x2.value = x2;
document.page.x1i.value = x1i;
document.page.x2i.value = x2i;
}
}
</script>
</body>
</html>
C++
szerkesztés// Ez meg tudja oldani a komplex gyököket is
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float a, b, c, x1, x2, d, realPart, imaginaryPart;
cout << "Enter coefficients a, b and c: " << endl;
cout << "a=";
cin >> a;
cout << "b=";
cin >> b;
cout << "c=";
cin >> c;
d = b * b - 4 * a * c;
if (d > 0) {
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
cout << "Roots are real and different." << endl;
cout << "x1 = " << x1 << endl;
cout << "x2 = " << x2 << endl;
} else if (d == 0) {
cout << "Roots are real and same." << endl;
x1 = (-b + sqrt(d)) / (2 * a);
cout << "x1 = x2 =" << x1 << endl;
} else {
realPart = -b / (2 * a);
imaginaryPart = sqrt(-d) / (2 * a);
cout << "Roots are complex and different." << endl;
cout << "x1 = " << realPart << "+" << imaginaryPart << "i" << endl;
cout << "x2 = " << realPart << "-" << imaginaryPart << "i" << endl;
}
return 0;
}
Források
szerkesztés- Weisstein, Eric W.: Másodfokú egyenlet (angol nyelven). Wolfram MathWorld