Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/41: Рейтинг темы: голосов - 41, средняя оценка - 4.63
 Аватар для PhoeniX_4
8 / 8 / 3
Регистрация: 01.06.2011
Сообщений: 177

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

03.02.2013, 10:09. Показов 8559. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru