построение гиперболы

geyg

Новичок
построение гиперболы

Господа, подскажите пожалуйста как создать массив, ключ и значение которого будут соответственно координатами гиперболы?
Так же было бы не плохо иметь возможность указывать координаты начала и конца этой кривой, и количество точек внутри ее.
 

rotoZOOM

ACM maniac
а в чем собственно проблема ?
PHP:
$mas=Array();
for ($x=-10;$x<10;$x+=0.1){
    $mas[$x]=$x*$x*$x;
}
 

geyg

Новичок
Да спасибо это почти то, что нужно я чуть подкорректировал и получил ват, что
$mas=Array();
for ($x=0;$x<100;$x+=0.1){
$mas[$x]=$x*$x*$x;
}
print "<pre>";
print_r($mas);

Массив получается почти такой, как нужен, только мне необходимо, что бы нулевой элемент был равен 10 а девяносто девятый 100.

[0] => 1
[1] => 6.859
[2] => 24.389
[3] => 59.319
[4] => 125
[5] => 216
[6] => 343
[7] => 512
[8] => 729
[9] => 1000
[10] => 1331
[11] => 1728
[12] => 2197
[13] => 2744
[14] => 3375
[15] => 4096
[16] => 4913
[17] => 5832
[18] => 6751.269
[19] => 7880.599
[20] => 9129.329
[21] => 10503.459
[22] => 12008.989
[23] => 13651.919
[24] => 15438.249
[25] => 17373.979
[26] => 19465.109
[27] => 21717.639
[28] => 24137.569
[29] => 26730.899
[30] => 29503.629
[31] => 32461.759
[32] => 35611.289
[33] => 38958.219
[34] => 42508.549
[35] => 46268.279
[36] => 50243.409
[37] => 54439.939
[38] => 58863.869
[39] => 63521.199
[40] => 68417.929
[41] => 73560.059
[42] => 78953.589
[43] => 84604.519
[44] => 90518.849
[45] => 96702.579
[46] => 103161.709
[47] => 109902.239
[48] => 116930.169
[49] => 124251.499
[50] => 131872.229
[51] => 139798.359
[52] => 148035.889
[53] => 156590.819
[54] => 165469.149
[55] => 174676.879
[56] => 184220.009
[57] => 194104.539
[58] => 204336.469
[59] => 214921.799
[60] => 225866.529
[61] => 237176.659
[62] => 248858.189
[63] => 260917.119
[64] => 273359.449
[65] => 286191.179
[66] => 299418.309
[67] => 313046.839
[68] => 327082.769
[69] => 341532.099
[70] => 356400.829
[71] => 371694.959
[72] => 387420.489
[73] => 403583.419
[74] => 420189.749
[75] => 438976
[76] => 456533
[77] => 474552
[78] => 493039
[79] => 512000
[80] => 531441
[81] => 551368
[82] => 571787
[83] => 592704
[84] => 614125
[85] => 636056
[86] => 658503
[87] => 681472
[88] => 704969
[89] => 729000
[90] => 753571
[91] => 778688
[92] => 804357
[93] => 830584
[94] => 857375
[95] => 884736
[96] => 912673
[97] => 941192
[98] => 970299
[99] => 1000000
 

geyg

Новичок
В общем задача на самом деле заключается в следующем.
Необходимо создать массив цен одного и того же товара, стоимость которого уменьшается в геометрической последовательности, при увеличении заказанного количества.
Заказ одной единицы стоит 10$ , заказ 100 единиц стоит 100$ , между этими вариантами заказа еще 98 цен изменяющихся по гиперболе, т.е. чем больше заказано товара, тем меньше получается стоимость одной единицы.
 

kruglov

Новичок
По двум точкам (1-10$ - 100-100$) можно построить бесконечное количество кривых самых разных порядков и формул.

Вам прямая не подойдет?
 

geyg

Новичок
Автор оригинала: kruglov
По двум точкам (1-10$ - 100-100$) можно построить бесконечное количество кривых самых разных порядков и формул.

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

kruglov

Новичок
geyg
А если она будет не выпуклая и невогнутая - а прямая?
p.s. Гипербола является прямой только если она очень вырожденная...
 

geyg

Новичок
Автор оригинала: kruglov
geyg
А если она будет не выпуклая и невогнутая - а прямая?
p.s. Гипербола является прямой только если она очень вырожденная...
Мне не нужна арифметическая прогрессия, мне нужна геометрическая прогрессия!При арифметической прогрессии цена единицы товара не изменяется при увеличении его количества, поэтому прямая здесь не подходит, здесь нужна именно гипербола.
 

kruglov

Новичок
При чем тут вообще прогрессии, когда вам нужна интерполяция?

-~{}~ 13.07.06 00:03:

Берете уравнение прямой y=kx+b
И решаете систему их 2-х линейных уравнений (при x=1, y=10 и x=100, y=100) относительно k и b
 

geyg

Новичок
kruglov, мне нужна помошь.
Если вы можете, то помогите мне решить задачу, которую я думаю описал очень подробно, выше. Если что-то не понятно спрашивайте.
И помощь мне нужна не в математике а в PHP.
Описываю задачу еще раз.
Нужно сгенерировать список цен для товара, единственный экземпляр, которого стоит 10$, а 100 экземпляров этого же товара стоит 100$, т.е. единица этого товара уже стоит не 10$ а 1$.
Дальше, если скажем разница цены за единицу товара при заказе одной и двух единиц составляет к примеру 0.5%, то разница при заказе 10 и 11 единиц должна уже быть больше чем 0.5%.

Выглядит это примерно так:
1-10
2-10.5
3-11.3
4-12.4
5-13.7
………
………
100-100

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

Да, может быть это не гипербола, как я говорил, скорее всего это парабола, но принципиального значения это не имеет, как назвать эту кривую.
 

kruglov

Новичок
Я уже говорил, что по двум точкам можно построить и прямую, и гиперболу, и параболу, и синусоиду. И гиперболу такую, и сякую, и выпуклую, и вогнутую, и с разрывом второго рода посередине.

Вы не умеете по двум точкам строить прямую? И потом по точкам построить ее график?

Перечитайте школьный учебник по математике класс этак за 9.
 

Skubent

Новичок
geyg, есть принципиальное значение, назвать вас человеком или деревом ?
Вот и про кривые не обощайте.

Далее, зачем генерировать список, если есть формула, по которой однозначно считается цена ?

Далее, если вам надо эту самую формулу придумать - вы ошиблись форумом.

Код:
function GIPERBOLA($x)
{
   return 1 / $x;
}

$start_point = 1;
$end_point = 100;
$step = 1;

$prices = array();

for($x = $start_point; $x <= $end_point; $x += $step)
{
    $prices[$x] = GIPERBOLA($x);
}

print_r($prices);
ЗЫ. Вообще-то, такие "задачи" ученики 10-го класса средней школы решают.
 

geyg

Новичок
Но это же все не то.
Посмотрите сами, что получается.
Во первых значение первого элементе не 10 а 1, во вторых по этому графику цена за 1 товар больше, чем за 2, а цена за 2 товара больше чем за 3, и.д.


[1] => 1
[2] => 0.5
[3] => 0.333333333333
[4] => 0.25
[5] => 0.2
[6] => 0.166666666667
[7] => 0.142857142857
[8] => 0.125
[9] => 0.111111111111
[10] => 0.1
[11] => 0.0909090909091
[12] => 0.0833333333333
[13] => 0.0769230769231
[14] => 0.0714285714286
[15] => 0.0666666666667
[16] => 0.0625
[17] => 0.0588235294118
[18] => 0.0555555555556
[19] => 0.0526315789474
[20] => 0.05
[21] => 0.047619047619
[22] => 0.0454545454545
[23] => 0.0434782608696
[24] => 0.0416666666667
[25] => 0.04
[26] => 0.0384615384615
[27] => 0.037037037037
[28] => 0.0357142857143
[29] => 0.0344827586207
[30] => 0.0333333333333
[31] => 0.0322580645161
[32] => 0.03125
[33] => 0.030303030303
[34] => 0.0294117647059
[35] => 0.0285714285714
[36] => 0.0277777777778
[37] => 0.027027027027
[38] => 0.0263157894737
[39] => 0.025641025641
[40] => 0.025
[41] => 0.0243902439024
[42] => 0.0238095238095
[43] => 0.0232558139535
[44] => 0.0227272727273
[45] => 0.0222222222222
[46] => 0.0217391304348
[47] => 0.0212765957447
[48] => 0.0208333333333
[49] => 0.0204081632653
[50] => 0.02
[51] => 0.0196078431373
[52] => 0.0192307692308
[53] => 0.0188679245283
[54] => 0.0185185185185
[55] => 0.0181818181818
[56] => 0.0178571428571
[57] => 0.0175438596491
[58] => 0.0172413793103
[59] => 0.0169491525424
[60] => 0.0166666666667
[61] => 0.016393442623
[62] => 0.0161290322581
[63] => 0.015873015873
[64] => 0.015625
[65] => 0.0153846153846
[66] => 0.0151515151515
[67] => 0.0149253731343
[68] => 0.0147058823529
[69] => 0.0144927536232
[70] => 0.0142857142857
[71] => 0.0140845070423
[72] => 0.0138888888889
[73] => 0.013698630137
[74] => 0.0135135135135
[75] => 0.0133333333333
[76] => 0.0131578947368
[77] => 0.012987012987
[78] => 0.0128205128205
[79] => 0.0126582278481
[80] => 0.0125
[81] => 0.0123456790123
[82] => 0.0121951219512
[83] => 0.0120481927711
[84] => 0.0119047619048
[85] => 0.0117647058824
[86] => 0.0116279069767
[87] => 0.0114942528736
[88] => 0.0113636363636
[89] => 0.0112359550562
[90] => 0.0111111111111
[91] => 0.010989010989
[92] => 0.0108695652174
[93] => 0.010752688172
[94] => 0.0106382978723
[95] => 0.0105263157895
[96] => 0.0104166666667
[97] => 0.0103092783505
[98] => 0.0102040816327
[99] => 0.010101010101
[100] => 0.01

-~{}~ 13.07.06 11:15:

Автор оригинала: Skubent
geyg,
Далее, зачем генерировать список, если есть формула, по которой однозначно считается цена ?
Какая? Подскажите.
 

Skubent

Новичок
Далее, если вам надо эту самую формулу придумать - вы ошиблись форумом. (c) я сам.

-~{}~ 13.07.06 13:18:

И помощь мне нужна не в математике а в PHP.(с) geyg.

Про пхп уже все, что нужно рассказали. Осталась математика, угу.
 

Wicked

Новичок
Код:
  for ($i = 1; $i <= 100; $i++) {
    $sum[$i] = 10 * pow(10, ($i-1)/99);
  }

Array
(
    [1] => 10
    [2] => 10.23531021899
    [3] => 10.476157527897
...
    [49] => 30.538555088334
    [50] => 31.257158496882
    [51] => 31.992671377974
...
    [98] => 95.454845666183
    [99] => 97.700995729923
    [100] => 100
)
-~{}~ 13.07.06 17:50:

только не для цен это все... там другая система скидок должна быть.
 

zerkms

TDD infected
Команда форума
только на пхпклубе узнал что гипербола это почти то же самое что и геометрическая прогрессия и что всё это великолепие описывается выражением: y = x^3

товарищи, вам по 5 баллов ;)
 
Сверху