Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Kinkkinen laskukaava

Tumpelo [03.02.2006 21:29:47]

#

Eli tarvitsisin jonkinlaisen laskukaavan jolla tulee luvusta 1000 -> 1 ja 10000 -> 2.5 ja siinä välillä kaikki luvut tasaisesti yhdestä kahteen ja puoleen. Olen miettinyt pääni puhki mutta en ole saanut aikaiseksi oikein mitään. Voisiko joku auttaa?

Tzaeru [03.02.2006 22:37:13]

#

Serkku keksi jotakin näinkin ovelaa (hmmph... miksen minä keksinyt >.<): y = 1/6000 * x + 5/6

x siis alkuperäinen muuttuja, esim 1000....

zacura [03.02.2006 22:52:25]

#

f(x)=x*1/6000-5/6

Ja jos kiinnostaa miten keksin tämän kaavan niin yksi tapa on tämä:

f(x)=ax+b

ja alkuarvoista saa seuraavat
f(1000)=1000*a+b=1
f(10000)=10000*a+b=2.5

ratkaisemalla tuo yhtälötyhmä saadaan
a=1/6000
b=5/6

sijoittamalla a ja b funktioon f saadaan
f(x)=x*1/6000+5/6

edit: hidas minä

Deewiant [03.02.2006 22:52:38]

#

Ja tuohan tuli siis ratkomalla yhtälöt:

 1000a + b = 1
10000a + b = 5/2

EDIT: noh, myöhässä.

FooBat [04.02.2006 04:12:34]

#

Tälläisen ongelman pystyy ratkaisemaan todella helposti päässälaskuna, kun skaalaa molemmat lukuparit välille [0, 1] ja sitten yhdistää skaalaukseen tarvittavat laskutoimitukset. Käytännössä tässä tullaan ratkaistuksi edellä mainittu yhtälöryhmä, mutta sen ratkaisua ei juurikaan tarvitse miettiä. Vastaavia skaalauksia tulee tehtya esim. muuttaessa satunnaislukumuuttuja, jollekin tietylle lukualueelle.

[1000, 10000]   | -1000
[0, 9000]       | :9000
[0, 1]

[1, 2.5]        | -1
[0, 1.5]        | :1.5
[0, 1]

->

f(x) = (x - 1000)/9000 * 1.5 +1 = x / 6000 + 5/6

Tumpelo [04.02.2006 10:28:28]

#

Okei, kiitoksia kaikille, en olisi itse keksinyt mokomaa kaavaa vaikka olisi ollut vuosi aikaa. :D Ja jos kiinnostaa mihin sitä tarvitsen niin tuota kaavaa käytän erään peliprojektin auton moottorin äänenkorkeuden laskemiseen kierrosluvuista.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta