Smoothstep: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m smistamento lavoro sporco e fix vari |
Recupero di 1 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.9.5 |
||
(10 versioni intermedie di 3 utenti non mostrate) | |||
Riga 1:
[[File:Smoothstep and Smootherstep.svg|thumb|Grafico delle funzioni di primo ordine (''smoothstep'') e secondo ordine (''smootherstep'') normalizzate nell'intervallo <math>[0, 1]</math>]]
'''Smoothstep''' è una famiglia di [[funzione sigmoidea|funzioni sigmoidee]] usate per l'[[interpolazione]] hermitiana e per il ''clamping'' in [[computer grafica]],<ref>[http://msdn.microsoft.com/en-us/library/bb509658(VS.85).aspx Smoothstep at Microsoft Developer Network].</ref><ref>[http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.40.05.pdf GLSL Language Specification, Version 1.40].</ref> [[motore grafico|motori grafici]],<ref>[http://unity3d.com/support/documentation/ScriptReference/Mathf.SmoothStep.html Unity game engine SmoothStep documentation].</ref> e [[apprendimento automatico]].<ref>{{cita conferenza |url=https://proceedings.icml.cc/static/paper_files/icml/2020/2974-Paper.pdf |titolo=The Tree Ensemble Layer: Differentiability meets Conditional Computation |cognome1=Hazimeh |nome1=Hussein |cognome2=Ponomareva |nome2=Natalia |cognome3=Mol |nome3=Petros |cognome4=Tan |nome4=Zhenyu |cognome5=Mazumder |nome5=Rahul |data=2020 |editore=PMLR |conferenza=International Conference on Machine Learning |accesso=30 gennaio 2022 |dataarchivio=2 gennaio 2021 |urlarchivio=https://web.archive.org/web/20210102091041/https://proceedings.icml.cc/static/paper_files/icml/2020/2974-Paper.pdf |urlmorto=sì }}</ref>
Le smoothstep sono funzioni di una variabile reale a valori in <math>[0,
La funzione smoothstep di ordine <math>n</math> interpola i valori tra 0 e 1 in modo tale che:
Riga 9:
* quando la variabile è all'estremo destro dell'intervallo, l'immagine della funzione sia 1;
* le derivate (fino all'ordine <math>n</math>) della funzione presso gli estremi destro e sinistro abbiano valore zero.
Una funzione polinomiale che soddisfi tali vincoli può essere definita tramite
\operatorname{smoothstep}(x) = S_1(x) =▼
0 & x \le 0 \\▼
3x^2 - 2x^3 & 0 \le x \le 1 \\▼
\end{cases}▼
La sua [[funzione inversa|inversa]] può essere espressa analiticamente come:▼
0, & x < 0, \\
:<math>\operatorname{S}_1^{-1}(x) = \frac{1}{2} - \sin\left(\frac{\sin^{-1}(1-2x)}{3}\right)</math>▼
1, & x > 1. \\
▲\end{cases}</math>
▲
▲:<math>\operatorname{S}_1^{-1}(x) = \frac{1}{2} - \sin\left(\frac{\sin^{-1}(1-2x)}{3}\right).</math>
La funzione smoothstep di ordine <math>n</math> è rappresentata nella porzione centrale da un polinomio di Hermite di grado <math>2n + 1</math> e ha forma:
:<math>\operatorname{S}_n(x) =\begin{cases}
0, & x < 0, \\
x^{n+1},
1, & x > 1. \\
\end{cases}</math>▼
▲\end{cases}
La funzione smoothstep di ordine zero <math>\operatorname{S}_0(x)</math> è equivalente alla funzione identità troncata (nota in alcuni contesti, ad esempio in [[computer grafica]], come funzione ''clamp''):
:<math>\operatorname{S}_0(x) =\begin{cases}▼
0, & x < 0, \\
▲\operatorname{S}_0(x) =
\end{cases}</math>▼
x & \text{if } 0 \le x \le 1 \\▼
▲\end{cases}
La funzione smoothstep di secondo ordine <math>\operatorname{S}_2(x)</math>, anche nota come ''smootherstep''<ref>{{cita web|url=https://www.tensorflow.org/probability/api_docs/python/tfp/math/smootherstep|titolo=tfp.math.smootherstep {{!}} Tensorflow|urlarchivio=https://web.archive.org/web/20211102221126/https://www.tensorflow.org/probability/api_docs/python/tfp/math/smootherstep}}</ref><ref>{{cita web|url=https://resources.wolframcloud.com/FunctionRepository/resources/SmootherStep/|titolo=SmootherStep {{!}} Wolfram Function Repository|urlarchivio=https://web.archive.org/web/20210218124227/https://resources.wolframcloud.com/FunctionRepository/resources/SmootherStep/}}</ref> e popolarizzata in computer grafica da [[Ken Perlin]],<ref>{{cita pubblicazione|cognome=Perlin|nome=Ken|anno=1985|titolo=An Image Synthesizer|conferenza=ACM SIGGRAPH|volume=24|numero=3}}</ref><ref>{{cita pubblicazione|cognome=Perlin|nome=Ken|anno=2002|mese=luglio|titolo=Improving noise|conferenza=ACM transactions on graphics|volume=21|numero=3|pp=681-682}}</ref><ref>{{cita libro|titolo=Texturing and Modeling, Third Edition: A Procedural Approach|nome=Ken|cognome=Perlin}}</ref> ha forma:
:<math>\operatorname{smootherstep}(x) = S_2(x) =\begin{cases}▼
0, & x < 0, \\
▲\operatorname{smootherstep}(x) = S_2(x) =
\end{cases}</math>▼
▲\end{cases}
Le successive funzioni smoothstep fino al sesto ordine sono rappresentate nell'intervallo <math>[0,1]</math> dai seguenti polinomi:
:<math>\begin{align}
\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{align}</math>
Line 65 ⟶ 56:
== Note ==
<references />
{{Portale|informatica|matematica}}
|