找回密码
 注册
Simdroid-非首页
查看: 129|回复: 3

[数值计算] mathematica 时程分析法的数值模拟

[复制链接]
发表于 2014-7-14 21:23:15 | 显示全部楼层 |阅读模式 来自 湖北武汉
小弟初学mathematica,仿照书上的例题(建筑抗震设计 第三版 郭继武 P83)进行时程分析法的数值模拟。准备以阪神大地震的数据来算一个例子,结果发现迭代效率太低,不知道怎么能改进一下?因为记录的地震数据有2400个,每隔0.02s测一次,算前10个已经用了很长时间...
  1. Clear["Global`*"](*采用时程分析法中的线性加速度法进行数值模拟*)
  2. data = Import[
  3.   "E:\\of studies\\Mathematica\\Kobe wave1.xls", {"xls", "Data",
  4.    1}];(*阪神地震时的地面加速度,每隔0.02s记录一次*)
  5. acc = -data[[All, 2]];(*地面加速度*)
  6. m = 0.3;(*质量,kN.sec^2/mm*)
  7. k = 200.0;(*刚度,kN/mm*)
  8. \[Omega] = Sqrt[k/m];(*自振频率,rad/sec*)
  9. T = (2 \[Pi])/\[Omega];(*自振周期,sec*)
  10. \[Zeta] = 0.05;(*阻尼比*)
  11. c = 2 \[Zeta] m \[Omega];(*阻尼*)
  12. \[Delta] = 0.02;(*时间间隔,单位sec*)
  13. k0 = k + 6/\[Delta]^2 m + 3/\[Delta] c;(*等效刚度*)
  14. a[0] = 0; a1[0] = 0; a2[0] = 0;(*初值*)
  15. dga[i_] := acc[[i + 2]] - acc[[i + 1]];(*地面加速度增量*)
  16. df[i_] := -m dga[i] + ((6 m)/\[Delta] + 3 c) a1[
  17.     i] + (3 m + (\[Delta] c)/2) a2[i];(*等效荷载增量*)
  18. da[i_] := df[i]/k0;(*位移增量*)
  19. da1[i_] := 3/\[Delta] da[i] - 3 a1[i] - \[Delta]/2 a2[i];(*速度增量*)
  20. da2[i_] := 1/m (-m dga[i] - c da1[i] - k da[i] );(*加速度增量*)
  21. a[i_] := a[i - 1] + da[i - 1];(*位移迭代*)
  22. a1[i_] := a1[i - 1] + da1[i - 1];(*速度迭代*)
  23. a2[i_] := a2[i - 1] + da2[i - 1];(*加速度迭代*)
  24. t = {};(*位移集合*)
  25. Do[AppendTo[t, a[i]], {i, 8}](*每算一次将结果加入位移集合*)
  26. t(*输出位移集合*)
复制代码
求指导!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2014-7-14 21:29:38 | 显示全部楼层 来自 湖北武汉
Simdroid开发平台
上面的代码我只试算到了8,应该是2400的:L
回复 不支持

使用道具 举报

发表于 2014-7-15 19:01:10 | 显示全部楼层 来自 上海普陀区
不要用AppendTo 效率很低。编译函数后执行效率高。

http://blog.wolfram.com/2011/12/ ... t-mathematica-code/
回复 不支持

使用道具 举报

 楼主| 发表于 2014-7-16 00:22:42 来自手机 | 显示全部楼层 来自 湖北武汉
FreddyMusic 发表于 2014-7-15 19:01
不要用AppendTo 效率很低。编译函数后执行效率高。

http://blog.wolfram.com/2011/12/07/10-tips-for-writ ...

谢谢指点,我来试试~
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-17 06:31 , Processed in 0.031088 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表