Ю1.10

Задача Ю1.10. Квадратное уравнение. Найти корни квадратного уравнения, заданного своими коэффициентами, с положительным дискриминантом; подстановкой в уравнение убедиться в погрешности вычислений.

a b c x1 x2 p1 p2 Комментарий
15 36 -25  0.56257  -2.96257  -2e-15  -7e-15 Пройден
0 0 0 Уравнение не квадратное
0 0 16 Уравнение не квадратное
1 2 3 Дискриминант не положителен
1.1112 2.2316 6.6345 Дискриминант не положителен
-24.182 15.77 36.2  -0.94015  1.59228  -3e-15  3e-15 Пройден

Код программы:

Код на Java:

Даны коэффициенты [latex]a[/latex], [latex]b[/latex] , [latex]c[/latex]. У задачи есть несколько разных путей решения в зависимости от введенных коэффициентов.

  1. Уравнение в случае [latex] a=0. [/latex] В случаи ввода нулевого коэффициента при старшем члене программа должна вывести на экран «Уравнение не квадратное».
  2. Уравнение в случае   [latex] a\neq 0. [/latex] при [latex] D<=0. [/latex]  В данном случае программа должна вывести на экран «Дискриминант не положителен «.
  3. Уравнение в случае   [latex] a\neq 0. [/latex] при [latex] D>0. [/latex]..Если дискриминант положительный,то  уравнение имеет два корня равных [latex]x_1=\frac{-b+\sqrt{D}}{2a}[/latex] и  [latex]x_2=\frac{-b-\sqrt{D}}{2a}[/latex]   . Подставив корни в уравнение получим погрешность [latex]p_1[/latex]  и [latex] p_2. [/latex]

 

Запустить код на С++ и проверить тесты можно тут
Запустить код на Java и проверить тесты можно тут

Related Images:

Ю1.19

Задача Ю1.19. Найти координаты вершины параболы [latex]y = a{ x }^{ 2 }+bx+c[/latex]

[latex]a[/latex] [latex]b[/latex] [latex]c[/latex] [latex]x[/latex] [latex]y[/latex] Комментарий
 1 -2  -3 1 -4 Пройден.
0 2 2 Не пройден
так график y(x)
не является параболой и программа оповещает об ошибке
1 0 4 0 4 Пройден.
2 1 3 -0.25 2.875 Пройден.

Мы знаем координаты вершины параболы вычисляются по формулам:
1)[latex]{ x }_{ 0 }=-\frac { b }{ 2a } [/latex]

2)[latex]{ y }_{ 0 }=a{ x }_{ 0 }^{ 2 }+b{ x }_{ 0 }+c[/latex]

(Для простоты в программе [latex]{ x }_{ 0 }[/latex] и [latex]{ y }_{ 0 }[/latex] заменены на [latex]{ x }[/latex] и [latex]{ y }[/latex] соответственно)

Теперь учтем ситуации в проработке которых могут возникнуть сложности:
Если [latex]{ a }=0[/latex], то график [latex]y(x)[/latex] не является параболой,
о чем на должен проинформировать компилятор.
Это все проблемы связанные с графиком.

Теперь проанализируем же может вызвать противоречия или ошибки,
для этого проанализируем элементы С++ которые могут вызвать ошибки или неточности:
Наиболее рационально использовать тип double, но у этого типа есть некоторая неточность, а именно (-0) — может быть принята за вполне нормальное число со знаком и компилятор безо всяких угрызений совести выведет «-0», а не 0 ( было бы логичнее ). Именно по этой причине мы вначале выполним [latex]{ x }_{ 0 }=\frac { b }{ 2a } [/latex], а потом уже, если [latex]{ x }[/latex] окажется не равным нулю, то мы умножим его на [latex]-1[/latex].
Это все сложности которые могут повстречаться на на пути реализации данной программы, так ничего не мешает нам написать данную программу.

Related Images: