# Finite Differencing

As the name implies, this approach uses finite differencing to compute $\frac{\Delta y}{\Delta b}$

This approach is quite labor intensive and is typically used only for small-scale
design sensitivity analysis (~ 20 variables). For a system with *N*b design
variables, this approach requires
$2({N}_{b}+1)$
simulations. Two simulations are needed to compute
$y\left(x\left(b+\Delta b\right),\dot{x}\left(b+\Delta b\right),b+\Delta b\right)\text{and}y\left(x\left(b\right),\dot{x}\left(b\right),b\right)$
. *N*b +1 simulations are needed to compute
$y\left(x\left(b+\Delta b\right),\dot{x}\left(b+\Delta b\right),b+\Delta b\right)\text{and}y\left(x\left(b\right),\dot{x}\left(b\right),b\right)$
$,k=\mathrm{1...}{N}_{b}$
. In other words, one for each design variable and
one single simulation for the current design.

When finite differencing, MotionSolve provides parallel processing as an option to compute the sensitivity matrix $\left[\frac{\Delta y}{\Delta b}\right]$ . See the example below for more details on how to use the parallel approach.

This means you can change the perturbation step by providing different value to Optimizer.fd_step. In summary, finite differencing is applicable only for small problems and there are some hard-to-solve issues regarding what the perturbations $\Delta b$ should be.