Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 23, 2021 10:29:25

kanonirov
Зарегистрирован: 2021-09-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Всю голову сломал. Помогите решить

Ув. форумчане, подскажите, есть уравнение тиипа:
2*x+3*y+3*z+4*t = 1000
у каждой переменной есть интервал, допустим (1-5 с шагом 0.1)
как вывести возможные значения?

Офлайн

#2 Сен. 23, 2021 16:30:58

kanonirov
Зарегистрирован: 2021-09-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Всю голову сломал. Помогите решить

Написал пока вот так.. но цифры лошадиные, искать будет долго, перебирает уже часа два
import numpy as np
for x in np.arange (118537.84, 118539.84, 0.01 ):
for y in np.arange (4120.60, 4122.60, 0.01 ):
for z in np.arange (405.96, 407.96, 0.01 ):
for t in np.arange (10283.78, 10285.78, 0.01 ):
if (((42*x)+(902*y)+(12178*z)+(868*t)) == 22903674.11):
print (x,y,z,t)

Офлайн

#3 Сен. 23, 2021 17:15:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Всю голову сломал. Помогите решить

как вывести возможные значения?
а почему вы уверены, что точности 0.1 достаточно? А если решения имеют вид

2*1.5554+3*9.255+3*0.89463+4*5439.99 = 1000
или вообще корни вещественые, вы вашим циклом их точно не найдете



Офлайн

#4 Сен. 23, 2021 17:16:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Всю голову сломал. Помогите решить

kanonirov
какая вообще задача перед вами стоит изначально?



Офлайн

#5 Сен. 23, 2021 17:26:06

kanonirov
Зарегистрирован: 2021-09-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Всю голову сломал. Помогите решить

FishHook
kanonirov какая вообще задача перед вами стоит изначально?
Бухгалтерше нужно какие-то копейки найти, дала мне эти цифры:
необходимо найти значения
42*х+902*у+12178*z+868*t=22 301 993,11
 Где х=(118538,84±1 с шагом 0,01)
Где y=(4121,60±1 с шагом 0,01)
Где z=(406,96±1 с шагом 0,01)
Где t=(9965,12±1 с шагом 0,01)

Отредактировано FishHook (Сен. 23, 2021 18:45:08)

Офлайн

#6 Сен. 23, 2021 17:53:51

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Всю голову сломал. Помогите решить

kanonirov
Написал пока вот так.. но цифры лошадиные, искать будет долго, перебирает уже часа два
ну вобщем и целом можно обойтись без четвертого цикла, меняем формулу на t1000 - 2*x+3*y+3*z)/4 и смотрим попадает ли она в ваш диапазон. По крайней мере так у вас будет на один вложеный цикл меньше.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#7 Сен. 23, 2021 23:23:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Всю голову сломал. Помогите решить

kanonirov
Бухгалтерше нужно какие-то копейки найти, дала мне эти цифры:
Если с копейками работаешь, домножь их сначала до целых, потом проводи вычисления в целых числах, а результат потом подели обратно. Иначе в результате компьютерных округлений значения могут пропадать.



Офлайн

#8 Сен. 24, 2021 08:24:17

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Всю голову сломал. Помогите решить

Похоже задачу давала не бугалтерша а препод по математике. Изучаемая тема диофантовы уравнения.
И цифры не лошадиные, а правильно подобранные, чтобы брутофорсом всякая школота не могла задачу решить. Правая часть превышает MAX_INT чтобы нельзя было на C перебирать. Респект преподу!!
Т.е. надо чуток мозгами пошевелить.

То что с плавающими числами точное сравнение не следует использовать это азы. В первом приближении можете считать что точное равенство никогда не выполняется. Даже если вы случайно найдете решение то не заметите это из за округлений. Надо переводить в целые числа коэффициенты.

Приводить поиск к интервалу 1-N

Упростить уравнение… И далее использовать теоремы



Отредактировано doza_and (Сен. 24, 2021 08:40:21)

Офлайн

#9 Сен. 24, 2021 08:34:16

kanonirov
Зарегистрирован: 2021-09-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Всю голову сломал. Помогите решить

doza_and
в
К сожалению не так хорошо питон знаю, и тем более математику)

Офлайн

#10 Сен. 24, 2021 08:41:58

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Всю голову сломал. Помогите решить

kanonirov
К сожалению не так хорошо питон знаю,
Тогда вам просто не следует браться за такие задачи.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version