द्विघात समीकरण
एक द्विघात समीकरण का रूप होता है: ax² + bx + c = 0
इसके मूल (roots) ज्ञात करने के लिए हम विविक्तकर (Discriminant) का उपयोग करते हैं:
D = b² - 4ac
मूलों के प्रकार
| विविक्तकर (D) | मूलों की प्रकृति | सूत्र |
|---|---|---|
| D > 0 | दो वास्तविक और अलग-अलग मूल | x₁ = (-b + √D)/2a, x₂ = (-b - √D)/2a |
| D = 0 | दो वास्तविक और समान मूल | x = -b/2a |
| D < 0 | दो सम्मिश्र मूल | x₁ = -b/2a + i√|D|/2a, x₂ = -b/2a - i√|D|/2a |
C प्रोग्राम
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void calc_roots(int a, int b, int c) {
if (a == 0) {
printf("अमान्य समीकरण (a शून्य नहीं हो सकता)\n");
return;
}
int d = b * b - 4 * a * c;
double sqrt_val = sqrt(abs(d));
if (d > 0) {
printf("मूल वास्तविक और अलग-अलग हैं:\n");
printf("x1 = %.4f\n", (double)(-b + sqrt_val) / (2 * a));
printf("x2 = %.4f\n", (double)(-b - sqrt_val) / (2 * a));
} else if (d == 0) {
printf("मूल वास्तविक और समान हैं:\n");
printf("x = %.4f\n", -(double)b / (2 * a));
} else {
printf("मूल सम्मिश्र हैं:\n");
printf("x1 = %.4f + i%.4f\n", -(double)b / (2 * a), sqrt_val / (2 * a));
printf("x2 = %.4f - i%.4f\n", -(double)b / (2 * a), sqrt_val / (2 * a));
}
}
int main() {
int a = 2, b = -5, c = 8;
calc_roots(a, b, c);
return 0;
}
आउटपुट
मूल सम्मिश्र हैं: x1 = 1.2500 + i3.1225 x2 = 1.2500 - i3.1225
सुधार के सुझाव
doubleका उपयोग करेंintके बजाय गुणांकों के लिएsqrt()के लिएmath.hशामिल करें- बड़े मानों के लिए ओवरफ्लो जांच जोड़ें
abs(d)के बजायfabs()का उपयोग करें double के लिए
उन्नत संस्करण
void calc_roots_advanced(double a, double b, double c) {
if (a == 0.0) { /* रैखिक समीकरण के रूप में संभालें */ }
double d = b*b - 4*a*c;
double denom = 2*a;
if (d >= 0) {
double sqrt_d = sqrt(d);
printf("x1 = %.4f, x2 = %.4f\n", (-b + sqrt_d)/denom, (-b - sqrt_d)/denom);
} else {
double real = -b/denom;
double imag = sqrt(-d)/denom;
printf("x1 = %.4f + i%.4f, x2 = %.4f - i%.4f\n", real, imag, real, imag);
}
}