Кубическое уравнение. Заданы три корня кубического уравнения : [latex]x_{1},x_{2},x_{3}[/latex] . Найти коэффициенты этого уравнения.
[latex] x_{1}[/latex] | [latex] x_{2}[/latex] | [latex] x_{3}[/latex] | Результат [latex]b[/latex] | Результат [latex] c[/latex] | Результат [latex] d[/latex] | Комментарий: |
1 | 2 | 3 | -6.00 | 11.00 | -6.00 | Тест пройден |
0.5 | 6 | 0.78 | -7.28 | 8.07 | -2.34 | Тест пройден |
-1 | -2 | -2.25 | 5.25 | 8.75 | 4.50 | Тест пройден |
-0.24 | -1 | 2.24 | -1.00 | -2.54 | -0,54 | Тест пройден |
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> using namespace std; int main () { double x1, x2, x3; scanf ( " %lf %lf %lf ", &x1, &x2, &x3 ); // чтение из стандартного потока ввода. double b = -( x1 + x2 + x3 ); // вычисление коэф. b, c, d кубического уравнения. double c = x1*x2 + x2*x3 + x3*x1; double d = -( x1 * x2 * x3 ); printf ("b = %2.2lf, c = %2.2lf, d = %2.2lf.", b, c, d); //вывод результата. return 0; } |
Дано кубическое уравнение типа [latex](x — x_{1})(x-x_{2})(x-x_{3})=0[/latex]. После недолгих преобразований я получаю такое выражение:
[latex]x^{3}-(x_{1}+x_{2}+x_{3})x^{2}+(x_{1}x_{2}+x_{2}x_{3}+x_{3}x_{1})x-x_{1}x_{2}x_{3}=0[/latex].
Потом присваиваю трём переменным выражения для коэффициентов:
[latex]\begin{cases} & \ x_{1}+x_{2}+x_{3}=-b \\ & \ x_{1}*x_{2}+x_{2}*x_{3}+x_{1}*x_{3}= c \\ & \ x_{1}*x_{2}*x_{3}=-d \end{cases}[/latex]
где [latex]b[/latex] — коэффициент при [latex]x^{2}[/latex], [latex] c[/latex] — при [latex]x[/latex], а [latex] d[/latex] — свободный коэффициент.
В итоге, все решение задачи свернулось в 3 этапа:
- Ввод переменных.
- Вычисление коэффициентов.
- Вывод результата.
Результат выводится с точностью до двух знаков после запятой.
Для выполнения программы и проверки тестов можно воспользоваться следующим объектом.
Код на языке Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import java.util.*; import java.lang.*; import java.io.*; class A { public static void main (String [] args){ double x1, x2, x3; Scanner sc = new Scanner (System.in); x1 = sc.nextDouble(); x2 = sc.nextDouble(); x3 = sc.nextDouble(); double b = -( x1 + x2 + x3 ); double c = (x1*x2 + x2*x3 + x3*x1); double d = -( x1 * x2 * x3 ); System.out.println (b); System.out.println (c); System.out.println (d); } } |
1. Как видите, одна формула не отображается. Нужно ее довести до ума.
2. Округление до двух знаков при вычислениях Вы не производите. И хорошо. Вы только выводите результат с точностью до двух знаков.
3. Вы пишите, что «в задаче нет ничего мудрёного» . Это оценочное суждение. С ними в математике нужно быть очень осторожным. Например, формула свёртки многочлена в виде произведения Вам бы показалась очень изящной если бы её не просто Вам показали, а пришлось бы догадываться самому 🙂
Принято к сведению, исправлено. Спасибо за совет.
Кажется всё отлично получилось. Справились даже с кодировкой довольно сложных формул в latex.
Молодец