Tôi đang cố gắng viết một hàm trong C++ để giải quyết X bằng phương trình bậc hai. Đây là những gì tôi đã viết ban đầu, mà dường như để làm việc càng lâu càng không có con số phức tạp cho một câu trả lời:Giải phương trình bậc hai trong C++
float solution1 = (float)(-1.0 * b) + (sqrt((b * b) - (4 * a * c)));
solution1 = solution1/(2*a);
cout << "Solution 1: " << solution1 << endl;
float solution2 = (float)(-b) - (sqrt((b*b) - (4 * a * c)));
solution2 = solution2/(2*a);
cout << "Solution 2: " << solution2;
Nếu, ví dụ, tôi sử dụng phương trình: x^2 - x - 6, tôi lấy giải pháp 3, -2 một cách chính xác.
Câu hỏi của tôi là làm thế nào tôi sẽ giải thích cho số phức .... ví dụ, đưa ra phương trình:
x^2 + 2x + 5
Giải quyết bằng tay, tôi sẽ nhận được -1 + 2i, -1 - 2i.
Vâng, tôi đoán hai câu hỏi, tôi có thể viết ở trên tốt hơn và cũng làm cho nó chiếm số phức?
Cảm ơn bạn đã trợ giúp!
Những người khác cung cấp câu trả lời tốt vì vậy không có lý do gì để tôi cố gắng vượt qua chúng;) Tuy nhiên, nếu bạn muốn một giải pháp tổng quát hơn cho phương trình ax^2 + bx + c = 0, hãy nhớ rằng a = = 0 phải là giá trị hợp lệ. Điều này sẽ dẫn đến một phân chia bằng không, vì vậy bạn phải chăm sóc riêng trường hợp này. Trong trường hợp này nó có nghĩa là bạn bị bỏ lại với một phương trình tuyến tính với một gốc. Chúc mừng! – ralphtheninja
Bạn ngụ ý rằng bạn quan tâm đến các rễ phức tạp, nhưng những hệ số phức tạp trong phương trình ban đầu thì sao? –
Hệ số phức tạp đòi hỏi một cách tiếp cận hoàn toàn khác. Vì vậy, đó sẽ là câu hỏi tiếp theo :) * scurrs off và chuẩn bị một câu trả lời trước khi tay * – ralphtheninja