Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Где ошибка в вычислении корней квадратного уравнения ?

Для примера возьмём а = 2, b = 6, c = 3. Моя программа выдаёт корни -5.133974596215562 и -6.866025403784438. А калькулятор -0,633974 и 2,366025. Где ошибка в моих расчётах, или я неправильно записал формулу ?
package kostin4_3; import java.util.Scanner; import java.lang.Math.*; public class start { static double a =0; static double b=0; static double c=0; static double d=0; static double x1=0; static double x2=0; public static void main(String[] args) { Dano(); Calc(); } private static void Calc() { d = (Math.pow(b, 2)) - (4*a*c); System.out.print("Ваш дискриминант = " + d); System.out.println(); if (d < 0) { System.out.print("У вашего квадратного уравнения нет корней!"); System.out.println(); } if (d == 0) { x1=-(b/(2*a)); System.out.print("У вашего один корень равный " + x1); System.out.println(); } else { x1=((-b + (Math.sqrt(d))/(2*a))); x2=((-b - (Math.sqrt(d))/(2*a))); System.out.print("Первый корень вашего уравнения равен " + x1); System.out.println() ; System.out.print("Второй корень вашего уравнения равен " + x2); System.out.println(); } } public static void Dano(){ Scanner scn = new Scanner(System.in); do { System.out.print("Введите первый член выражения! (не ноль)!"); a = scn.nextDouble(); if (a !=0) { System.out.print("Ваш первый член выражения = " + a); } else { System.out.print("Ну просили же не ноль!"); } } while (a == 0); System.out.println(); System.out.print("Введите второй член выражения! "); b = scn.nextDouble(); System.out.print("Ваш второй член выражения = " + b); System.out.println(); System.out.print("Введите третий член выражения! "); c = scn.nextDouble(); System.out.print("Ваш третий член выражения = " + c); System.out.println(); } }


Ответ

у вас неправильно расставлены скобки:
x1=((-b + (Math.sqrt(d))/(2*a))); x2=((-b - (Math.sqrt(d))/(2*a)));
если убрать лишние, то это
x1= -b + Math.sqrt(d)/(2*a); x2= -b - Math.sqrt(d)/(2*a);
а должно быть
x1= (-b + Math.sqrt(d)) / (2*a); x2= (-b - Math.sqrt(d)) / (2*a);

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

Отправить комментарий