Программа решения квадратного уравнения

В мире математики и научных вычислений квадратные уравнения играют ключевую роль, они встречаются практически во всех областях, от физики до инженерии. Квадратные уравнения имеют форму, которая может быть решена с помощью методов алгебры, их корни представляют собой точки пересечения параболы с осью x. Для решения этих уравнений часто используют программы, которые позволяют как математикам, так и любознательным людям быстро и точно найти значения неизвестных. В данной статье мы погрузимся в мир программирования и рассмотрим, как можно создать программу для решения квадратных уравнений.

Теория

Квадратное уравнение имеет вид:

Для решения квадратного уравнения сначала нужно вычислить дискриминант по формуле:

Далее нужно проверить значение дискриминанта:

  • Если D>0, то уравнение имеет два действительных корня x1 и x2.
  • Если D=0, то уравнение имеет один действительный корень x1 = x2.
  • Если D<0, то уравнение не имеет действительных корней.

Если корни существуют, то можно их вычислить по следующим формулам.

Если D>0:

Если D<0:

Это общий алгоритм решения квадратного уравнения. Реализация этого алгоритма будет отличаться в зависимости от выбранного языка программирования, но общие шаги можно применить в любом из них.

C++

Пример программы на C++, которая решает квадратное уравнение:

#include <iostream>
#include <cmath>

int main() {
    double a, b, c;
    double discriminant, x1, x2;

    // Ввод коэффициентов уравнения
    std::cout << "Введите коэффициент a: ";
    std::cin >> a;
    std::cout << "Введите коэффициент b: ";
    std::cin >> b;
    std::cout << "Введите коэффициент c: ";
    std::cin >> c;

    // Вычисление дискриминанта
    discriminant = b * b - 4 * a * c;

    // Проверка дискриминанта на положительность, отрицательность и ноль
    if (discriminant > 0) {
        // Два действительных корня
        x1 = (-b + sqrt(discriminant)) / (2 * a);
        x2 = (-b - sqrt(discriminant)) / (2 * a);
        std::cout << "Два действительных корня: x1 = " << x1 << " и x2 = " << x2 << std::endl;
    } else if (discriminant == 0) {
        // Один действительный корень
        x1 = -b / (2 * a);
        std::cout << "Один действительный корень: x1 = " << x1 << std::endl;
    } else {
        // Два комплексных корня
        double realPart = -b / (2 * a);
        double imaginaryPart = sqrt(-discriminant) / (2 * a);
        std::cout << "Два комплексных корня: ";
        std::cout << "x1 = " << realPart << " + " << imaginaryPart << "i и ";
        std::cout << "x2 = " << realPart << " - " << imaginaryPart << "i" << std::endl;
    }

    return 0;
}

Эта программа запрашивает у пользователя значения коэффициентов a, b и c, вычисляет дискриминант и находит корни уравнения, учитывая различные случаи: два действительных корня, один действительный корень или два комплексных корня.

C#

using System;

class Program
{
    static void Main()
    {
        double a, b, c;
        double discriminant, x1, x2;

        // Ввод коэффициентов уравнения
        Console.Write("Введите коэффициент a: ");
        a = Convert.ToDouble(Console.ReadLine());

        Console.Write("Введите коэффициент b: ");
        b = Convert.ToDouble(Console.ReadLine());

        Console.Write("Введите коэффициент c: ");
        c = Convert.ToDouble(Console.ReadLine());

        // Вычисление дискриминанта
        discriminant = b * b - 4 * a * c;

        // Проверка дискриминанта на положительность, отрицательность и ноль
        if (discriminant > 0)
        {
            // Два действительных корня
            x1 = (-b + Math.Sqrt(discriminant)) / (2 * a);
            x2 = (-b - Math.Sqrt(discriminant)) / (2 * a);
            Console.WriteLine($"Два действительных корня: x1 = {x1} и x2 = {x2}");
        }
        else if (discriminant == 0)
        {
            // Один действительный корень
            x1 = -b / (2 * a);
            Console.WriteLine($"Один действительный корень: x1 = {x1}");
        }
        else
        {
            // Два комплексных корня
            double realPart = -b / (2 * a);
            double imaginaryPart = Math.Sqrt(-discriminant) / (2 * a);
            Console.WriteLine($"Два комплексных корня: x1 = {realPart} + {imaginaryPart}i и x2 = {realPart} - {imaginaryPart}i");
        }
    }
}

Python

import math

# Ввод коэффициентов уравнения
a = float(input("Введите коэффициент a: "))
b = float(input("Введите коэффициент b: "))
c = float(input("Введите коэффициент c: "))

# Вычисление дискриминанта
discriminant = b ** 2 - 4 * a * c

# Проверка дискриминанта на положительность, отрицательность и ноль
if discriminant > 0:
    # Два действительных корня
    x1 = (-b + math.sqrt(discriminant)) / (2 * a)
    x2 = (-b - math.sqrt(discriminant)) / (2 * a)
    print(f"Два действительных корня: x1 = {x1}, x2 = {x2}")
elif discriminant == 0:
    # Один действительный корень
    x1 = -b / (2 * a)
    print(f"Один действительный корень: x1 = {x1}")
else:
    # Два комплексных корня
    realPart = -b / (2 * a)
    imaginaryPart = math.sqrt(-discriminant) / (2 * a)
    print(f"Два комплексных корня: x1 = {realPart} + {imaginaryPart}i, x2 = {realPart} - {imaginaryPart}i")

Java

import java.util.Scanner;

public class QuadraticEquationSolver {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Введите коэффициент a: ");
        double a = scanner.nextDouble();

        System.out.print("Введите коэффициент b: ");
        double b = scanner.nextDouble();

        System.out.print("Введите коэффициент c: ");
        double c = scanner.nextDouble();

        double discriminant = b * b - 4 * a * c;

        if (discriminant > 0) {
            // Два действительных корня
            double x1 = (-b + Math.sqrt(discriminant)) / (2 * a);
            double x2 = (-b - Math.sqrt(discriminant)) / (2 * a);
            System.out.println("Два действительных корня: x1 = " + x1 + ", x2 = " + x2);
        } else if (discriminant == 0) {
            // Один действительный корень
            double x1 = -b / (2 * a);
            System.out.println("Один действительный корень: x1 = " + x1);
        } else {
            // Два комплексных корня
            double realPart = -b / (2 * a);
            double imaginaryPart = Math.sqrt(-discriminant) / (2 * a);
            System.out.println("Два комплексных корня: x1 = " + realPart + " + " + imaginaryPart + "i, x2 = " + realPart + " - " + imaginaryPart + "i");
        }
    }
}

Pascal

program QuadraticEquationSolver;

var
  a, b, c, discriminant, x1, x2: real;

begin
  writeln('Введите коэффициент a: ');
  readln(a);

  writeln('Введите коэффициент b: ');
  readln(b);

  writeln('Введите коэффициент c: ');
  readln(c);

  discriminant := b * b - 4 * a * c;

  if discriminant > 0 then
  begin
    x1 := (-b + sqrt(discriminant)) / (2 * a);
    x2 := (-b - sqrt(discriminant)) / (2 * a);
    writeln('Два действительных корня: x1 = ', x1:0:2, ', x2 = ', x2:0:2);
  end
  else if discriminant = 0 then
  begin
    x1 := -b / (2 * a);
    writeln('Один действительный корень: x1 = ', x1:0:2);
  end
  else
  begin
    x1 := -b / (2 * a);
    discriminant := abs(discriminant);
    x2 := sqrt(discriminant) / (2 * a);
    writeln('Два комплексных корня: x1 = ', x1:0:2, ' + ', x2:0:2, 'i, x2 = ', x1:0:2, ' - ', x2:0:2, 'i');
  end;
end.

JavaScript

// Функция для решения квадратичного уравнения
function solveQuadraticEquation(a, b, c) {
  // Вычисляем дискриминант
  var discriminant = b * b - 4 * a * c;

  if (discriminant > 0) {
    // Два действительных корня
    var x1 = (-b + Math.sqrt(discriminant)) / (2 * a);
    var x2 = (-b - Math.sqrt(discriminant)) / (2 * a);
    return [x1, x2];
  } else if (discriminant === 0) {
    // Один действительный корень
    var x = -b / (2 * a);
    return [x];
  } else {
    // Два комплексных корня
    var realPart = -b / (2 * a);
    var imaginaryPart = Math.sqrt(Math.abs(discriminant)) / (2 * a);
    return [`${realPart} + ${imaginaryPart}i`, `${realPart} - ${imaginaryPart}i`];
  }
}

// Введите коэффициенты a, b и c
var a = parseFloat(prompt('Введите коэффициент a: '));
var b = parseFloat(prompt('Введите коэффициент b: '));
var c = parseFloat(prompt('Введите коэффициент c: '));

// Вызов функции для решения уравнения
var solutions = solveQuadraticEquation(a, b, c);

// Вывод решений
if (solutions.length === 2) {
  console.log(`Два действительных корня: x1 = ${solutions[0]}, x2 = ${solutions[1]}`);
} else if (solutions.length === 1) {
  console.log(`Один действительный корень: x = ${solutions[0]}`);
} else {
  console.log(`Два комплексных корня: x1 = ${solutions[0]}, x2 = ${solutions[1]}`);
}

Эта программа предлагает пользователю ввести коэффициенты a, b и c, а затем вызывает функцию solveQuadraticEquation для решения уравнения и вывода корней, учитывая различные случаи (два действительных корня, один действительный корень и два комплексных корня).

PHP

<?php
// Функция для решения квадратичного уравнения
function solveQuadraticEquation($a, $b, $c) {
    // Вычисляем дискриминант
    $discriminant = $b * $b - 4 * $a * $c;
    
    if ($discriminant > 0) {
        // Два действительных корня
        $x1 = (-$b + sqrt($discriminant)) / (2 * $a);
        $x2 = (-$b - sqrt($discriminant)) / (2 * $a);
        return [$x1, $x2];
    } elseif ($discriminant == 0) {
        // Один действительный корень
        $x = -$b / (2 * $a);
        return [$x];
    } else {
        // Два комплексных корня
        $realPart = -$b / (2 * $a);
        $imaginaryPart = sqrt(abs($discriminant)) / (2 * $a);
        return ["{$realPart} + {$imaginaryPart}i", "{$realPart} - {$imaginaryPart}i"];
    }
}

// Введите коэффициенты a, b и c
$a = (float) readline('Введите коэффициент a: ');
$b = (float) readline('Введите коэффициент b: ');
$c = (float) readline('Введите коэффициент c: ');

// Вызов функции для решения уравнения
$solutions = solveQuadraticEquation($a, $b, $c);

// Вывод решений
if (count($solutions) === 2) {
    echo "Два действительных корня: x1 = {$solutions[0]}, x2 = {$solutions[1]}\n";
} elseif (count($solutions) === 1) {
    echo "Один действительный корень: x = {$solutions[0]}\n";
} else {
    echo "Два комплексных корня: x1 = {$solutions[0]}, x2 = {$solutions[1]}\n";
}
?>
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Давайте поможем друг другу! Если вы нашли ошибку или хотите предложить лучшее решение, пожалуйста, напишите об этом в комментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *