Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-08-21
年龄: 42
帖子: 1
声望力: 0 ![]() |
![]()
function M = ellmutualint
M = zeros(41,15); A = .2; %large radius n1 = 10; %small turn density n2 = 20; %large turn density M1 = .05; %half small length M2 = .08; %half large length p = sym('p'); for y = 1:1:15; if y < 10; alpha = .1*y; end if y > 9; alpha = 0.95+(.01*(y-10)); end a = A*alpha; %small radius for x = 1:1:41; d = 0.40-(0.01*(x-1)); if not((alpha == 1) && (abs(d) <= (M1+M2))); c1 = d + M1 + M2; c2 = d + M1 - M2; c3 = d - M1 + M2; c4 = d - M1 - M2; g = A^2 + a^2; f1 = ((sin(p)^2)*sqrt(g+(c1^2)-2*A*a*cos(p)))/(g-2*A*a*cos(p)); f2 = ((sin(p)^2)*sqrt(g+(c2^2)-2*A*a*cos(p)))/(g-2*A*a*cos(p)); f3 = ((sin(p)^2)*sqrt(g+(c3^2)-2*A*a*cos(p)))/(g-2*A*a*cos(p)); f4 = ((sin(p)^2)*sqrt(g+(c4^2)-2*A*a*cos(p)))/(g-2*A*a*cos(p)); I1 = int(f1,p,0,pi); I2 = int(f2,p,0,pi); I3 = int(f3,p,0,pi); I4 = int(f4,p,0,pi); M(x,y) = .004*pi*n1*n2*(A^2)*(a^2)*(I1 - I2 - I3 + I4); 提示这行有问题!!! else M(x,y) = 0.0000000001; end end end 好,我初学matlab程序,上面那一行有问题,,提示内容是:Conversion to double from sym is not possible. 我把(I1 - I2 - I3 + I4)这个去掉,程序就可以运行,看来是出在这上面,请问我应该如何修改? |
![]() |
![]() |