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, 1]</math>, caratterizzate da due parametri <math>a,</math> e <math>b</math> rappresentanti gli estremi di un intervallo <math>[a, b]</math> di valori nel [[dominio e codominio|dominio]]. Per ogni <math>x \in \mathbb{R}</math>, smoothstep mappa i valori <math>x \in (a, b)</math> all'intervallo <math>(0, 1)</math>, mentre tutti i valori <math>x \le a</math> sono mappati ain zero, e tutti i valori <math>x \ge b</math> sono mappati ain 1. Una funzione smoothstep normalizzata ha parametri <math>a = 0</math> e <math>b = 1</math>. Nel seguito, quando non differentemente specificato, si assume che la funzione smoothstep sia normalizzata.
 
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 un l'[[Polinomi di Hermite|polinomiointerpolazione di Hermite]]. La funzione smoothstep per antonomasia è quella di primo ordine <math>\operatorname{S}_1(x)</math>, definita da un polinomio di terzo grado:
:<math>
\operatorname{smoothstep}(x) = S_1(x) =
\begin{cases}
0 & x \le 0 \\
3x^2 - 2x^3 & 0 \le x \le 1 \\
1 & 1 \le x \\
\end{cases}
</math>
 
:<math>\operatorname{smoothstep}(x) = S_1\operatorname{S}_1(x) =\begin{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>
3x^2 - 2x^3, & 0 \le x \le 1, \\
1, & x > 1. \\
\end{cases}</math>
 
LaRestringendo il dominio in <math>[0, 1]</math>, la sua [[funzione inversa|inversa]] può essere espressa analiticamente come:
 
:<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>
:<math>\operatorname{S}_n(x) =\begin{cases}
0, & x < 0, \\
\begin{cases}
x^{n+1}, \sum_{k=0}^{n} &\binom{n+k}{k} \textbinom{if2n+1}{n-k} (-x)^{k} & 0 \le x \le 01, \\
1, & x > 1. \\
x^{n+1} \sum_{k=0}^{n} \binom{n+k}{k} \binom{2n+1}{n-k} (-x)^{k} & \text{se } 0 \le x \le 1 \\
\end{cases}</math>
1 & \text{if } 1 \le x \\
\end{cases}
</math>
 
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}
:<math>
0, & x < 0, \\
\operatorname{S}_0(x) =
x, & 0 &\le x \le 01, \\
\begin{cases}
01, & \text{if } x \le> 01. \\
\end{cases}</math>
x & \text{if } 0 \le x \le 1 \\
1 & \text{if } 1 \le x \\
\end{cases}
</math>
 
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}
:<math>
0, & x < 0, \\
\operatorname{smootherstep}(x) = S_2(x) =
6x^5 - 15x^4 + x10x^3, & \text{if } 0 \le x \le 1, \\
\begin{cases}
0 1, & x \le> 01. \\
\end{cases}</math>
6x^5 - 15x^4 + 10x^3 & 0 \le x \le 1 \\
1 & 1 \le x \\
\end{cases}
</math>
 
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}}