Аватар для PhoeniX_4
8 / 8 / 3
Регистрация: 01.06.2011
Сообщений: 177

Поиск корней квадратного уравнения

03.02.2013, 10:09. Показов 8589. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, коллеги! Начал изучать питон и читаю книжки. Первое выполненное мною задание - написанная программа которая высчитывает корни квадратного уравнения:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# -*- coding: cp1251 -*-
import math
a=1
b=4
c=(-1)
D=((b**2)-(4*(a*c)))
if D<0:
    print "Не существует"
 
if D==0:
    x=((-b)/(2*a))
    print x
 
if D>0:
    x1=((-b)+(math.sqrt(D)))/(2*a)
    x2=((-b)-(math.sqrt(D)))/(2*a)
    print x1, x2
 
    
raw_input ("press Enter")
Пытаюсь изменить эту программу немного вот таким образом:

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
29
30
31
32
from math import *
a=1
b=2
c=3
D=((b**2)-(4*(a*c)))
x=((-b)/(2*a))
x1=((-b)+(math.sqrt(D)))/(2*a)
x2=((-b)-(math.sqrt(D)))/(2*a)
def discriminant(D):
    print D
 
discriminant(D)
 
def otvet1(zabud):
    print zabud
 
if D<0:
    otvet1 ('Zabud')
 
def otvet2(x):
    print x
 
if D==0:
    otvet2(x)
 
def otvet3(x1, x2):
    print x1, x2
 
if D>0:
    otvet3(x1, x2)
 
raw_input("press enter")
но высвечивает ошибку при определенных a, b и с, а именно когда дискриминант меньше нуля...и не могу понять как исправить это:

Traceback (most recent call last):
File "C:\Users\КотЭ\Desktop\Самостоялка\Pytho n\Свои попытки\Новый текстовый документ.py", line 7, in <module>
x1=((-b)+(math.sqrt(D)))/(2*a)
NameError: name 'math' is not defined

Подскажите в чем проблема?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.02.2013, 10:09
Ответы с готовыми решениями:

Количество корней квадратного уравнения
Описать функцию RootsCount(A, B, C) целого типа, определяющую количество корней квадратного уравнения A·x2 + B·x + C = 0 (A, B, C –...

Нахождение корней квадратного уравнения
Надо написать программу нахождения корней уравнения ax2+xc/2=0. а и с - целые числа, вводятся с клавиатуры. Можно использовать только if

Написать функцию вычисления корней квадратного уравнения
Написать функцию вычисления корней квадратного уравнения (( программа Python 3; пожалуйста.

9
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.02.2013, 10:30
Python
1
import math
можно вообще без math: возвести в степень 0.5
0
 Аватар для PhoeniX_4
8 / 8 / 3
Регистрация: 01.06.2011
Сообщений: 177
03.02.2013, 10:35  [ТС]
Бесполезно...другая ошибка лезет

Traceback (most recent call last):
File "C:\Users\КотЭ\Desktop\Самостоялка\Pytho n\Свои попытки\Вычисление квадратного уравнения(def).py", line 6, in <module>
x1=((-b)+(D**0.5))/(2*a)
ValueError: negative number cannot be raised to a fractional power
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.02.2013, 12:50
это означает, что ты пытаешься извлечь корень из отрицательного числа
0
 Аватар для PhoeniX_4
8 / 8 / 3
Регистрация: 01.06.2011
Сообщений: 177
03.02.2013, 13:03  [ТС]
Хм...тогда логично...но опять же...я поставил условие что при отрицательном дискриминанте он пишет что нету корней...зачем он продолжает тогда высчитывать формулы для нахождения двух корней? как это ограничить?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.02.2013, 13:07
Цитата Сообщение от PhoeniX_4 Посмотреть сообщение
я поставил условие что при отрицательном дискриминанте он пишет что нету корней
это условие стоит после этого вычисления
0
 Аватар для PhoeniX_4
8 / 8 / 3
Регистрация: 01.06.2011
Сообщений: 177
03.02.2013, 14:27  [ТС]
Хорошо...изменяем и делаем так:

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
29
30
31
32
# -*- coding: cp1251 -*-
import math
a=2
b=2
c=3
 
import random as r
D=((b**2)-(4*(a*c)))
def discriminant(D):
    print D
 
discriminant(D)
 
if D<0:
    print ("netu yopta")
    
x=((-b)/(2*a))
def otvet2(x):
    print x
 
x1=((-b)+(math.sqrt(D)))/(2*a)
x2=((-b)-(math.sqrt(D)))/(2*a)
def otvet3(x1, x2):
    print x1, x2
 
if D==0:
    otvet2(x)
 
if D>0:
    otvet3(x1, x2)
 
raw_input("press enter")
вычисления которые нужно производит и пишет все что нужно но!...после вычислений сразу пишет ошибку:

Traceback (most recent call last):
File "C:\Users\КотЭ\Desktop\Самостоялка\Pytho n\Свои попытки\Вычисление квадратного уравнения(def).py", line 21, in <module>
x1=((-b)+(math.sqrt(D)))/(2*a)
ValueError: math domain error

то есть все равно дальше продолжает вычислять
0
292 / 172 / 47
Регистрация: 22.03.2010
Сообщений: 488
03.02.2013, 22:30
Цитата Сообщение от PhoeniX_4 Посмотреть сообщение
то есть все равно дальше продолжает вычислять
Ясно, что продолжает: надо ведь как-то прервать выполнение программы, когда дискриминант равен 0, но здесь лучше использовать elif и else. То есть как-то так:
Python
1
2
3
4
5
6
if D<0:
    print "no"
elif D==0:
    ...
else:
    ...
1
 Аватар для PhoeniX_4
8 / 8 / 3
Регистрация: 01.06.2011
Сообщений: 177
04.02.2013, 04:17  [ТС]
Во...точно!! Спасибо!!! Огромное!!!
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
07.02.2013, 10:44
При отрицательном дискриминанте тоже корни есть, они просто комплексные:

Python
1
2
3
4
5
6
7
8
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
import cmath
 
def roots(a, b, c):
    d = cmath.sqrt(b * b - 4 * a * c)
    return (-b - d) / (2 * a), (-b + d) / (2 * a)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.02.2013, 10:44
Помогаю со студенческими работами здесь

Найти ошибку в коде вычисления корней квадратного уравнения
Программа по вычислению кореня квадратного уравнения, возникает ошибка&quot;math domain error&quot;: #-*-coding:utf8;-*- #qpy:2 ...

Решение квадратного уравнения и вывод его корней (ошибка Runtime Error)
Добрый день, уважемые форумчане! Первый раз зарегестрировался на каком либо форуме, если что не так прошу меня простить. Условие...

Корни квадратного уравнения
Нужно чтоб на вход сразу же квадратное уравнение поступало, а на выходе были его корни и эти значения корней должны быть выведены с тремя...

Корни квадратного уравнения
Напишите вспомогательную функцию, которая по трем действительным числам вычисляет корни соответствующего квадратного уравнения и печатает...

Корни квадратного уравнения
Напишите программу, которая просит ввести три действительных числа, вычисляет корни соответствующего квадратного уравнения. Когда...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru