Neka je zadana funkcija $n$ promjenljivih $f(x_1,\ldots,x_n)$ definisana i diferencijabilna po svim argumenima u nekoj oblasti. Pretpostavimo da nisu poznate tačne vrijednosti promjenljivih $x_1,\ldots,x_n,$ nego umjesto njih znamo približne vrijednosti $x^{\star}_1,\ldots,x^{\star}_n,$ takođe smatrajmo da znamo i vrijednost greške približnog broja $x_i-x^{\star}_i$ i apsolutne greške $\triangle x^{\star}=\left|x_i-x^{\star}_i\right|,\:i=1,\ldots,n.$
Potrebno je izračunati vrijednost apsolutne greške funkcije $f$ u tački $x^{\star}=(x^{\star}_1,\ldots,x^{\star}_n),$ gdje je $x^{\star}_i,$ iz relacije $x_i=x_i^{\star}\pm\triangle x_i^{\star},\,i=1,\ldots,n.$
Na osnovu Lagrangeove teoreme o srednjoj vrijednosti vrijedi $$ \triangle f^{\star}=\left|f(x_1,\ldots,x_n)-f(x^{\star}_1,\ldots,x^{\star}_n)\right| =\left|\sum_{i=1}^{n}{\frac{\partial f\left(\tilde{x}_1,\ldots,\tilde{x}_n \right)}{\partial x_i}}(x_i-x^{\star}_i)\right|, $$ gdje je $\tilde{x}_i$ između $x_i$ i $x^{\star}_i.$ Dalje vrijedi $$ \left|\sum_{i=1}^{n}{\frac{\partial f\left(\tilde{x}_1,\ldots,\tilde{x}_n \right)}{\partial x_i}}(x_i-x^{\star}_i) \right| \leqslant \sum_{i=1}^{n}{\left|\frac{\partial f\left(\tilde{x}_1,\ldots,\tilde{x}_n \right)}{\partial x_i}\right|}\left|x_i-x^{\star}_i\right| =\sum_{i=1}^{n}{\left|\frac{\partial f\left(\tilde{x}_1,\ldots,\tilde{x}_n \right)}{\partial x_i}\right|}\triangle x^{\star}_i $$ Pošto vrijednosti $\tilde{x}_i$ nisu poznate, umjesto $\frac{\partial f\left(\tilde{x}_1,\ldots,\tilde{x}_n \right)}{\partial x_i},$ koristićemo $\frac{\partial f\left(x^{\star}_1,\ldots,x^{\star}_n \right)}{\partial x_i},$ pa dobijamo formulu za apsolutnu grešku vrijednosti funkcije $$ \triangle f^{\star}\approx\sum_{i=1}^{n}{\left|\frac{\partial f\left(x^{\star}_1,\ldots,x^{\star}_n \right)}{\partial x_i}\right|}\triangle x^{\star}_i,(\star) $$ a relativnu grešku približne vrijednosti funkcije je sada $$ \delta f^{\star}\approx\frac{\triangle f^{\star}}{\left| f^{\star}\right|},(\star\star) $$ gdje je $f^{\star}=f(x^{\star}_1,\ldots,x^{\star}_n).$
import numpy as np
import sympy #as sym
r, pi=sympy.symbols('r, pi')
deltar=0.02
deltapi=0.00159265
izvodr=sympy.diff(zapremina,r)
izvodpi=sympy.diff(zapremina,pi)
zapremina=(4/3)*r**3*pi
deltav=abs(izvodr)*deltar+abs(izvodpi)*deltapi
deltaV=deltav.subs([(r,10.3),(pi,3.14)])
zap=zapremina.subs([(r,10.3),(pi,3.14)])
print('Apsolutna greška je %f,'%deltaV, ' približna vrijednost zapremine je %f.'%zap)
Apsolutna greška je 28.970250, približna vrijednost zapremine je 4574.883707.
Vrijedi $$V=\frac{4}{3}\left( r^3\right)^{\star}(\pi)^{\star}\pm \Delta V^{\star}=4574.88\pm 28.97.$$ Kako je $\Delta V^{\star}\approx 28.97=0.2897\cdot 10^{2}\leqslant \frac{1}{2}\cdot 10^{3-2+1},$ sigurne su samo dvije cifre pa možemo zaokružiti $V^{\star}\approx 4600.$ I na kraju relativna greška je $$\delta V=\frac{\Delta V^{\star}}{|V^{\star}|}\approx 0.006332\approx 0.6\%.$$
Rješenje. Vrijednosti uglova iz stepena u radijane pretvaraju se po formuli $\psi_{rad}=\frac{\psi_{step}\cdot\pi}{180}.$ Dužinu stranice $c$ računamo po formuli
$$c=\sqrt{a^2+b^2-2ab\cos \gamma}.$$Vrijedi \begin{align*} &a^{\star}= 10.2,\, \triangle a^{\star}=0.05,\, b^{\star}=7.5, \, \triangle b^{\star}=0.05,\, \gamma^{\star}=\frac{31.3\cdot \pi}{180}, \, \triangle\gamma^{\star}=\frac{0.05\cdot\pi}{180} \\ &\frac{\partial c(a^{\star},b^{\star}, \gamma^{\star})}{\partial a} =\frac{a^{\star}-b^{\star}\cos\gamma^{\star}}{\sqrt{(a^{\star})^2+(b^{\star})^2-2a^{\star}b^{\star}\cos\gamma^{\star}}}\\ &\frac{\partial c(a^{\star},b^{\star}, \gamma^{\star})}{\partial b} =\frac{b^{\star}-a^{\star}\cos\gamma^{\star}}{\sqrt{(a^{\star})^2+(b^{\star})^2-2a^{\star}b^{\star}\cos\gamma^{\star}}}\\ &\frac{\partial c(a^{\star},b^{\star}, \gamma^{\star})}{\partial \gamma} =\frac{a^{\star}b^{\star}\sin\gamma^{\star}}{\sqrt{(a^{\star})^2+(b^{\star})^2-2a^{\star}b^{\star}\cos\gamma^{\star}}}\\ &\triangle c^{\star}=\left|\frac{\partial c(a^{\star},b^{\star}, \gamma^{\star})}{\partial a} \right|\triangle a^{\star} +\left|\frac{\partial c(a^{\star},b^{\star}, \gamma^{\star})}{\partial b} \right|\triangle b^{\star} +\left|\frac{\partial c(a^{\star},b^{\star}, \gamma^{\star})}{\partial \gamma} \right|\triangle \gamma^{\star} \end{align*}
import numpy as np
from sympy import * #drugi način učitavanja biblioteke
a,b,gama=symbols('a,b,gama')
stranicaC=sqrt(a**2+b**2-2*a*b*cos(gama))
deltaA=.05;deltaB=.05; deltaGama=(.05*np.pi)/180;
izvodA=diff(stranicaC,a)
izvodB=diff(stranicaC,b)
izvodGama=diff(stranicaC,gama)
deltac=abs(izvodA)*0.05+abs(izvodB)*deltaB+abs(izvodGama)*deltaGama
deltaC=deltac.subs([(a,10.2),(b,7.5),(gama,(31.3*np.pi/180))])
c=stranicaC.subs([(a,10.2),(b,7.5),(gama,(31.3*np.pi/180))])
print('Apsolutna greška je %f,'%deltaC, ' približna dužina stranice c je %f.'%c)
Apsolutna greška je 0.052428, približna dužina stranice c je 5.436708.
Vrijedi $\Delta c^{\star}\approx0.052428=0.052428\cdot 10^{0}\leqslant 0.5\leqslant 0.5\cdot 10^{0} =0.5\cdot 10^{0-1+1},$ dakle sigurna je samo prva cifra, pa je možemo zaokružiti $c^{\star}\approx 5.$ Relativna greška je $$\delta c^{\star}\approx \frac{\Delta c^{\star}}{|c^{\star}|}\approx 0.0096433\approx1\%.$$
Inverzni problem greške je određivanje granice dopustivih vrijednosti grešaka argumenata za koje greška funkcije ne prelazi unaprijed zadanu vrijednost. U slučaju funkcija jedne realne promjenljive, ako je ta funkcija diferencijabilna vrijedi
\begin{equation}
f(x)=f(x^{\star})+f'(\tilde{x})(x-x^{\star}),
\label{uvod24}
\end{equation}
gdje je $\tilde{x}$ između $x$ i $x^{\star}.$ Sada za $f'(\tilde{x})\neq 0,$ vrijedi
\begin{equation}
x-x^{\star}=\frac{f(x)- f(x^{\star})}{f'\left( \tilde{x}\right) }.
\label{uvod25}
\end{equation}
Kako ne znamo $\tilde{x},$ to je
\begin{equation}
\triangle x^{\star}\approx\frac{\triangle f^{\star}}{\left|f'\left(x^{\star}\right) \right|},\:f'\left(x^{\star}\right) \neq 0.
\label{uvod26}
\end{equation}
Ako je $f$ funkcija od $n$ argumenata, tj. $f(x_1,\ldots,x_n),$ onda se zadavanjem greške funkcije zadaje samo jedna veza između $n$ nepoznatih $\triangle x^{\star}_1,\ldots,\triangle x^{\star}_n.$ Ako je poznata apsolutna greška vrijednosti funkcije $\triangle f^{\star}$, dodatni uslovi koje apsolutne greške argumenata treba da zadovoljavaju obično se definišu na jedan od sljedećih načina
(1) Princip jednakih uticaja (doprinosa, efekata)
Neka vrijedi
$$\left| \frac{\partial f(x^{\star}_1,\ldots,x^{\star}_n)}{\partial x_1}\right|\triangle x^{\star}_1=
\cdots=\left|\frac{\partial f(x^{\star}_1,\ldots,x^{\star}_n)}{\partial x_n}\right|\triangle x^{\star}_n,$$ te zbog $\triangle f^{\star}\approx\sum_{i=1}^{n}{\left|\frac{\partial f\left(x^{\star}_1,\ldots,x^{\star}_n \right)}{\partial x_i}\right|}\triangle x^{\star}_i,$ vrijedi
$$\triangle f^{\star}\approx n\left|\frac{\partial f(x^{\star}_1,\ldots,x^{\star}_n)}{\partial x_k} \right|\triangle x^{\star}_k,$$ i na kraju
$$
\triangle x^{\star}_k\approx\frac{\triangle f^{\star}}{n\left|\frac{\partial f(x^{\star}_1,\ldots,x^{\star}_n)}{\partial x_k} \right|},\,k=1,\ldots,n.
$$
(2) Princip jednakih apsolutnih grešaka
Neka je sada
$$\triangle x^{\star}_1=\cdots=\triangle x^{\star}_n,$$ ponovo zbog $\triangle f^{\star}\approx\sum_{i=1}^{n}{\left|\frac{\partial f\left(x^{\star}_1,\ldots,x^{\star}_n \right)}{\partial x_i}\right|}\triangle x^{\star}_i,$ imamo
$$
\triangle f^{\star}\approx\triangle x^{\star}_k\sum_{j=1}^{n}{\left|\frac{\partial f(x^{\star}_1,
\ldots,x^{\star}_n)}{\partial x_j} \right|},
$$ te dobijamo
$$
\triangle x^{\star}_k\approx\frac{\triangle f^{\star}}{\displaystyle\sum_{j=1}^{n}{\left|\frac{\partial f(x^{\star}_1,\ldots,x^{\star}_n)}{\partial x_j} \right|}},\,k=1,\ldots,n.
$$
(3) Princip jednakih relativnih grešaka
Neka je sada $$\delta x^{\star}_1=\cdots=\delta x^{\star}_n,$$ te ponovo zbog $\triangle f^{\star}\approx\sum_{i=1}^{n}{\left|\frac{\partial f\left(x^{\star}_1,\ldots,x^{\star}_n \right)}{\partial x_i}\right|}\triangle x^{\star}_i,$ imamo
pa je \begin{equation*} \triangle x^{\star}_k\approx\frac{\triangle f^{\star} \left|x^{\star}_k \right|}{\displaystyle\sum_{j=1}^{n}{\left|x^{\star}_j\frac{\partial f(x^{\star}_1,\ldots,x^{\star}_n)}{\partial x_j} \right|}},\,k=1,\ldots,n. \label{uvod29} \end{equation*}
Rješenje. Površinu date šestostrane piramide računamo po formuli $$P=B+O=\frac{3\sqrt{3}a^2}{2}+3ah.$$ (1) Princip jednakih uticaja
Vrijednost najveće dopuštene apsolutne greške argumenata računamo po formuli $$\triangle x^{\star}_k=\frac{\triangle f^{\star}}{n\left|\frac{\partial f{(x^{\star}_1,\ldots,x^{\star}_n)}}{\partial x_k} \right|},\,k=1,\ldots,n.$$ U ovom slučaju to je
\begin{align*} \triangle a^{\star}&\approx \frac{\triangle P^{\star}}{2\left| \frac{\partial P(a^{\star},h^{\star})} {\partial a}\right|},\\ \triangle h^{\star}&\approx \frac{\triangle P^{\star}}{2\left| \frac{\partial P(a^{\star},h^{\star})} {\partial h}\right|},\\ \frac{\partial P(a^{\star},h^{\star})}{\partial a}&=3\sqrt{3}a+3h,\\ \frac{\partial P(a^{\star},h^{\star})}{\partial h}&=3a. \end{align*}import sympy
import numpy as np
a,h=sympy.symbols('a,h')
deltaP=.5
povrsina=1.5*np.sqrt(3)*a**2+3*a*h
izvoda=sympy.diff(povrsina,a)
izvodh=sympy.diff(povrsina,h)
deltaa=deltaP/(2*(abs( izvoda.subs([(a,3.5),(h,7.2)]))))
deltah=deltaP/(2*(abs( izvodh.subs([(a,3.5),(h,7.2)]))))
print('Najveća dopuštena vrijednost apsolutne greške stranice a je %1.7f,'%deltaa,
'\nnajveća dopuštena vrijednost apsolutne greške visine h je %1.7f.'%deltah)
Najveća dopuštena vrijednost apsolutne greške stranice a je 0.0062835, najveća dopuštena vrijednost apsolutne greške visine h je 0.0238095.
(2) Princip jednakih apsolutnih grešaka
Vrijednost najveće dopuštene apsolutne greške argumenata računamo po $$\triangle x^{\star}_k =\frac{\triangle f^{\star}}{\sum_{j=1}^{n}\left|\frac{\partial f(x^{\star}_1,\ldots,x^{\star}_n)}{\partial x_k} \right| },\,k=1,\ldots,n,$$ Pa je $$\triangle a^{\star}=\triangle h^{\star}=\frac{\triangle P^{\star}} {\left|\frac{\partial P(a^{\star}, h^{\star})}{\partial a} \right| +\left|\frac{\partial P(a^{\star}, h^{\star})}{\partial h} \right|}.$$
import sympy
import numpy as np
a,h =sympy.symbols('a,h')
deltaP=.5
povrsina=1.5*np.sqrt(3)*a**2+3*a*h
izvoda=sympy.diff(povrsina,a)
izvodh=sympy.diff(povrsina,h)
deltaah=deltaP/(abs(izvoda.subs([(a,3.5),(h,7.2)]))+abs(izvodh.subs([(a,3.5),(h,7.2)])))
print('Najveća dopuštena vrijednost apsolutne greške argumenata a i h je %1.7f.'%deltaah)
Najveća dopuštena vrijednost apsolutne greške argumenata a i h je 0.0099430.
(3) Princip jednakih relativnh grešaka
Vrijednost najveće dopuštene apsolutne greške argumenata računamo po formuli
$$\triangle x^{\star}_k=\frac{\triangle f^{\star}|x^{\star}_k|} {\sum_{j=1}^{n}{\left|x^{\star}_j \frac{\partial f(x^{\star}_1,\ldots,x^{\star}_n )}{\partial x_j} \right|}}, \,k=1,\ldots,n, $$u ovom slučaju
\begin{align}
\triangle a^{\star}&\approx\frac{\triangle P^{\star}|a^{\star}|}
{\left|a^{\star}\frac{\partial P(a^{\star},h^{\star})}{\partial a} \right|
+\left|h^{\star}\frac{\partial P(a^{\star},h^{\star})}{\partial h} \right|},\\
\triangle h^{\star}&\approx\frac{\triangle P^{\star}|h^{\star}|}
{\left|a^{\star}\frac{\partial P(a^{\star},h^{\star})}{\partial a} \right|
+\left|h^{\star}\frac{\partial P(a^{\star},h^{\star})}{\partial h} \right|} .
\end{align}
import sympy
import numpy as np
a,h=sympy.symbols('a,h')
deltaP=.5;
povrsina=1.5*np.sqrt(3)*a**2+3*a*h
izvoda=sympy.diff(povrsina,a)
izvodh=sympy.diff(povrsina,h)
deltaa=(deltaP*a)/(abs(a*izvoda)+abs(h*izvodh))
deltah=(deltaP*h)/(abs(a*izvoda)+abs(h*izvodh))
print('Najveća dopuštena vrijednost apsolutne greške argumenta a je %1.7f,'%deltaa.subs([(a,3.5),(h,7.2)]),
'\nnajveća dopuštena vrijednost apsolutne greške argumenta h je %1.7f'%deltah.subs([(a,3.5),(h,7.2)]))
Najveća dopuštena vrijednost apsolutne greške argumenta a je 0.0081451, najveća dopuštena vrijednost apsolutne greške argumenta h je 0.0167557
[Bah77] N.S. Bahvalov, Numerical Methods: Analysis, Algebra, Ordinary Differential Equations, MIR, USSR, 1977. ISBN: 9780714712079.
[Sci15] R. Scitovski, Numerička matematika, Sveučilišta Josipa Jurja Strossmayera u Osijeku – Odjel za matematiku, R.Hrvatska, 2015. ISBN: 978-953-6931-79-8.