А51

Задача: Даны действительные числа [latex] a,b,c (a\neq 0) [/latex] . Полностью исследовать биквадратное уравнение [latex] ax^4+bx^2+c=0 [/latex] т.е если действительных корней нет, то должно быть выдано сообщение об этом, иначе должны быть выданы два или четыре корня.

Я немного усложнил задачу, добавил случай [latex] a=0 [/latex]

a b c x1 x2 x3 x4
0 0 0 R R R R
0 0 1
0 1 0 0 0 0 0
0 2 -8 2 -2
0 2 3
10 2 10
2 2 -6 1.14 -1.14
-5 22 -6 0.24 -0.54 2.09 -2.09
1 4 4
1 -4 4 1.41 -1.41

Решение:

Ссылка на ideone C++: http://ideone.com/By6f3b

Ссылка на ideone Java: http://ideone.com/fsmSvf

 

Если [latex] a\neq 0 [/latex] , то надо рассмотреть только несколько случаев: Дискриминант меньше нуля (корней нет), дискриминант больше нуля, тогда делаем замену, [latex] x^2=t>0 [/latex] и считаем [latex] t [/latex], далее проверяем будет ли [latex] t>0 [/latex]

Если добавить случай с [latex] a=0 [/latex] , то надо рассмотреть ситуации:

[latex] b=0 [/latex] , тогда если [latex] c=0 [/latex] , то корней бесконечно много, в противном случае — корней нет.

[latex] b\neq 0 [/latex] , тогда если [latex] -(c/b)>0 [/latex] , то решение есть, в противном случае под корнем отрицательное число

Калачьов Андрій Сергійович
Калачьов Андрій Сергійович

Latest posts by Калачьов Андрій Сергійович (see all)

5 thoughts on “А51

  1. if (log == true) можно упростить до if (log)
    а следующий if (log == false) вообще лучше заменить на else

    юольше — опечатка

    «Дискриминант меньше нуля (корней нет), дискриминант юольше нуля, …» — а равен нулю он не может быть? кстати подобный тест желательно привести. Как отработает Ваша программа — верно или нет?

    см. что б — а вообще этот фрагмент лучше переписать в более формальной и подробной манере (если t>0, то … иначе)

    надо рассмотреть ситуации b=0, … — ну и как они рассмотрены? т.е. по программе видно, что да, а в отчете?

  2. Засчитано, 8 баллов (т.к. дата публикации позже 5 октября).
    Программа работает как раз хорошо — в отчете небольшая неточность «Дискриминант меньше нуля (корней нет), дискриминант больше нуля, тогда делаем замену» — в случае дискриминант = 0, тоже ведь делаем замену, значит должно быть
    «Дискриминант меньше нуля (корней нет), дискриминант больше либо равен нулю, тогда делаем замену»
    И если уж совсем придираться к оформлению, то «Если добавить случай с a=0 , то надо рассмотреть ситуации:» и далее должен быть список например:
    1) ….
    2) ….
    или
    а) …
    б) …

    А программа качественно написана, молодец!

  3. Ну я же сразу написал: if (log == true) можно упростить до if (log)
    а следующий if (log == false) вообще лучше заменить на else!
    Java версии тоже это касается. Сразу заметна эта стилевая недоработка.
    Я уж не говорю, что log можно было бы назвать иначе.

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