yunaijun
2009-08-21, 17:19
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)这个去掉,程序就可以运行,看来是出在这上面,请问我应该如何修改?
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)这个去掉,程序就可以运行,看来是出在这上面,请问我应该如何修改?