我想知道 Modelica 在实现可导函数(对 min(.) 函数具有连续导数)方面是否有任何优势?
\n对于 x\xe2\xa9\xbe0 的 min(.) 函数,我尝试了以下操作:
\n1/ f1(x,s) := Smooth(0, noEvent(min(x,s)))\n2/ f2(x,s) := Smooth(10, x*(1+(x/s)^60)^(-1/60) )\nRun Code Online (Sandbox Code Playgroud)\n实现如下所示:
\nfunction Limiter "Function Limiter"\n input Real x;\n input Real xc(final min=0);\n output Real y;\nprotected \n Real mx;\n parameter Real k=3;\n parameter Integer o(\n final min=1,\n max=30) = 30;\n final parameter Integer twoO=2*o;\nalgorithm \n mx := noEvent(min(x, k*xc));\n if noEvent(abs(xc)) >= 1 then\n y := mx*(1 + (mx/xc)^twoO)^(-1/twoO);\n else\n y := mx*xc*(xc^twoO + mx^twoO)^(-1/twoO);\n end if;\n …Run Code Online (Sandbox Code Playgroud)