钟离踏然1 发表于 2015-5-7 08:58:30

AMEsim分段函数计算出错

1*(x<=1.792)+1-(1/PI*acos((1.795-x)/0.003)-1/(2*PI)*sin(2*acos((1.795-x)/0.003)))*(1.792<x&&x<1.795)+1/(2*PI)*(2*acos((x-1.795)/0.003)-sin(2*acos((x-1.795)/0.003)))*(1.795<x&&x<1.798)+0*(1.798<=x)这个分段函数怎么老把x=0带入acos函数式计算啊,仿真提示计算不出acos598.333,也就是把x=0,带入了acos((1.795-x)/0.003)这个函数式

file:///C:\Users\GLCSU\AppData\Roaming\Tencent\Users\1205401157\QQ\WinTemp\RichOle\WNOPOB6_


醉乐清风 发表于 2015-5-7 16:53:28

请钟离师弟尽快完成表达式设置后,做个规范化回复帖子,谢谢!

tianya413 发表于 2015-5-23 12:49:53

好高深,等大神解答

locopolo 发表于 2015-5-25 20:14:16

兄弟,acos()函数的定义域是[-1,1),先保证你括号里面的定义域在里面再说吧。
另外,如果你的x是状态变量(即参数模式下带#),可以直接赋初始值,使其不等于0,避免仿真t=0s时出错。

locopolo 发表于 2015-5-25 20:39:45

可以利用max和min函数实现acos在定义域内,上述函数等价于:
(x<=1.792)+1-(1.792<x&&x<1.795)*(1/PI*acos(max(-1,min(1.795-x,1))/0.003)-1/(2*PI)*sin(2*acos(max(-1,min(1.795-x,1))/0.003)))+(1.795<x&&x<1.798)*(1/(2*PI)*(2*acos(max(-1,min(1.795-x,1))/0.003)-sin(2*acos(max(-1,min(1.795-x,1))/0.003))))
页: [1]
查看完整版本: AMEsim分段函数计算出错