Approximates the function
y = if x ≥ 0 then k1*x*x else -k2*x*x, with k1, k2 > 0
in such a way that within the region -x_small ≤ x ≤ x_small, the function is described by two polynomials of third order (one in the region -x_small .. 0 and one within the region 0 .. x_small) such that
A typical screenshot for k1=1, k2=3 is shown in the next figure:
The (smooth, non-zero) derivative of the function with k1=1, k2=3 is shown in the next figure:
Literature
function regSquare2 extends Modelica.Icons.Function; input Real x "abscissa value"; input Real x_small(min = 0) = 0.01 "approximation of function for |x| <= x_small"; input Real k1(min = 0) = 1 "y = (if x>=0 then k1 else k2)*x*|x|"; input Real k2(min = 0) = 1 "y = (if x>=0 then k1 else k2)*x*|x|"; input Boolean use_yd0 = false "= true, if yd0 shall be used"; input Real yd0(min = 0) = 1 "Desired derivative at x=0: dy/dx = yd0"; output Real y "ordinate value"; end regSquare2;