Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 26. 04. 2010 21:00

jklasdf
Zelenáč
Příspěvky: 7
Reputace:   
 

postupný číselný přechod (hokejka)

Dobrý den. Dělám program na přechod barev a v něm řeším matematický problém. Barvu v programu reprezentuje číslo od 0 do 255. Potřebuju, aby se mně k první barvě ze začátku přičítalo málo a ke konci se hodnota průběžné barvy blížila barvě 2 (když to zaokrouhlím bude to barva 2). - Grafem je to taková hokejka.

Mám například:
První barva - 30
Druhá barva - 180
Počet barevných řádků - 120

A chci zpočítat například 77 řádek.

Kdyby to neměl být postupný přechod (hokejka), řešil bych to takhle:

dílek barvy=(Druhá barva-První barva)/Počet barevných řádků
dílek barvy=(180-30)/120=1,25

77 řádek = dílek barvy * 77
77 řádek = 1,25 * 77
77 řádek = 96,25
-------------------------
-------------------------

Ale má to být postupný přechod, takže vzorec bude jiný a já nevím jaký. Pomůžete mi?

Offline

  • (téma jako vyřešené označil(a) medvidek)

#2 26. 04. 2010 22:28

Stýv
Vrchní cenzor
Příspěvky: 5710
Reputace:   215 
Web
 

Re: postupný číselný přechod (hokejka)

lineární přechod není postupný?

Offline

 

#3 27. 04. 2010 05:52

medvidek
Moderátor
Místo: Praha
Příspěvky: 860
Reputace:   53 
 

Re: postupný číselný přechod (hokejka)

↑ jklasdf:
Pokud ti nestačí lineární interpolace, kterou ve svém příspěvku navrhuješ, potřebuješ znát více než jen krajní body vyplňovaného intervalu. Jedině tak můžeš hladce navázat na stávající průběh barevné škály.

Něco o interpolacích je např. zde http://en.wikipedia.org/wiki/Interpolation

Offline

 

#4 27. 04. 2010 16:01

jklasdf
Zelenáč
Příspěvky: 7
Reputace:   
 

Re: postupný číselný přechod (hokejka)

medvidek napsal(a):

↑ jklasdf:
Pokud ti nestačí lineární interpolace, kterou ve svém příspěvku navrhuješ, potřebuješ znát více než jen krajní body vyplňovaného intervalu. Jedině tak můžeš hladce navázat na stávající průběh barevné škály.

Zkusím nové zadání:
První barva - 0
Druhá barva - 254
Počet barevných řádků - 60

10. řádek: 66
30. řádek: 105

A chci najít vzorec pro spočítání dalších řádků.

Napadlo mně, že by to mohla být exponenciální funkce (?????) a tak jsem zkusil soustavu tří rovnic, ale neumím ji spočítat a ani nevím, jestli to řeším správně:

Ab+c*10=66
Ab+c*30=127
Ab+c*60=254

To b+c*10 má být napsané malíma písmenama vedle A nahoře (tak, jak se píše např. á na druhou)

Offline

 

#5 27. 04. 2010 16:39

jklasdf
Zelenáč
Příspěvky: 7
Reputace:   
 

Re: postupný číselný přechod (hokejka)

jklasdf napsal(a):

a ani nevím, jestli to řeším správně:

Správně to nebude. Od prostředka se to bude zmenšovat.

Offline

 

#6 27. 04. 2010 17:41 — Editoval medvidek (27. 04. 2010 18:13)

medvidek
Moderátor
Místo: Praha
Příspěvky: 860
Reputace:   53 
 

Re: postupný číselný přechod (hokejka)

↑ jklasdf:
Myslíš přeložit křivkou $y=A^{b+cx}$?
Doporučuji načrtnout graf, kde na vodorovné ose budou hodnoty od 1 do 60, na svislé ose budou ty barevné intenzity od 0 do 255. Budeš tam tedy mít jen několik málo bodů. Máš např. představu o té křivce, jakou by měla mít derivaci (sklon) v krajních bodech x=0 a x=60 ?
Pokud by to měla být exponenciála (hokejka :-)) zvol spíš $y=Ae^{kx}$.

EDIT:
Pokud to má mít v bodě 0 hodnotu 0, ještě přidej aditivní člen $y=Ae^{kx} + B$. Pak řeš 3 rovnice pro 3 neznámé. 2 body jsou krajní, takže si můžeš zvolit jen jeden někde mezi nima v místě, kde chceš aby ta křivka procházela. Exponenciála ti více neumožní.

Offline

 

#7 28. 04. 2010 10:42

jklasdf
Zelenáč
Příspěvky: 7
Reputace:   
 

Re: postupný číselný přechod (hokejka)

Udělal jsem si graf a zjistil, že je to jinak než jsem si myslel - ze začátku velké skoky, ke konci po jedničkách:

x    y
0    0
1    0
2    11
3    22
4    33
5    43
6    49
7    55
8    60
9    66
10    72
11    77
12    83
13    89
14    94
15    100
16    106
17    112
18    117
19    123
20    129
21    135
22    140
23    145
24    151
25    157
26    162
27    168
28    173
29    178
30    182
31    187
32    192
33    196
34    201
35    205
36    209
37    213
38    216
39    220
40    223
41    226
42    229
43    232
44    234
45    237
46    239
47    241
48    243
49    244
50    246
51    247
52    249
53    250
54    251
55    252
56    253
57    254


http://forum.matweb.cz/upload/1272443908-image001.png

Offline

 

#8 30. 04. 2010 18:02

medvidek
Moderátor
Místo: Praha
Příspěvky: 860
Reputace:   53 
 

Re: postupný číselný přechod (hokejka)

↑ jklasdf:
To nevadí, lze to i tak přeložit exponenciálou. Na následujícím obrázku je jako příklad exponenciála procházející body (0;0),(30;182) a (57;254). Tyto body byly použity pro výpočet koeficientů A, B, k.

http://forum.matweb.cz/upload/1272642929-matwebHokejka.JPG

Offline

 

#9 09. 05. 2010 10:05

jklasdf
Zelenáč
Příspěvky: 7
Reputace:   
 

Re: postupný číselný přechod (hokejka)

Prosím, jestli by jste mi ještě mohl napsat postup řešení té soustavy rovnic. Zatím jsem zjistil akorát, že místo B můžu napsat -A. Co všechno můžu dělat s logaritmy mi není moc jasné.

0 = A*e na (k*0) - A
182 = A*e na (k*30) - A
254 = A*e na (k*57) - A
----------------------------------

Offline

 

#10 22. 05. 2010 04:03

medvidek
Moderátor
Místo: Praha
Příspěvky: 860
Reputace:   53 
 

Re: postupný číselný přechod (hokejka)

↑ jklasdf:
Omlouvám se, nějak mi ten tvůj dotaz utekl. Tu soustavu jsem řešil numericky.
Pokud si ovšem zvolíme ty tři body tak, aby platilo $x_3-x_2=x_2-x_1$, bude řešení snadné.
Pak to lze zapsat následovně:
$y_1=Ae^{kx_1} + B$
$y_2=Ae^{k(x_1+d)} + B$
$y_3=Ae^{k(x_1+2d)} + B$
Po menší úpravě
$y_1-B=Ae^{kx_1}$
$y_2-B=Ae^{k(x_1+d)}=Ae^{kx_1} \cdot e^{kd}$
$y_3-B=Ae^{k(x_1+2d)}=Ae^{kx_1} \cdot e^{2kd}$
Z první rovnice dosadíme do zbývajících dvou, tím vyloučíme $A$
$y_2-B=(y_1-B) \cdot e^{kd}$
$y_3-B=(y_1-B) \cdot e^{2kd}$
Nyní po dosazení z první do druhé rovnice bude
$y_3-B=(y_1-B) \cdot \left(\frac{y_2-B}{y_1-B}\right)^2$
Tam už zbyla jen neznámá $B$, kterou lze vyjádřit
$B=\frac{y_1y_3-y_2^2}{y_1+y_3-2y_2}$
Výpočet $k$ a nakonec $A$ je už snad zřejmý.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson