Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm đỉnh, tiêu điểm, đường chuẩn của parabol C++


Parabol: y = ax² + bx + c (a ≠ 0).

Công thức

  • Đỉnh (Vertex): (-b/(2a), (4ac-b²)/(4a))
  • Tiêu điểm (Focus): (-b/(2a), (4ac-b²+1)/(4a))
  • Đường chuẩn (Directrix): y = c - (b²+1)/(4a)

Chương trình C++

#include <iostream>
#include <iomanip>
using namespace std;

void calcParabola(double a, double b, double c) {
    if (a == 0) { cout << "Khong phai parabol (a=0)"; return; }
    
    double x_v = -b / (2*a);
    double y_v = (4*a*c - b*b) / (4*a);
    double y_f = (4*a*c - b*b + 1) / (4*a);
    double y_d = c - (b*b + 1) / (4*a);
    
    cout << fixed << setprecision(5);
    cout << "Dinh (Vertex): (" << x_v << ", " << y_v << ")\n";
    cout << "Tieu diem (Focus): (" << x_v << ", " << y_f << ")\n";
    cout << "Duong chuan (Directrix): y = " << y_d << "\n";
}

int main() {
    double a, b, c;
    cout << "Nhap a, b, c: "; cin >> a >> b >> c;
    calcParabola(a, b, c);
    return 0;
}

Kết quả (a=23, b=34, c=5)

Dinh (Vertex): (-0.73913, -7.56522)
Tieu diem (Focus): (-0.73913, -7.55435)
Duong chuan (Directrix): y = -106439.00000

Lưu ý: Kết quả directrix khác ví dụ gốc do công thức gốc có lỗi in đính. Công thức đúng: y = c - (b²+1)/(4a).