声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1406|回复: 4

[编程技巧] 大侠看下这个程序出什么问题了。

[复制链接]
发表于 2008-7-9 20:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
具体程序在附件里,我经过两天的思索也没找到原因,希望大家留步帮个忙,谢谢!


  1. close all
  2. clear
  3. cL= 6.29e3;
  4. cT= 3.23e3;
  5. la=11.1e10;
  6. mu=8.286e10;
  7. r2= 9.45e-3;
  8. r1 =8.23e-3;
  9. d =1.22e-3;
  10. n =1;
  11. ff=0.6e6;
  12. cp=2910;
  13. wh = 2*pi*ff;
  14. alpha = wh*abs(sqrt((1/cL^2 - 1/cp^2)));
  15. beta = wh*abs(sqrt((1/cT^2 - 1/cp^2)));
  16. %
  17. alpha2 = wh^2*(1/cL^2 - 1/cp^2);      
  18. beta2 = wh^2*(1/cT^2 - 1/cp^2);
  19. k_wave = wh/cp;        
  20. syms f g1 AA A1 B B1 z1 z2 z1_b z2_b w1 w2 w1_b w2_b r
  21. syms f_d1 g1_d1 f_d2
  22. if cp > cL
  23. z1 = besselj(n, alpha*r);
  24. z2 = besselj(n+1, alpha*r);
  25. z1_b = besselj(n, beta*r);
  26. z2_b = besselj(n+1, beta*r);
  27. %
  28. w1 = bessely(n, alpha*r);
  29. w2 = bessely(n+1, alpha*r);
  30. w1_b = bessely(n, beta*r);
  31. w2_b = bessely(n+1, beta*r);
  32. %
  33. elseif cL>cp & cp>cT
  34. z1 = besseli(n, alpha*r);
  35. z2 = besseli(n+1, alpha*r);
  36. z1_b = besselj(n, beta*r);
  37. z2_b = besselj(n+1, beta*r);
  38. %
  39. w1 = besselk(n, alpha*r);
  40. w2 = besselk(n+1, alpha*r);
  41. w1_b = bessely(n, beta*r);
  42. w2_b = bessely(n+1, beta*r);
  43. %
  44. elseif cp <= cT
  45. z1 = besseli(n, alpha*r);
  46. z2 = besseli(n+1, alpha*r);
  47. z1_b = besseli(n, beta*r);
  48. z2_b = besseli(n+1, beta*r);
  49. %
  50. w1 = besselk(n, alpha*r);
  51. w2 = besselk(n+1, alpha*r);
  52. w1_b = besselk(n, beta*r);
  53. w2_b = besselk(n+1, beta*r);
  54. end
  55. %
  56. f=AA*z1+B*w1;
  57. g1=A1*z2_b+B1*w2_b;
  58. %g3=A3*z1_b+B3*w1_b;
  59. %
  60. f_d1=diff(f,r,1);
  61. g1_d1=diff(g1,r,1);
  62. %g3_d1=diff(g3,r,1);
  63. f_d2=diff(f,r,2);
  64. %g3_d2=diff(g3,r,2);
  65. rr=-la*(r1^2+k_wave^2)*f+2*mu*(f_d2+k_wave*g1_d1);
  66. rz=mu*(-2*k_wave*f_d1+beta2-k_wave^2)*g1;
  67. rr1=subs(rr,r,r1);
  68. rr2=subs(rr,r,r2);
  69. rz1=subs(rz,r,r1);
  70. rz2=subs(rz,r,r2);
  71. rr1=vpa(rr1,10);
  72. rr2=vpa(rr2,10);
  73. rz1=vpa(rz1,10);
  74. rz2=vpa(rz2,10);
  75. AAS= poly_coef(rr1,AA);
  76. BS= poly_coef(rr1,B);
  77. A1S= poly_coef(rr1,A1);
  78. B1S= poly_coef(rr1,B1);
  79. AAS2= poly_coef(rr2,AA);
  80. BS2= poly_coef(rr2,B);
  81. A1S2= poly_coef(rr2,A1);
  82. B1S2= poly_coef(rr2,B1);
  83. %
  84. AAS3= poly_coef(rz1,AA);
  85. BS3= poly_coef(rz1,B);
  86. A1S3= poly_coef(rz1,A1);
  87. B1S3= poly_coef(rz1,B1);
  88. AAS4= poly_coef(rz2,AA);
  89. BS4= poly_coef(rz2,B);
  90. A1S4= poly_coef(rz2,A1);
  91. B1S4= poly_coef(rz2,B1);
  92. %
  93. %
  94. A(1,1)=AAS(1);
  95. A(1,2)=BS(1);
  96. A(1,3)=A1S(1);
  97. A(1,4)=B1S(1);
  98. A(2,1)=AAS2(1);
  99. A(2,2)=BS2(1);
  100. A(2,3)=A1S2(1);
  101. A(2,4)=B1S2(1);
  102. A(3,1)=AAS3(1);
  103. A(3,2)=BS3(1);
  104. A(3,3)=A1S3(1);
  105. A(3,4)=B1S3(1);
  106. A(4,1)=AAS4(1);
  107. A(4,2)=BS4(1);
  108. A(4,3)=A1S4(1);
  109. A(4,4)=B1S4(1);
  110. %
  111. A=eval(A);
  112. b=1e-100*ones(4,1);
  113. zz=A\b;
  114. AA=zz(1);
  115. B=zz(2);
  116. A1=zz(3);
  117. B1=zz(4);
  118. %
  119. uz=-k_wave*f-g1_d1-g1/r;
  120. ur=(f_d1+k_wave*g1);
  121. uz=eval(uz);
  122. ur=eval(ur);
  123. uz=vpa(ur,10);
  124. ur=vpa(ur,10);
  125. j=1;
  126. yy=[];
  127. cc=[];
  128. for r=8.23e-3:0.001e-3:9.45e-3
  129. yy(1,j)=eval(ur);
  130. cc(1,j)=eval(uz);
  131. j=j+1;
  132. end
复制代码

[ 本帖最后由 sigma665 于 2008-7-10 09:55 编辑 ]

hou.txt

2.51 KB, 下载次数: 14

回复
分享到:

使用道具 举报

发表于 2008-7-10 09:56 | 显示全部楼层

回复 楼主 的帖子

错误提示?
 楼主| 发表于 2008-7-11 09:17 | 显示全部楼层

回复 2楼 的帖子

已经解决了,呵呵。是数值运算的时候出现错误了。
发表于 2012-8-7 17:35 | 显示全部楼层
请问有没有 poly_coef(rz2,B1)的编程?
发表于 2012-8-8 16:33 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 01:47 , Processed in 0.066437 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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