Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 1
Регистрация: 25.06.2012
Сообщений: 24

Что происходит при D < 0 при решении квадратного уравнения?

09.10.2013, 23:58. Показов 2854. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
что делают последние 2 строчки в данной программе?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import math
import sys
A = float(raw_input("input A = "))
if A == 0:
    print "Not a quadratic equation"
    sys.exit()
B = float(raw_input("input B = "))
C = float(raw_input("input C = "))
D = B*B - 4*A*C
if D == 0:
        print "x =", -B / 2.0 / A
        sys.exit()
if D>0:
        print "x1 = ",(-B + math.sqrt(D)) / 2.0 / A
        print "x2 = ",(-B - math.sqrt(D)) / 2.0 / A
else:
        print "x1 = (", -B / 2.0 / A, ",", math.sqrt(-D) / 2.0 / A, ")"
        print "x2 = (", -B / 2.0 / A, ",", -math.sqrt(-D) / 2.0 / A, ")"
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.10.2013, 23:58
Ответы с готовыми решениями:

Ошибка при решении квадратного уравнения
Решаю задачу(Решить квадратное уравнение),не выдает результат, в чем ошибка? #include &lt;stdio.h&gt; #include &lt;math.h&gt; ...

При решении квадратного уравнения в Simulink выводит только одно решение
Здравствуйте. При решении уравнения x^2+x-9=0 блок Display в Simulink выдает только одно значение x. Как это исправить?

Обработка исключений при решении квадратного уравнения, где все параметры типа double
Как я понимаю &quot;исключительных&quot; ситуации всего три: Деление на ноль Корень из отрицательного дискриминанта(не будем углубляться в...

19
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.10.2013, 00:17
он выводит комплексные корни

пример

https://www.cyberforum.ru/cgi-bin/latex.cgi?x1 = -1 + 1.4i \\x2 = -1 - 1.4i
1
0 / 0 / 1
Регистрация: 25.06.2012
Сообщений: 24
10.10.2013, 00:22  [ТС]
я так понял это связано с комплексными числами?
то есть это и есть наша мнимая единица при поиске отрицательного корня?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.10.2013, 00:26
мнимая единица выносится из под корня

https://www.cyberforum.ru/cgi-bin/latex.cgi?i = sqrt{-1} \\sqrt{-8} = sqrt{-1} * sqrt{8} = sqrt{8} * i
1
0 / 0 / 1
Регистрация: 25.06.2012
Сообщений: 24
10.10.2013, 00:27  [ТС]
и еще вопрос,можно сделать так,чтобы он без комплексных чисел выводил ответ?
просто при D=0 и D>0,D<0 программа просто не затрагивала
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.10.2013, 00:31
Цитата Сообщение от Вадик Посмотреть сообщение
D<0 программа просто не затрагивала
там можно написать, что нет действительных корней

Добавлено через 1 минуту
Цитата Сообщение от Вадик Посмотреть сообщение
я так понял это связано с комплексными числами?
каждый из корней является комплексным числом
мало того, любое действительное число является комплексным числом (у действительных чисел мнимая часть равна нулю)
1
0 / 0 / 1
Регистрация: 25.06.2012
Сообщений: 24
10.10.2013, 00:33  [ТС]
я так понял это выглядит вот так вот?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import math
import sys
 
A = float(raw_input("A = "))
if A == 0:
    print "Not a quadratic equation"
    sys.exit()
 
B = float(raw_input("B = "))
C = float(raw_input("C = "))
print "A = ",A
print "B = ",B
print "C = ",C
 
D = B * B - 4 * A * C
print "D = ",D
if D<0:
    print "there are no roots"
    sys.exit()
if D == 0:
    print "x =", -B / 2.0 / A
    sys.exit()
if D > 0:
    print "x1 =", (-B + math.sqrt(D)) / 2.0 / A
    print "x2 =", (-B - math.sqrt(D)) / 2.0 / A
else:
    print "x1 = (", -B / 2.0 / A, "," ")"
    print "x2 = (", -B / 2.0 / A, "," ")"
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.10.2013, 00:34
вставляй её в конце, потому что чаще будут подаваться уравнения, у которых можно корни вычислить

проверить на два корня
проверить на один корень
проверить на ноль корней
0
0 / 0 / 1
Регистрация: 25.06.2012
Сообщений: 24
10.10.2013, 00:38  [ТС]
извините за наглость,но я уже ничего не соображаю под ночь
не могли бы подправить эту программу?(имею ввиду сделать готовую)
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.10.2013, 00:47
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import math
import sys
 
def f():
    A = float(raw_input("A = "))
    if A == 0:
        print "Not a quadratic equation"
        sys.exit()
    B = float(raw_input("B = "))
    C = float(raw_input("C = "))
    #print "A = ", A
    #print "B = ", B
    #print "C = ", C
    D = B * B - 4 * A * C
    #print "D = ", D
    if D > 0:
        print "x1 =", (-B + math.sqrt(D)) / 2.0 / A
        print "x2 =", (-B - math.sqrt(D)) / 2.0 / A
    elif D == 0:
        print "x =", -B / 2.0 / A
        #sys.exit()
    else:
        print "there are no roots"
        #sys.exit()
 
f()
1
0 / 0 / 1
Регистрация: 25.06.2012
Сообщений: 24
10.10.2013, 00:49  [ТС]
спасибо большое
0
10.10.2013, 23:10

Не по теме:

Можно ли верить в нулевой floating point дискриминант? :scratch:

0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.10.2013, 23:55
python.org. comparisons
The operators <, >, ==, >=, <=, and != compare the values of two objects. The objects need not have the same type. If both are numbers, they are converted to a common type.
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
11.10.2013, 00:15
Это понятно дело.

Наверно, если коэффициенты раскладываются в конечные дроби по основанию 2, теоретически всё в порядке. А если нет? Тогда возникают всякие ошибки округлений, и даже если дискриминант получается равным 0.0, нельзя гарантировать, что настоящий дискриминант будет того или иного знака, не говоря уже о нулевом значении. Выходит, вблизи D = 0 метод перестаёт работать и программа может выдавать результаты, не связанные с истинным математическим положением вещей.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.10.2013, 00:37
Цитата Сообщение от helter Посмотреть сообщение
Тогда возникают всякие ошибки округлений, и даже если дискриминант получается равным 0.0, нельзя гарантировать, что настоящий дискриминант будет того или иного знака
то есть ты говоришь, что 0.0 может оказаться отрицательным (или положительным) числом, которое по модулю больше нуля
так и коэффициенты можно рассматривать изначально, что они не являются точными числами
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
11.10.2013, 02:47
Ага, всё так. D = 0 - очень неустойчивый случай, рушится при малейшем изменении коэффициентов. Но это всё так, музыкой навеяло.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.10.2013, 03:10
Цитата Сообщение от helter Посмотреть сообщение
D = 0 - очень неустойчивый случай, рушится при малейшем изменении коэффициентов.
приведи пример
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
11.10.2013, 12:04
Теоретически - многочлен x^2 - 0.0<сколько угодно нулей>01 имеет два вещественных корня, а многочлен x^2 + 0.0<сколько угодно нулей>01 - ни одного. Оба они сколь угодно мало отличаются от многочлена x^2, имеющего нулевой дискриминант.

Практически - обсуждаемая "программа", вероятно, должна сбоить при A = 1.0, B = 0.2, C = 0.01 - вместо ожидаемого нуля дискриминант получается положительным. (Ежели бы вычисления были завёрнуты в функцию, я бы потестил...)
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.10.2013, 15:11
Цитата Сообщение от helter Посмотреть сообщение
при A = 1.0, B = 0.2, C = 0.01
Python
1
2
3
4
5
6
7
8
9
>>> a, b, c = 1.0, 0.2, 0.01
>>> d = b * b - 4 * a * c
>>> d
6.938893903907228e-18
>>> a, b, c
(1.0, 0.2, 0.01)
>>> d ** 0.5
2.634178031930877e-09
>>>
ну да, получается маленькое число

Добавлено через 2 минуты
давай пример, где он получается отрицательный вместо нулевого
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
11.10.2013, 16:07
Python
1
2
3
>>> a, b, c = 1.0, 0.7, 0.1225
>>> b * b - 4 * a * c
-5.551115123125783e-17
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2013, 16:07
Помогаю со студенческими работами здесь

Что означает ошибка "too many initial condition" при решении диф. уравнения
Подскажите, что означает ошибка &quot;too many initial condition&quot;. Ни как не могу разобраться.

Найти ошибку в решении квадратного уравнения
program Project2; {$APPTYPE CONSOLE} uses SysUtils; var a,b,c,d:integer; x1,x2:real; begin write('a='); readln(a);

Ошибка при решении уравнения.
Какая-то ерунда На одном компьютере маткад простейшее уравнение считает нормально На другом - выдает ошибку 14 версия везде...

Ошибка при решении уравнения
есть уравнение: ((lg(x))^2)+(5/3)*(lg(x))-(2/3) Записал его следующим образом: ...

Ошибка при решении уравнения
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &quot;locale.h&quot; #include &quot;stdio.h&quot; #include &quot;math.h&quot; #include &quot;iomanip&quot; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru