Programozása algebra egyenlet

szavazat
2

a másik után, MSN kaptam egy jó útmutató megoldására én algebra probléma ( kiszámítása licit ár teljes költség ). Most, bár tudom számolni, hogy kézzel, én teljesen elakad, hogyan kell írni ezt a pszeudokódokra vagy kódot. Bárki adj egy gyors tipp? By the way, azt akarom, hogy kiszámítja az ajánlatot adott a végső költségeket.

usage cost(bid) = PIN(bid*0.10, 10, 50)
seller cost(bid) = bid*.02
added cost(bid) = PIN(ceiling(bid/500)*5, 5, 10) + PIN(ceiling((bid - 1000)/2000)*5, 0, 10)
storing cost(bid) = 100
So the final cost is something like:

final cost(bid) = PIN(bid*.1, 10, 50) + pin(ceiling(bid/500)*5, 5, 20) + PIN(ceiling((bid - 1000)/2000)*10, 0, 20) + bid*.02 + 100 + bid
Solve for a particular value and you're done.

For example, if you want the total cost to be $2000:

2000 = PIN(bid*.1, 10, 50) + pin(ceiling(bid/500)*5, 5, 10) + PIN(ceiling((bid - 1000)/2000)*5, 0, 10) + bid*.02 + 100 + bid.
Bid must be at least > 1500 and < 2000, which works out nicely since we can make those PIN sections constant:

2000 = 50 + 10 + 5 + 100 + bid*1.02
1835 = bid*1.02
bid = 1799.0196078431372549019607843137
A kérdést 13/03/2009 02:08
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
2

Mivel a használata PIN, és ceilingén nem látok egyszerűen fordítsa a számítás. Feltéve, hogy bidvan egy fix pontosságú (Gondolom két tizedesjegy pontossággal mögött dot) mindig lehet használni a bináris keresés (például a függvények monoton).

Edit: gondolkodás után még egy kicsit, azt tapasztaltam, hogy figyelembe x = bid*1.02 + 100azt is, hogy a végső költségek között x + 15 (kizárólagos), és x + 70 (bezárólag) (azaz x+15 < final cost < x+70). Mivel a méret ebben a tartományban ( 70-15=55), és az a tény, hogy a különleges értékeket (lásd a megjegyzést alább) bidmind kívül több, mint ez, akkor megteszi x+15 = final cost, és x+70 = final cost, hogy a megfelelő esetekben / érték a használati és járulékos költségek, és egyszerűen megoldani az egyenletet ( amely már nem rendelkezik sem PINvagy ceilingbenne).

Annak illusztrálására, hagyja, hogy a végleges költség lehet 222. Tól x+15 = 222az következik, hogy bid = 107/1.02 = 104.90. Aztán ott van, hogy a használati költségek adják bid*0.1, és hogy a további költségek 5. Más szóval, megkapjuk final cost = bid*0.1 + bid*0.02 + 5 + 100 + bid = bid*1.12 + 105, és ezért bid = (222-105)/1.12 = 104.46. Mivel ez az érték az bideszköz a megfelelő értékeket a használat és egyéb költségeket is figyelembe tudjuk, hogy ez a megoldás.

Azonban, ha volna először nézett x+70 = 222, kapnánk a következő. Először kap, hogy erre a feltételezés, hogy bid = 52/1.02 = 50.98. Ez azt jelenti, hogy használat költségei 10és a járulékos költségek 5. Így kapunk final costs = 10 + bid*0.02 + 5 + 100 + bid = bid*1.02 + 115, és ezért bid = (222-115)/1.02 = 104.90. De ha bidvan 104.90, akkor a használati költségek nem 10, de bid*0.1, tehát ez nem jó megoldás.

Remélem Elmagyaráztam elég világosan. Ha nem, kérem, tudassa velem.

NB: A speciális értékeket értem, amelyek esetében a funkció meghatározó értékeit használat és hozzáadott költségeket változik. Például a használat költségeit ezek az értékek 100, és 500: az alábbi 100használ 10, a fenti 500használ 50, és a kettő között használja bid*0.1.

Válaszolt 13/03/2009 02:47
a forrás felhasználó

szavazat
3

A funkció egyszerűsíthető:

                  / 1.02 * bid + 115   bid <   100
                  | 1.12 * bid + 105   bid <=  500
final cost(bid) = | 1.02 * bid + 160   bid <= 1000
                  | 1.02 * bid + 165   bid <= 3000
                  \ 1.02 * bid + 170   otherwise

Ha úgy gondolja, minden egyes darab külön funkció, akkor lehet háton:

bid_a(cost) = (cost - 115) / 1.02
bid_b(cost) = (cost - 105) / 1.12
bid_c(cost) = (cost - 160) / 1.02
bid_d(cost) = (cost - 165) / 1.02
bid_e(cost) = (cost - 170) / 1.02

Ha csatlakoztatja a költségek minden egyes funkciót kap ajánlat becsült érték a tartományon. Meg kell ellenőrizni, hogy ez az érték valóban olyan, hogy a funkciók érvényes tartományon.

Példa:

cost = 2000

bid_a(2000) = (2000 - 115) / 1.02 = 1848  Too big! Need to be < 100
bid_b(2000) = (2000 - 105) / 1.12 = 1692  Too big! Need to be <= 500
bid_c(2000) = (2000 - 160) / 1.02 = 1804  Too big! Need to be <= 1000
bid_d(2000) = (2000 - 165) / 1.02 = 1799  Good. It is <= 3000
bid_e(2000) = (2000 - 170) / 1.02 = 1794  Too small! Need to be > 3000

Just to check:

final cost(1799) = 1.02 * 1799 + 165 = 2000   Good!

Mivel az eredeti függvény szigorúan növekvő, legfeljebb egy, az új funkciók ad elfogadható érték. De néhány bemenetek egyikük sem ad egy jó érték. Ez azért van, mert az eredeti funkciót átugorja ezeket az értékeket.

final cost(1000) = 1.02 * 1000 + 160 = 1180
final cost(1001) = 1.02 * 1001 + 165 = 1186

Tehát nincs funkciója ad elfogadható érték cost = 1182, például.

Válaszolt 13/03/2009 03:32
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more