任意跨连续梁的影响线和内力计算,计算速度慢,望各位给点意见!
mathcad吧
全部回复
仅看楼主
level 7
自己编写了一个任意跨连续梁的影响线和内力计算,怎奈学艺不精,理论成功的时候,现实不太理想,内力图绘图速度太慢,烦请各位提些改进的意见。
另外,我也看到过excel版的任意跨连续梁影响线计算,那个excel表格没有进一步计算结构内力,以我对excel表格的计算方法研究,发现它运用的方法和我mathcad的方法不同,但不知是excel本来就计算效率高,还是我的方法不好,mathcad的计算速度总是赶不上excel。例如我给的图中,计算弯矩、剪力、位移,总共花了31min,然后绘制内力图、位移图时,又用了33min,严重影响应用。
更可恶的是,荷载稍微复杂一些,有时候值算不出来,这肯定是mathcad的计算问题。
望各位给点建议。
2017年02月13日 04点02分 1
level 15
MC是解释语言,它比编译语言慢。
要缩短计算时间,方法之一,就是减少重复计算量。不要生硬照搬手册和规范中的计算式。
下面的例子仅供参考。不一定正确,是否能减少计算时间,还得在实践中验证。
2017年02月13日 07点02分 2
level 12
上传你的工作表,我试试看。
2017年02月13日 09点02分 3
level 12
没看明白你的excel是怎么引用的。最好是你上传你的工作表,属于excel的数据你给转移到MC里面来,否则可能引用不成功。我感觉你这里可能慢的地方是两个循环积分计算,那是可以优化的。
2017年02月13日 09点02分 4
level 7
不够6级,上传不了源文件,所以就分享云连接。
链接:[无效] http://pan.baidu.com/s/1slEVjop 密码:1s06
2017年02月13日 10点02分 5
level 7
另外,贴一下自己的版本:吧主置顶帖里的M045好像。电脑配置:i7-4790,8核,内存8G。
2017年02月13日 10点02分 6
level 7
@月城公寓寓公,按照月老的建议,进行了改进,有一定的改善,计算值的时间由31min减为了22.6min,绘图的时间由33min降为了25.6min。快了不少的!在此感谢!不过,还是没达到自己的理想值。
2017年02月13日 11点02分 7
level 7
另外,自我修正一下,1、中单跨简支梁的挠度影响线计算部分,积分式中,分母I(x)应改为I(y)!
2017年02月13日 11点02分 8
level 13
楼主的精神值的肯定,手算可以更好的理解规范和计算过程,理解后还是交个专业软件计算吧,随便一个有限元软件分分钟搞定。我们单位用这个计算配筋比较多,内力全部有限元解决
2017年02月13日 14点02分 9
level 12
嗯,有时间我试试你的工作表,初步看,里面有些式子定义的是有些重复和冗余。可以理解你是为了写计算书才这么弄的,实际上完全可以在文字中仅用布尔等式来定义你的量,而所有的数学计算相关的量都放在隐藏的区域里,效果是一样的,但更方便调试程序。
2017年02月14日 00点02分 10
level 12
你这个式子的定义有错误:
2017年02月14日 01点02分 11
又验证了下,没错误。且所有结果跟有限元对比过,仅有个别精度不同,误差均在2%以内吧。后面我按照剑客的意见再改改,然后交给剑客过目。
2017年02月14日 03点02分
level 12
后面有不少定义错误的式子,完全可以简化。我建议你先不要去考虑怎么写计算书,而是从基本数学上解决这个问题,MC不是像你这么用的。我现在没有时间用在帮你简化你的工作表上,你自己来做吧。
怪不得以前有吧友说用了十几年的MC,结果还是不会用——被放屁教程或者白痴老师误导了。
2017年02月14日 01点02分 12
level 12
在积分的时候发生了多次的布尔判断,造成了整个程序运行效率下降了。建议你使用:
TOL:=0.1
试试看,要快得多,因为把积分步长从0.00001放大到了0.1,布尔判断的量减少了10000倍。如果你对结果的精确度要求不高的话,就这么做。
2017年02月14日 03点02分 13
嗯,我刚发现,你已经修改了TOL的值……
2017年02月14日 03点02分
level 15
我对具体的算式不了解。
从技巧方面来说,有下面几点:
1.两个常用的变量,应在使用前先计算出来赋给一个变量,后续计算就引用已知的变量。
向量Ls和变量SL先算出来。
2.计算所用的时间主要耗费在挠度上了。而挠度计算中,主要是积分式用时太多。是否可以换一个算式。
3.既然您已经用函数向量化符号专门计算了弯矩等三个函数的系列值,那么,就该把这三个系列值赋值给三个向量,在图像中直接用这三个向量的值。而不能再用函数加向量化符号。这样等于又重复计算了各一次共三次。注意下图的Mx、Qx和Wx。
2017年02月14日 03点02分 14
level 12
你这里最麻烦的并不是for循环里有积分,而是每一次计算定积分的时候都会涉及到大量的布尔判断,如果能够精简这些判断的话就好了。比如说将η、ξ、ω的分段函数改写为2个不分段的函数组,然后在后面的程序板里仅使用一次判断选择使用哪个函数来进行后面的计算,我想这样可能会更好一些。
我没有试,你试试看。
2017年02月14日 03点02分 15
这条路子也不可行…… :(
2017年02月14日 04点02分
1 2 尾页