私は、Modelica変数が別の変数の三角波であるモデルを作成しようとしています。 (X =時間;モデルがコンパイルので任意である)Modelicaで三角波関数を生成する問題
model test1
final constant Real pi=2*Modelica.Math.asin(1.0);
parameter Real b = 1;
parameter Real a = 1;
Real x,p,u;
equation
if sign(sin(x*pi/b))>=0 then
p=a*(x-b*floor(x/b));
else
p=a*(b-(x-b*floor(x/b)));
end if;
x=time;
u = floor(x/b);
end test1
の下に見ることができるように、結果は、奇妙である:まず、私は床()として以下の機能を試してみました次のステップフロアの前に
何とか0.005秒functio:中
ズームnは予期せぬ動作をし、次の値で終わる線形関数になります。
私はCEIL()関数を試みました。私は同じ問題が他の値で切り上げ()関数で発生実現まですべてが右に見えた(例えば、x = 13)
あなたができれば、私は感謝:この「グリッチ」はなぜ起こるか
- 助け、私は理解してそれが設計やバグによって意図的なものであれば?
- どうすれば修正できますか?
- 三角波関数を作成する方法はありますか?
P.私はあなたのシミュレーションでグリッチの説明を持っていない2人のギザギザ体」
私は別の問題があります:質問にあるように、関数p = func(x)が必要です。ここで、xは時間の任意の関数です。あなたのコードは一定の信号uに依存します。あなたはそれを変更できますか? – Foad