решение уравнения
От: alexs72  
Дата: 10.03.08 08:52
Оценка:
Здравствуйте!
Надо решить уравнение подобного вида 5*x1+7*x2+10*x3+...+50*xn = 2345789
Где количество неизвестных ~ 10-20.
И еще известно что сумма всех Х равна некоторому числу(обычно не больше 1000) .
Возможно еще(а скорее всего так и будет) нужно будет учесть
приблизительные "весовые коэффициенты" каждого Х.
Например, величина x1 должна быть примерно 30% от всей суммы,
x2 — 10% и т.п.
В институте учился уже давно поэтому забыл уже всю математику напрочь,
и кроме перебора на ум ничего не приходит.
Помогите с алгоритмом,
желательно бы еще и на С исходники посмотреть если есть конечно .
Спасибо.
Re: решение уравнения
От: Mace Украина http://vhaydin.blogspot.com/
Дата: 10.03.08 09:14
Оценка:
Здравствуйте, alexs72, Вы писали:

A>Здравствуйте!

A>Надо решить уравнение подобного вида 5*x1+7*x2+10*x3+...+50*xn = 2345789
A>Где количество неизвестных ~ 10-20.
A>И еще известно что сумма всех Х равна некоторому числу(обычно не больше 1000) .
A>Возможно еще(а скорее всего так и будет) нужно будет учесть
A>приблизительные "весовые коэффициенты" каждого Х.
A>Например, величина x1 должна быть примерно 30% от всей суммы,
A>x2 — 10% и т.п.
То есть есть система из трех уравнений с 10 неизвестными. Насколько я знаю, для того, чтоб систему можно было решить, надо чтоб количество уравнений было больше или равно количеству неизвестных.
Re[2]: решение уравнения
От: alexs72  
Дата: 10.03.08 09:47
Оценка:
Здравствуйте, Mace, Вы писали:

M>Здравствуйте, alexs72, Вы писали:


A>>Здравствуйте!

A>>Надо решить уравнение подобного вида 5*x1+7*x2+10*x3+...+50*xn = 2345789
A>>Где количество неизвестных ~ 10-20.
A>>И еще известно что сумма всех Х равна некоторому числу(обычно не больше 1000) .
A>>Возможно еще(а скорее всего так и будет) нужно будет учесть
A>>приблизительные "весовые коэффициенты" каждого Х.
A>>Например, величина x1 должна быть примерно 30% от всей суммы,
A>>x2 — 10% и т.п.
M>То есть есть система из трех уравнений с 10 неизвестными. Насколько я знаю, для того, чтоб систему можно было решить, надо чтоб количество уравнений было больше или равно количеству неизвестных.

По сути уравнение одно (первое), но для него будет множество решений.
Ограничением по Х выступает лишь сумма всех найденных X'ов (х всегда положительное).
И из этого полученного множества уже выберу по нужным критериям.
Вопрос как мне найти эти множества?
Re: решение уравнения
От: baily Россия  
Дата: 10.03.08 12:44
Оценка:
Здравствуйте, alexs72, Вы писали:

Это обычная система линейных уравнений. Решается методом Гаусса.
здесь
Re: решение уравнения
От: Vintik_69 Швейцария  
Дата: 10.03.08 13:30
Оценка:
Здравствуйте, alexs72, Вы писали:

A>Надо решить уравнение подобного вида 5*x1+7*x2+10*x3+...+50*xn = 2345789


А xi — целые или дробные?
Re[2]: решение уравнения
От: Аноним  
Дата: 10.03.08 15:21
Оценка:
Здравствуйте, baily, Вы писали.

А если надо найти множества решений (учесть в границах, что проценты от суммы заданы неточно) — то это методы интервального оценивания.
Re: решение уравнения
От: vadimcher  
Дата: 10.03.08 15:24
Оценка:
Здравствуйте, alexs72, Вы писали:

A>Здравствуйте!

A>Надо решить уравнение подобного вида 5*x1+7*x2+10*x3+...+50*xn = 2345789
A>Где количество неизвестных ~ 10-20.
A>И еще известно что сумма всех Х равна некоторому числу(обычно не больше 1000) .
A>Возможно еще(а скорее всего так и будет) нужно будет учесть
A>приблизительные "весовые коэффициенты" каждого Х.
A>Например, величина x1 должна быть примерно 30% от всей суммы,
A>x2 — 10% и т.п.
A>В институте учился уже давно поэтому забыл уже всю математику напрочь,
A>и кроме перебора на ум ничего не приходит.
A>Помогите с алгоритмом,
A>желательно бы еще и на С исходники посмотреть если есть конечно .
A>Спасибо.

По сути у Вас система из двух уравнений
5*x1+7*x2+10*x3+...+50*xn = 2345789
x1+x2+x3+...+xn = X

Два линейных уравнения и n>2 неизвестных. Решений больше, чем надо -- целое n-2-мерное пространство.

Что это значит? Это значит, что Вы можете для n-2 переменных задать любые значения, подставить их в систему и найти подходящие значения для двух оставшихся переменных.

Теперь о весовых коэффициентах. Если у Вас их <=n-2, то можете смело задавать соответсвующие переменные так, что они в точности имеют необходимые весовые коэффициенты. Например, если x1 -- 30%, x2 -- 5%, ..., xn-2 -- 2%, а на xn-1 и xn ограничений нет, то задаете x1=0.3X, x2=0.05X и т.д. А xn-1 и xn находите из оставшейся системы 2x2.

Более интересный случай, когда у Вас есть желаемые весовые коэффициенты для всех n переменных.

Пусть желаемые весовые коэффициенты a1, a2, ..., an. Тогда среди всех этих бесчисленных решений надо найти то, которое дает наиболее близкие в каком-то смысле весовые коэффициенты. Мне думается, что лучше, когда они наиболее близкие в относительном, а не в абсолютном смысле. Т.е. если x1 должен быть, например, 30%, а x2 -- 3%, то лучшее решение должно давать одинаковое относительное отклонение от желаемого, а не абсолютное, т.е. 30%+-3% и 3%+-3% выглядит не очень, гораздо лучше, если 30%+-3%, 3%+-0.3%.

Тогда получаем следующую задачу
sum [i=1..n] ( xi/(ai*X) — 1 )^2 -> min
s.t.
sum [i=1..n] ci*xi = A
sum [i=1..n] xi = X

Если Вам надо решить ее один раз, то лучше воспользоваться каким-то матпакетом. Если же требуется программная реализация на каком-то языке, то для начала не мешало бы попробовать решить аналитически.

L = sum [i=1..n] ( xi/(ai*X) — 1 )^2 — l * (sum [i=1..n] ci*xi — A) — m * (sum [i=1..n] xi — X)
dL/dxi = 2 * ( xi/(ai*X) — 1 ) / (ai*X) — l * ci — m = 0
xi = ( l * ci + m ) * (ai*X)^2 / 2 + (ai*X)

Теперь все это подставляем в систему из двух линенейных уравнений
sum [i=1..n] ci*(( l * ci + m ) * (ai*X)^2 / 2 + (ai*X)) = A
sum [i=1..n] (( l * ci + m ) * (ai*X)^2 / 2 + (ai*X)) = X

l * sum[i=1..n](ci*ai*X)^2/2 + m * sum[i=1..n]ci*(ai*X)^2/2 = A — sum [i=1..n]ci*(ai*X)
l * sum[i=1..n]ci*(ai*X)^2/2 + m * sum[i=1..n](ai*X)^2/2 = X — sum [i=1..n](ai*X)

Это система из двух линейных уравнений. Выражаете m из первого, подставляете во второе, находите l, подставляете в первое, находите m, подставляете в выражения для xi выше.

А вот зайца кому, зайца-выбегайца?!
Re[2]: решение уравнения
От: alexs72  
Дата: 11.03.08 03:14
Оценка:
Здравствуйте, vadimcher, Вы писали:

V>Здравствуйте, alexs72, Вы писали:


A>>Здравствуйте!

A>>Надо решить уравнение подобного вида 5*x1+7*x2+10*x3+...+50*xn = 2345789
Да еще забыл сказать, что все Х должны быть целыми и положительными
Re: решение уравнения
От: Аноним  
Дата: 11.03.08 09:35
Оценка:
Здравствуйте, alexs72, Вы писали:

A>Здравствуйте!

A>Надо решить уравнение подобного вида 5*x1+7*x2+10*x3+...+50*xn = 2345789
A>Где количество неизвестных ~ 10-20.
A>И еще известно что сумма всех Х равна некоторому числу(обычно не больше 1000) .
A>Возможно еще(а скорее всего так и будет) нужно будет учесть
A>приблизительные "весовые коэффициенты" каждого Х.
A>Например, величина x1 должна быть примерно 30% от всей суммы,
A>x2 — 10% и т.п.
A>В институте учился уже давно поэтому забыл уже всю математику напрочь,
A>и кроме перебора на ум ничего не приходит.
A>Помогите с алгоритмом,
A>желательно бы еще и на С исходники посмотреть если есть конечно .
A>Спасибо.


если есть неполная система линейных уравнений. например:
x1*a11+x2*a12+x3*a13+...+xn*a1n=b1
x1*a21+x2*a22+x3*a23+...+xn*a2n=b2
то решение системы можно записать в виде суперпозиции (суммы частных решений, не однородного и однородных)
x[]=xo+C1*xa[]+C2*xb[]+...C[n-2]*x(n-2)[]

x1*a11+x2*a12=b1-(x3*a13+...+xn*a1n)
x1*a21+x2*a22=b2-(x3*a23+...+xn*a2n)

Сначала задаёш все x3..xn=0 и находиш частное решение xo
xo1*a11+xo2*a12=b1
xo1*a21+xo2*a22=b2

Потом по очереди задаёш x3=1 x4=0 x5=0 ... xn=0
xa1*a11+xa2*a12=-1*a13
xa1*a21+xa2*a22=-1*a23

Потом по очереди задаёш x3=0 x4=0 x5=0 .. xk=1 ... xn=0
x(k)1*a11+x(k)2*a12=-1*a1k
x(k)1*a21+x(k)2*a22=-1*a2k

Получаеш набор дополнительных решений и общее решение зависит от n-2 произвольных констант которые можно выбирать из др условий.
x_full[]=xo+C1*xa[]+C2*xb[]+...C[n-2]*x(n-2)[]

ps: для решения такой системы за x1 и x2 лучше всего брать такие переменные для которых определитель по модулю максимален
|a11*a22-a21*a12| -> max
Re[3]: решение уравнения
От: TheBeard Россия  
Дата: 11.03.08 10:46
Оценка:
Здравствуйте, alexs72, Вы писали:
A>>>Надо решить уравнение подобного вида 5*x1+7*x2+10*x3+...+50*xn = 2345789
A>Да еще забыл сказать, что все Х должны быть целыми и положительными

Это у нас линейное Диофантово уравнение. Обычные методы решения линейных уравнений к нему неприменимы. Википедия рекомендует расширенный Евклидов алгоритм. Ссылки на английские статьи, так как качество русской версии много хуже.

В общем, если погуглить diofantine equations, много всякого находится. Желаю успехов.
Re[3]: решение уравнения
От: vadimcher  
Дата: 11.03.08 16:05
Оценка:
Здравствуйте, alexs72, Вы писали:

A>Здравствуйте, vadimcher, Вы писали:


V>>Здравствуйте, alexs72, Вы писали:


A>>>Здравствуйте!

A>>>Надо решить уравнение подобного вида 5*x1+7*x2+10*x3+...+50*xn = 2345789
A>Да еще забыл сказать, что все Х должны быть целыми и положительными

Проблема в том, что даже для нецелочисленных решений у Вас могут быть серьезные отклонения от желаемых весов. Что уж тут говорить про целочисленные.

Пример.
x1+2x2+3x3+4x4+5x5=200
x1+x2+x3+x4+x5=100
a1=0.30 a2=0.15 a3=0.15 a4=0.30 a5=0.10

Нецелочисленное решение берется из системы, которую я описал до этого:
l*(30^2+30^2+45^2+120^2+50^2)/2 + m*(900+450+675+3600+500)/2 = 200 — 30 — 30 — 45 — 120 — 50 = -75
l*(900+450+675+3600+500)/2 + m*(900+225+225+900+100)/2 = 0

l*10362.5 + m*3062.5 = -75
l*3062.5 + m*1275 = 0

l = -0.031506619741913859560918384446
m = 0.082118317412435059493883023294

x1 = (-0.031506619741913859560918384446*1+0.082118317412435059493883023294)*900/2+30
x2 = (-0.031506619741913859560918384446*2+0.082118317412435059493883023294)*225/2+15
x3 = (-0.031506619741913859560918384446*3+0.082118317412435059493883023294)*225/2+15
x4 = (-0.031506619741913859560918384446*4+0.082118317412435059493883023294)*900/2+30
x5 = (-0.031506619741913859560918384446*5+0.082118317412435059493883023294)*100/2+10

x1 = 52.7752639517345399698340874816
x2 = 17.14932126696832579185520362022
x3 = 13.60482654600301659125188537004
x4 = 10.2413273001508295625942684795
x5 = 6.2292609351432880844645550532

Можете проверить, что их сумма равна 100, а сумма с заданными коэффициентами -- 200.

Это НАИЛУЧШЕЕ решение в нецелых, которое дает наименьшее относительное отклонение от заданных весов.

Веса отклоняются достаточно сильно, но это лучшее решение в нецелых, если за критерий взять относительное отклонение весов от желаемых.
Например, если бы мы сразу положили x1=30, x2=15, x3=15 (т.е. в точности нужные веса), то x4+x5=40, 4x4+5x5=95, т.е. x5 = -65 и x4 = 105, т.е. результат ужасный, алгоритм дает намного лучше (хоть и далеко от желаемого).

Имея наилучший результат в нецелых, берем его как исходную точку для целочисленного решения. Если для Вас не так критично что x1+x2+...+xn=A и c1x1+c2x2+...+cnxn=X, т.е. эти равенства также могут выполняться с некоторой точностью (ну, например, если это память, то по сути Вам надо x1+x2+...+xn <= A, но как можно ближе), то стартуем от найденного лучшего решения в нецелых, и берем ближайшее подходящее целочисленное.

А вот зайца кому, зайца-выбегайца?!
Re[4]: решение уравнения
От: alexs72  
Дата: 12.03.08 08:15
Оценка:
Здравствуйте, vadimcher, Вы писали:

V>Здравствуйте, alexs72, Вы писали:


A>>Здравствуйте, vadimcher, Вы писали:


V>>>Здравствуйте, alexs72, Вы писали:


A>>>>Здравствуйте!

A>>>>Надо решить уравнение подобного вида 5*x1+7*x2+10*x3+...+50*xn = 2345789
A>>Да еще забыл сказать, что все Х должны быть целыми и положительными

V>Проблема в том, что даже для нецелочисленных решений у Вас могут быть серьезные отклонения от желаемых весов. Что уж тут говорить про целочисленные.



V>Имея наилучший результат в нецелых, берем его как исходную точку для целочисленного решения. Если для Вас не так критично что x1+x2+...+xn=A и c1x1+c2x2+...+cnxn=X, т.е. эти равенства также могут выполняться с некоторой точностью (ну, например, если это память, то по сути Вам надо x1+x2+...+xn <= A, но как можно ближе), то стартуем от найденного лучшего решения в нецелых, и берем ближайшее подходящее целочисленное.


Мне как раз важно чтобы х всегда были целыми, х=0.99999 никак не пойдет.
А вот ограничение на то что х1 должно быть 30% от всей суммы x,
скорее желательное чем обязательное, пусть будет и 31% и 32% или 90% на худой конец,
если по друому уравнение не решается.
Я бы даже пока на эти проценты закрыл глаза просто получить бы решение(набор решений)
с целыми значениями для Х
Thebeard написал еще про дифантово уравнение, если только мой мозг сможет это воспринять,
тем более на английском
Re[5]: решение уравнения
От: baily Россия  
Дата: 12.03.08 11:18
Оценка:
Здравствуйте, alexs72, Вы писали:

A>Мне как раз важно чтобы х всегда были целыми, х=0.99999 никак не пойдет.

A>А вот ограничение на то что х1 должно быть 30% от всей суммы x,
A>скорее желательное чем обязательное, пусть будет и 31% и 32% или 90% на худой конец,
A>если по друому уравнение не решается.
A>Я бы даже пока на эти проценты закрыл глаза просто получить бы решение(набор решений)
A>с целыми значениями для Х
A>Thebeard написал еще про дифантово уравнение, если только мой мозг сможет это воспринять,
A>тем более на английском

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

Если вкратце, чтобы у вас была идея как все делать, то ее можно сформулировать так:
Если есть система линейных уравнений, то для нахождения ее решения методом Гаусса делают следующее:

— Пишут матрицу коэффициентов уравнения
— Приводят эту матрицу к диагональному виду, с помощью двух типов преобразований:

1) Можно переставлять любые две строки
2) Можно из одной строки вычесть другую, умноженную на любое число

Данные преобразования дают новые уравнения, но при этом решение старых уравнений и новых не изменяются. Зато в итоге приходим к системе уравнений, для которых решение очевидно.

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

2') Можно из одной строки вычесть другую, умноженную на любое целое число

В итоге опять матрицу можно привести к диагональному виду, из которого легко получается решение
Re[5]: решение уравнения
От: vadimcher  
Дата: 12.03.08 13:53
Оценка:
Здравствуйте, alexs72, Вы писали:

A>Мне как раз важно чтобы х всегда были целыми, х=0.99999 никак не пойдет.

A>А вот ограничение на то что х1 должно быть 30% от всей суммы x,
A>скорее желательное чем обязательное, пусть будет и 31% и 32% или 90% на худой конец,

Так я Вам и не предлагал 0.99999. Вопрос был на сколько принципиально, что x1+...+xn=X и c1x1+...+cnxn=A.
Ну например, если A это память, то понятно, что A-10 тоже подойдет. В таком случае ищете решение в нецелых, которое дает наилучшие веса, а потом округляете вниз. В чем задача-то?

А вот зайца кому, зайца-выбегайца?!
Re[6]: решение уравнения
От: alexs72  
Дата: 13.03.08 02:09
Оценка:
Здравствуйте, vadimcher, Вы писали:

V>Здравствуйте, alexs72, Вы писали:


A>>Мне как раз важно чтобы х всегда были целыми, х=0.99999 никак не пойдет.

A>>А вот ограничение на то что х1 должно быть 30% от всей суммы x,
A>>скорее желательное чем обязательное, пусть будет и 31% и 32% или 90% на худой конец,

V>Так я Вам и не предлагал 0.99999. Вопрос был на сколько принципиально, что x1+...+xn=X и c1x1+...+cnxn=A.

V>Ну например, если A это память, то понятно, что A-10 тоже подойдет. В таком случае ищете решение в нецелых, которое дает наилучшие веса, а потом округляете вниз. В чем задача-то?
Да может быть действительно задачи мне и надо было начать, а не с уравнений
Задача такая: по электричкам за определенный период есть такие показатели: сумма и количество билетов.
Еще есть тариф , т.е сумма за проезд от одной зоны до другой.
Надо посчитать сколько пассажиров проехало от одной зоны до другой (х),
учитывая что варианты поездок заранее заданы (допустим все пассажиры едут с 0зоны до 1 , с 0 до 2 и с 0 до 3)
Re[7]: решение уравнения
От: vadimcher  
Дата: 13.03.08 15:40
Оценка:
Здравствуйте, alexs72, Вы писали:

A>Здравствуйте, vadimcher, Вы писали:


V>>Здравствуйте, alexs72, Вы писали:


A>>>Мне как раз важно чтобы х всегда были целыми, х=0.99999 никак не пойдет.

A>>>А вот ограничение на то что х1 должно быть 30% от всей суммы x,
A>>>скорее желательное чем обязательное, пусть будет и 31% и 32% или 90% на худой конец,

V>>Так я Вам и не предлагал 0.99999. Вопрос был на сколько принципиально, что x1+...+xn=X и c1x1+...+cnxn=A.

V>>Ну например, если A это память, то понятно, что A-10 тоже подойдет. В таком случае ищете решение в нецелых, которое дает наилучшие веса, а потом округляете вниз. В чем задача-то?

Ну после того, как Вы получили решение в нецелых -- уже ни в чем. Только это решение еще получить надо было.

A>Да может быть действительно задачи мне и надо было начать, а не с уравнений

A>Задача такая: по электричкам за определенный период есть такие показатели: сумма и количество билетов.
A>Еще есть тариф , т.е сумма за проезд от одной зоны до другой.
A>Надо посчитать сколько пассажиров проехало от одной зоны до другой (х),
A>учитывая что варианты поездок заранее заданы (допустим все пассажиры едут с 0зоны до 1 , с 0 до 2 и с 0 до 3)

А веса-то тут причем? У Вас будет много вариантов. А кроме того, Вы уверены, что нет погрешности, например, в сумме, уплаченной за все билеты, в количестве билетов? Т.е. что сумма в точности соответствует тому количеству билетов, что Вам дано?

А вот зайца кому, зайца-выбегайца?!
Re[7]: решение уравнения
От: Аноним  
Дата: 13.03.08 22:45
Оценка:
Здравствуйте, alexs72, Вы писали:

A>Задача такая: по электричкам за определенный период есть такие показатели: сумма и количество билетов.

A>Еще есть тариф , т.е сумма за проезд от одной зоны до другой.
A>Надо посчитать сколько пассажиров проехало от одной зоны до другой (х),
A>учитывая что варианты поездок заранее заданы (допустим все пассажиры едут с 0зоны до 1 , с 0 до 2 и с 0 до 3)

Не корректно поставленная задача. Даже если у тебя есть информация сколько продано билетов и сумма по каждой станции.
То Co -- стоимость одной зоны, P(a,b) -- это кол-во пассажиров купивших билет от a до b и твои суммы для k-ой станции
B(k)=sum(P(k,b),b=1..N)
S(k)=Co*sum(P(k,b)*|k-b|,b=1..N)
P(a,a)=0

Т.е. у тебя P(k,b) ==> N^2 неизвестных а уравнений всего 3*N
то есть решение возможно только если есть всего 3 станции

Либо надо накладывать ограничения на распределение P(a,b) в зависимости от самих станции и платежеспособности пассажиров или тупо смоделировать по выборке
и потом у тебя пасожиро-поток может быть замкнутым и не замкнутым. логично предположить что основная часть ездит на электричке туда-сюда
т.е. постоянно со станции а на станцию b и берёт билет туда сюда или проездной или бегает от контролёров. другая составляющая проезжие,
но их по идее должно быть значительно меньше. те что ездят постоянно тоже делятся на несколько групп: те что едут на работу, студенты, дачники и зайцы.
их можно выявить по времени поездки и по учебным заведениям привязанным к станциям и времени движения поездов так что ищите дополнительную информацию,
той что имеется явно не достаточно.

ps: экономисти блин
Re[8]: решение уравнения
От: alexs72  
Дата: 14.03.08 01:36
Оценка:
A>>Да может быть действительно задачи мне и надо было начать, а не с уравнений
A>>Задача такая: по электричкам за определенный период есть такие показатели: сумма и количество билетов.
A>>Еще есть тариф , т.е сумма за проезд от одной зоны до другой.
A>>Надо посчитать сколько пассажиров проехало от одной зоны до другой (х),
A>>учитывая что варианты поездок заранее заданы (допустим все пассажиры едут с 0зоны до 1 , с 0 до 2 и с 0 до 3)

V>А веса-то тут причем? У Вас будет много вариантов. А кроме того, Вы уверены, что нет погрешности, например, в сумме, уплаченной за все билеты, в количестве билетов? Т.е. что сумма в точности соответствует тому количеству билетов, что Вам дано?

Под весом я имел ввиду процентное отношение поездок по определенному направлению относительно
всех поездок. Т.е с 0 зона до 1 должно ехать ~30% и т.д.
По поводу погрешности в количестве и сумме — нет ее не будет все это точно.
Re[8]: решение уравнения
От: alexs72  
Дата: 14.03.08 02:04
Оценка:
А>Не корректно поставленная задача. Даже если у тебя есть информация сколько продано билетов и сумма по каждой станции.
А>То Co -- стоимость одной зоны, P(a,b) -- это кол-во пассажиров купивших билет от a до b и твои суммы для k-ой станции
А>B(k)=sum(P(k,b),b=1..N)
А>S(k)=Co*sum(P(k,b)*|k-b|,b=1..N)
А>P(a,a)=0
А>Т.е. у тебя P(k,b) ==> N^2 неизвестных а уравнений всего 3*N
А>то есть решение возможно только если есть всего 3 станции
Немного не так, нет понятия стоимость одной зоны.
Т.е, например стоимость от 0 до 1 — 9р, 0 до 2 — 12 , 0 до 3 16,т.е. зависимость нелинейная.
поэтому и пишу что уравнение будет вида
a1*x1+a2*x2 ... = summa, где a1-тариф от 0 до 1 зоны, a2-тариф от 0 до 2 зоны.
количество зон не более 10.
количество возможных маршрутов от зоны до зоны будет задано давайте зададим тоже 10

А>Либо надо накладывать ограничения на распределение P(a,b) в зависимости от самих станции и платежеспособности пассажиров или тупо смоделировать по выборке

эти данные будут даны т.е. будут цифры на те маршруты что будут в уравнении ,
т.е. например количество по маршруту 1(от 0 до 1 зоны) должно стремиться к 30% от общей ,
по маршруту 2 к 20% и т.д.

А>ps: экономисти блин
Re[9]: решение уравнения
От: Аноним  
Дата: 14.03.08 10:35
Оценка:
Здравствуйте, alexs72, Вы писали:

А>>Не корректно поставленная задача. Даже если у тебя есть информация сколько продано билетов и сумма по каждой станции.

А>>То Co -- стоимость одной зоны, P(a,b) -- это кол-во пассажиров купивших билет от a до b и твои суммы для k-ой станции
А>>B(k)=sum(P(k,b),b=1..N)
А>>S(k)=Co*sum(P(k,b)*|k-b|,b=1..N)
А>>P(a,a)=0
А>>Т.е. у тебя P(k,b) ==> N^2 неизвестных а уравнений всего 3*N
А>>то есть решение возможно только если есть всего 3 станции
A>Немного не так, нет понятия стоимость одной зоны.
A>Т.е, например стоимость от 0 до 1 — 9р, 0 до 2 — 12 , 0 до 3 16,т.е. зависимость нелинейная.
A>поэтому и пишу что уравнение будет вида
A>a1*x1+a2*x2 ... = summa, где a1-тариф от 0 до 1 зоны, a2-тариф от 0 до 2 зоны.
A>количество зон не более 10.
A>количество возможных маршрутов от зоны до зоны будет задано давайте зададим тоже 10
Какая разница. Это была всего лиш модель. если у тебя есть таблица цен по зонам M(a,b)-стоимоть проезда от a до b
B(k)=sum(P(k,b),b=1..N)
S(k)=sum(P(k,b)*M(k,b),b=1..N)
P(a,a)=0
То это ничего не меняет N^2 неизвестных и 3*N уравнений. т.е. только в случае 3х станций.

А>>Либо надо накладывать ограничения на распределение P(a,b) в зависимости от самих станции и платежеспособности пассажиров или тупо смоделировать по выборке

A>эти данные будут даны т.е. будут цифры на те маршруты что будут в уравнении ,
A>т.е. например количество по маршруту 1(от 0 до 1 зоны) должно стремиться к 30% от общей ,
A>по маршруту 2 к 20% и т.д.
Если эти данные есть P(a,b) то уже всё есть и ничего не надо P(a,b)=Po*p(a,b)
Кол-во пассажиров пересекающих a -> a+1
Zr(a)=sum( P(i,j), i=1..a, j=a+1..N )
и в другую сторону
Zl(a)=sum( P(j,i), i=1..a, j=a+1..N )
но это только если все покупают билет в одну сторону, нет зайцев и нет проездных

Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.