Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Smoothstep - Teknopedia
Smoothstep - Teknopedia
Grafico delle funzioni di primo ordine (smoothstep) e secondo ordine (smootherstep) normalizzate nell'intervallo [ 0 , 1 ] {\displaystyle [0,1]} {\displaystyle [0,1]}

Smoothstep è una famiglia di funzioni sigmoidee usate per l'interpolazione hermitiana e per il clamping in computer grafica,[1][2] motori grafici,[3] e apprendimento automatico.[4]

Le smoothstep sono funzioni di una variabile reale a valori in [ 0 , 1 ] {\displaystyle [0,1]} {\displaystyle [0,1]}, caratterizzate da due parametri a {\displaystyle a} {\displaystyle a} e b {\displaystyle b} {\displaystyle b} rappresentanti gli estremi di un intervallo [ a , b ] {\displaystyle [a,b]} {\displaystyle [a,b]} di valori nel dominio. Per ogni x ∈ R {\displaystyle x\in \mathbb {R} } {\displaystyle x\in \mathbb {R} }, smoothstep mappa i valori x ∈ ( a , b ) {\displaystyle x\in (a,b)} {\displaystyle x\in (a,b)} all'intervallo ( 0 , 1 ) {\displaystyle (0,1)} {\displaystyle (0,1)}, mentre tutti i valori x ≤ a {\displaystyle x\leq a} {\displaystyle x\leq a} sono mappati in zero, e tutti i valori x ≥ b {\displaystyle x\geq b} {\displaystyle x\geq b} sono mappati in 1. Una funzione smoothstep normalizzata ha parametri a = 0 {\displaystyle a=0} {\displaystyle a=0} e b = 1 {\displaystyle b=1} {\displaystyle b=1}. Nel seguito, quando non differentemente specificato, si assume che la funzione smoothstep sia normalizzata.

La funzione smoothstep di ordine n {\displaystyle n} {\displaystyle n} interpola i valori tra 0 e 1 in modo tale che:

  • quando la variabile è all'estremo sinistro dell'intervallo, l'immagine della funzione sia 0;
  • quando la variabile è all'estremo destro dell'intervallo, l'immagine della funzione sia 1;
  • le derivate (fino all'ordine n {\displaystyle n} {\displaystyle n}) della funzione presso gli estremi destro e sinistro abbiano valore zero.

Una funzione polinomiale che soddisfi tali vincoli può essere definita tramite l'interpolazione di Hermite. La funzione smoothstep per antonomasia è quella di primo ordine S 1 ⁡ ( x ) {\displaystyle \operatorname {S} _{1}(x)} {\displaystyle \operatorname {S} _{1}(x)}, definita da un polinomio di terzo grado:

smoothstep ⁡ ( x ) = S 1 ⁡ ( x ) = { 0 , x < 0 , 3 x 2 − 2 x 3 , 0 ≤ x ≤ 1 , 1 , x > 1. {\displaystyle \operatorname {smoothstep} (x)=\operatorname {S} _{1}(x)={\begin{cases}0,&x<0,\\3x^{2}-2x^{3},&0\leq x\leq 1,\\1,&x>1.\\\end{cases}}} {\displaystyle \operatorname {smoothstep} (x)=\operatorname {S} _{1}(x)={\begin{cases}0,&x<0,\\3x^{2}-2x^{3},&0\leq x\leq 1,\\1,&x>1.\\\end{cases}}}

Restringendo il dominio in [ 0 , 1 ] {\displaystyle [0,1]} {\displaystyle [0,1]}, la sua inversa può essere espressa analiticamente come:

S 1 − 1 ⁡ ( x ) = 1 2 − sin ⁡ ( sin − 1 ⁡ ( 1 − 2 x ) 3 ) . {\displaystyle \operatorname {S} _{1}^{-1}(x)={\frac {1}{2}}-\sin \left({\frac {\sin ^{-1}(1-2x)}{3}}\right).} {\displaystyle \operatorname {S} _{1}^{-1}(x)={\frac {1}{2}}-\sin \left({\frac {\sin ^{-1}(1-2x)}{3}}\right).}

La funzione smoothstep di ordine n {\displaystyle n} {\displaystyle n} è rappresentata nella porzione centrale da un polinomio di Hermite di grado 2 n + 1 {\displaystyle 2n+1} {\displaystyle 2n+1} e ha forma:

S n ⁡ ( x ) = { 0 , x < 0 , x n + 1 , ∑ k = 0 n ( n + k k ) ( 2 n + 1 n − k ) ( − x ) k 0 ≤ x ≤ 1 , 1 , x > 1. {\displaystyle \operatorname {S} _{n}(x)={\begin{cases}0,&x<0,\\x^{n+1},\sum _{k=0}^{n}{\binom {n+k}{k}}{\binom {2n+1}{n-k}}(-x)^{k}&0\leq x\leq 1,\\1,&x>1.\\\end{cases}}} {\displaystyle \operatorname {S} _{n}(x)={\begin{cases}0,&x<0,\\x^{n+1},\sum _{k=0}^{n}{\binom {n+k}{k}}{\binom {2n+1}{n-k}}(-x)^{k}&0\leq x\leq 1,\\1,&x>1.\\\end{cases}}}

La funzione smoothstep di ordine zero S 0 ⁡ ( x ) {\displaystyle \operatorname {S} _{0}(x)} {\displaystyle \operatorname {S} _{0}(x)} è equivalente alla funzione identità troncata (nota in alcuni contesti, ad esempio in computer grafica, come funzione clamp):

S 0 ⁡ ( x ) = { 0 , x < 0 , x , 0 ≤ x ≤ 1 , 1 , x > 1. {\displaystyle \operatorname {S} _{0}(x)={\begin{cases}0,&x<0,\\x,&0\leq x\leq 1,\\1,&x>1.\\\end{cases}}} {\displaystyle \operatorname {S} _{0}(x)={\begin{cases}0,&x<0,\\x,&0\leq x\leq 1,\\1,&x>1.\\\end{cases}}}

La funzione smoothstep di secondo ordine S 2 ⁡ ( x ) {\displaystyle \operatorname {S} _{2}(x)} {\displaystyle \operatorname {S} _{2}(x)}, anche nota come smootherstep[5][6] e popolarizzata in computer grafica da Ken Perlin,[7][8][9] ha forma:

smootherstep ⁡ ( x ) = S 2 ( x ) = { 0 , x < 0 , 6 x 5 − 15 x 4 + 10 x 3 , 0 ≤ x ≤ 1 , 1 , x > 1. {\displaystyle \operatorname {smootherstep} (x)=S_{2}(x)={\begin{cases}0,&x<0,\\6x^{5}-15x^{4}+10x^{3},&0\leq x\leq 1,\\1,&x>1.\\\end{cases}}} {\displaystyle \operatorname {smootherstep} (x)=S_{2}(x)={\begin{cases}0,&x<0,\\6x^{5}-15x^{4}+10x^{3},&0\leq x\leq 1,\\1,&x>1.\\\end{cases}}}

Le successive funzioni smoothstep fino al sesto ordine sono rappresentate nell'intervallo [ 0 , 1 ] {\displaystyle [0,1]} {\displaystyle [0,1]} dai seguenti polinomi:

S 3 ⁡ ( x ) = − 20 x 7 + 70 x 6 − 84 x 5 + 35 x 4 ; S 4 ⁡ ( x ) = 70 x 9 − 315 x 8 + 540 x 7 − 420 x 6 + 126 x 5 ; S 5 ⁡ ( x ) = − 252 x 11 + 1386 x 10 − 3080 x 9 + 3465 x 8 − 1980 x 7 + 462 x 6 ; S 6 ⁡ ( x ) = 924 x 13 − 6006 x 12 + 16380 x 11 − 24024 x 10 + 20020 x 9 − 9009 x 8 + 1716 x 7 . {\displaystyle {\begin{aligned}\operatorname {S} _{3}(x)&=-20x^{7}+70x^{6}-84x^{5}+35x^{4};\\\operatorname {S} _{4}(x)&=70x^{9}-315x^{8}+540x^{7}-420x^{6}+126x^{5};\\\operatorname {S} _{5}(x)&=-252x^{11}+1386x^{10}-3080x^{9}+3465x^{8}-1980x^{7}+462x^{6};\\\operatorname {S} _{6}(x)&=924x^{13}-6006x^{12}+16380x^{11}-24024x^{10}+20020x^{9}-9009x^{8}+1716x^{7}.\\\end{aligned}}} {\displaystyle {\begin{aligned}\operatorname {S} _{3}(x)&=-20x^{7}+70x^{6}-84x^{5}+35x^{4};\\\operatorname {S} _{4}(x)&=70x^{9}-315x^{8}+540x^{7}-420x^{6}+126x^{5};\\\operatorname {S} _{5}(x)&=-252x^{11}+1386x^{10}-3080x^{9}+3465x^{8}-1980x^{7}+462x^{6};\\\operatorname {S} _{6}(x)&=924x^{13}-6006x^{12}+16380x^{11}-24024x^{10}+20020x^{9}-9009x^{8}+1716x^{7}.\\\end{aligned}}}

Note

[modifica | modifica wikitesto]
  1. ↑ Smoothstep at Microsoft Developer Network.
  2. ↑ GLSL Language Specification, Version 1.40.
  3. ↑ Unity game engine SmoothStep documentation.
  4. ↑ Hussein Hazimeh, Natalia Ponomareva, Petros Mol, Zhenyu Tan e Rahul Mazumder, The Tree Ensemble Layer: Differentiability meets Conditional Computation (PDF), International Conference on Machine Learning, PMLR, 2020. URL consultato il 30 gennaio 2022 (archiviato dall'url originale il 2 gennaio 2021).
  5. ↑ tfp.math.smootherstep | Tensorflow, su tensorflow.org (archiviato dall'url originale il 2 novembre 2021).
  6. ↑ SmootherStep | Wolfram Function Repository, su resources.wolframcloud.com (archiviato dall'url originale il 18 febbraio 2021).
  7. ↑ Ken Perlin, An Image Synthesizer, ACM SIGGRAPH, vol. 24, n. 3, 1985.
  8. ↑ Ken Perlin, Improving noise, ACM transactions on graphics, vol. 21, n. 3, luglio 2002, pp. 681-682.
  9. ↑ Ken Perlin, Texturing and Modeling, Third Edition: A Procedural Approach.
  Portale Informatica
  Portale Matematica
Estratto da "https://it.wikipedia.org/w/index.php?title=Smoothstep&oldid=147280140"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022