请教一个关于非周期型三角波方程构建问题
mathcad吧
全部回复
仅看楼主
level 3
karlandry 楼主
大家好!
我在计算一个电路,里面涉及到一个特殊函数的构建,它是一个非周期性的三角波,三角波的外围为一个正弦波,而每一段三角波的一半所对应的点连起来也是三角波。
对于固定周期的三角波,使用mod函数可以比较方便的表达,可是非周期性的,苦思冥想找不到方向,请各位给点建议。
对于下面图片中的Ton是一个时间常数,Ton对应于三角波上升这一段时间,而三角波下降这一段所对应的宽度定义为Toff,Toff是变量,而这个变量是符合sin()规律的。
非常感谢
2015年02月12日 15点02分 1
level 12
你的意思是要画出你给出的这个图。图中的三角波中每个波形不是对称的,每个波峰左侧的斜线的斜率是一定的,右侧斜线的斜率与sin(x)有关,是周期性的扩张收紧,也就是说三角波的频率有周期的,频率是sin(x)的函数。但是你又说这个三角波是非周期性的,到底有没有周期性呢?我从下面的方形波上看,是有周期的呀。如果没有周期性,是不是就是指我用rnd()来做周期也可以呢?
另外你的这个图的三角波的波峰的包络是sin(x)的函数,你是这个意思么?但我从你的图里看,sin(x)的特征不明显,你只给出了该三角波大于0的状态,是不是这个三角波函数只能大于0呢?也就是说它是|sin(x)|的函数?
有些问题咱们得有互动的,你可千万别把问题“啪”的一下子往这里一甩就坐等答案哈。
2015年02月12日 16点02分 2
非常感谢吧主您的热情答复,我今天整理一下问题,以mathcad附件的形式把这个问题详细描述出来。请稍等啊!多谢
2015年02月13日 02点02分
您好,朱老! 请看我下面的回复。谢谢!
2015年02月13日 08点02分
level 3
karlandry 楼主
2015年02月13日 08点02分 3
大佬,刚学习mc,请问如何用mod函数表示正常的周期三角载波呢?谢不吝赐教!
2017年12月31日 05点12分
level 12
嗯,我感觉这里就是构造Ton(t)有些绕脑子。至于绘制三角波,不必考虑斜率的,那样等于把问题搞复杂了,直接构造向量就可以了,我说一个粗略的方法:
至于你在1楼贴的那个图,下面的那个方波显示的间隔,都可以用这个方法来做出来。别把问题想得太复杂了。
2015年02月14日 16点02分 5
level 12
就像这样:
构造Ton(t)得动些脑子,可能要用到数学归纳法了。
2015年02月14日 16点02分 6
你好,我这个问题搞定了。 我把所有波峰和波谷的时间和值组成二维数组,然后通过线性插值做出了函数。 再次表示感谢。我把结果放在下面,您有空指点一下。多谢!
2015年02月24日 08点02分
level 12
嗯,构造Ton()也不是很难,规律很明显,类似于Ton(x)=x*ton+sum(toff(i),i=0..x-1)。
你后面的那一大堆式子都可以用一个函数来表示,用手敲出这么长的表达式你不觉得很抽筋么?
“用MC最简单的思路就是抓住所有的可能的机会去构造函数”,但我感觉你要理解这句话可能要花一些时间和力气,因为在教科书上很多时候都是把能够做成函数的东西当做变量给出来的。
这个向量里y的坐标比较容易控制,不是0就是曲线上的点;x的坐标貌似是处于0~1之间的,怎么分布的你得自己找规律,只要有规律,就能够用函数表示出来,剩下的怎么做参照上面我给的例子就可以了。
我提示就到此,你没有上传源文件(你要仔细看吧规,上面写的很明白,怎么上传文件),我也懒得敲键盘录入那一大堆虚张声势的东西哈。
2015年02月14日 16点02分 7
非常感谢,您辛苦了。 我先仔细看一下,理解您的思路。 本来打算上传原文件的,可是被公司网络限制了。 非常感谢!
2015年02月15日 01点02分
level 3
karlandry 楼主
朱老,函数插值完成后,积分有点小问题,把t从0积分到0.01会有不收敛的问题,改成0.0099就ok了,这个三角波半波周期是0.01.您有碰到过类似问题吗?谢谢!
2015年02月24日 09点02分 8
level 12
是不是前面你已经定义了t?上传工作表。
2015年02月24日 09点02分 9
没有定义过。 这个地方好像只能上传照片,上传mathcad文档是不是需要重新开贴了?
2015年02月24日 09点02分
回复 karlandry :看置顶吧规。
2015年02月25日 01点02分
回复
���Ͻ���
:http://pan.baidu.com/s/1dD6IB2T 您好,朱老,我已经把文件放到共享盘了,可以下载了。 到最后一部出现了问题,平均值积分是ok的,但是有效值计算就不收敛,很奇怪。请帮忙看一下,非常感谢!
2015年02月25日 14点02分
level 3
karlandry 楼主
2015年02月24日 09点02分 10
level 12
你做的非常棒!MC吧欢迎你哈,@karlandry
你只要在I_ind_ave的上方输入:  TOL := 0.013   ,就没问题了。
TOL是MC的内置变量,收敛公差,对积分运算有影响,当某值收敛到小于TOL时,MC判断为收敛,即可得到积分值。MC的积分计算本身也是在插值,然后求和,插值步长ε,如下:
对于振荡很大的函数,比如说你的这个锯齿波,振频很大,振幅也很大,插值随着函数振荡,同时会产生误差,当这个误差很大时,大于收敛公差时,计算结果就不会判断为收敛,会一直算下去,为了避免死循环,MC给出了防止这种情况发生的办法,就是TOL值。
当你需要很高的求解精度时,可以让TOL变小,默认为0.001;在你这种情况需要把TOL设大,以使振荡的插值函数及时判断为收敛,此时求解精度会差一些,聊胜于无。
MC计算积分所用的插值步长ε是积分运算器的一部分,没办法自己设置,貌似MC的不同版本其插值步长ε是不一样的,总的目的是为了提高数值积分运算的稳定性和准确性。
不知道其他M类软件是怎么处理数值积分的。
2015年02月25日 20点02分 11
非常感谢哈,涨知识了。 我之前也看了一下论坛里面老的帖子,该国TOL这个变量,只是不太熟悉它的作用。 您讲解的非常详细,多谢!
2015年02月26日 03点02分
大佬,长知识了
2025年05月23日 15点05分
level 2
大佬,刚学习mc,请问如何用mod函数表示正常的周期三角载波呢?谢不吝赐教!
2017年12月31日 05点12分 12
这样用mod(t,T),就是t对T取余
2025年05月23日 15点05分
1