Найти - Пользователи
Полная версия: Прошу помощи - задача решена частично правильно
Начало » Python для новичков » Прошу помощи - задача решена частично правильно
1
ElenaVP
Здравствуйте!
Прошу помощи в решении задачи.

Входные данные: 3 действительных числа - аргументы командной строки.
Выходные данные: результат вычисления формулы



Аргументы передаются в порядке, указанном в формуле, названия переменных могут использоваться любые.

 import sys
import math
a=float(sys.argv[1])
b=float(sys.argv[2])
c=float(sys.argv[3])
f=1/(c*math.sqrt(2*math.pi))*math.exp(-1*(a-b)**2/2*b**2)
print (f)

Результат: частично правильно.

Подскажите, пожалуйста, где ошибка?
scidam
переобозначения a,b,c - они немного затрудняют реализацию исходной формулы. Гораздо проще, если так:
 x = float(sys.argv[1])
mu = float(sys.argv[2])
sigma = float(sys.argv[3])
f = 1/sigma etc....
Используя такие обозначения труднее ошибиться переписывая эту формулу плотности нормального распределения.

В чем ошибка: У вас с - это sigma, но в экспоненте у вас знаменатель дроби с “b”, а не с “c”, как должно быть
py.user.next
ElenaVP
Подскажите, пожалуйста, где ошибка?
Сигма должна проверяться на ноль.

Деление неправильное
ElenaVP
  
math.exp(-1*(a-b)**2/2*b**2)
  
math.exp(-1 * (a - b) ** 2 / (2 * b ** 2))

И, как сказал scidam, в знаменателе не та переменная
ElenaVP
  
math.exp(-1*(a-b)**2/2*b**2)
  
math.exp(-1 * (a - b) ** 2 / (2 * c ** 2))
Это произошло из-за переделки имён. Важно понимать, что если код заставляет тебя слишком много думать (что в нём и как устроено), то это плохой код (мутный код) и надо его улучшать (прояснять).
ElenaVP
Огромное вам спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB