yangyang_722 发表于 2012-2-4 21:44:44

求和时显示integer too large的错误,怎么办?

程序代码如下:
syms k2 h pc1 pc2 q0 t;
a=1.5e-3;   %基体厚度
b=1.5e-3;   %薄膜厚度
c=a+b;    %试样厚度
k1=400;   %基体热导率
pc1=1e6;   %基体体积热容
pc2=1e6;   %薄膜体积热容
r=5e-3;   %试样半径
S=pi*r^2; %横截面积
q0=1000;
eta=minfun(a,b);
gamma=(k2*pc1/k1/pc2)^(1/2)*eta;
A=k1*gamma/h;
%V=;
%C=[];D=[];N=[];T=[];
for i=1:length(eta)
C(i)=(k1*gamma(i)/h*cos(gamma(i)*a)*cos(eta(i)*a)+sin(gamma(i)*a)*cos(eta(i)*a))+(gamma(i)*k1/eta(i)/k2)*(k1*gamma(i)/h*sin(gamma(i)*a)*sin(eta(i)*a)-cos(gamma(i)*a)*sin(eta(i)*a));
D(i)=(k1*gamma(i)/h*cos(gamma(i)*a)*sin(eta(i)*a)+sin(gamma(i)*a)*sin(eta(i)*a))-(gamma(i)*k1/eta(i)/k2)*(k1*gamma(i)/h*sin(gamma(i)*a)*cos(eta(i)*a)-cos(gamma(i)*a)*cos(eta(i)*a));
N(i)=pc1*(A(i)^2*(a/2+1/4/gamma(i)*sin(2*gamma(i)*a))+A(i)/gamma(i)*(sin(gamma(i)*a)^2)+(a/2-1/4/gamma(i)*sin(2*gamma(i)*a)))+pc2*C(i)^2*(b/2+1/4/eta(i)*(sin(2*eta(i)*c)-sin(2*eta(i)*a)))+pc2*C(i)*D(i)/eta(i)*(sin(eta(i)*c)^2-sin(eta(i)*a)^2)+D(i)^2*(b/2-1/4/eta(i)*(sin(2*eta(i)*c)-sin(2*eta(i)*a)));   
F(i)=A(i)*(C(i)*cos(eta(i)*c)+D(i)*sin(eta(i)*c))/N(i)*exp(-k2/pc2*eta(i)^2*t);
dTk2(i)=diff(F(i),k2);
dTk1(i)=subs(dTk2(i),{k2 h},{10 20});
end
dTk=sum(dTk1);
t=;
for j=1:length(t)

dk(j)=double(subs(dTk,t,t(j)));
m1(j)=S*q0*dk(j);

end

plot(t,m1);
其中,
function eta=minfun(a,b)
syms k1 k2 h pc1 pc2 q0 eta;
c=a+b;    %试样厚度
k1=400;   %基体热导率
pc1=4e6;   %基体体积热容
pc2=4e6;   %薄膜体积热容
r=5e-3;   %试样半径
S=pi*r^2; %横截面积
g=;%
t=;
f1=(eta*b*tan(eta*b)-g(2)*b/g(1))/(g(2)*b/g(1)*tan(eta*b)+eta*b)-((g(1)*pc1/k1/pc2)^(1/2)*eta*k1/eta/g(1))*((g(1)*pc1/k1/pc2)^(1/2)*eta*a*tan((g(1)*pc1/k1/pc2)^(1/2)*eta*a)-g(2)*a/k1)/(g(2)*a/k1*tan((g(1)*pc1/k1/pc2)^(1/2)*eta*a)+(g(1)*pc1/k1/pc2)^(1/2)*eta*a);
f1=fcnchk(char(f1));
eq=-1500:1500;
sov=[];
gamma=[];
for i=1:length(eq)
sovi=fsolve(f1,eq(i));
sov=;
clc;
end
Xn=unique(single(sov));
eta=[];
for i=1:length(Xn)
if Xn(i)~=0&~isnan(Xn(i))
    eta=;
end
end
怎么解决这个问题啊?谢谢
页: [1]
查看完整版本: 求和时显示integer too large的错误,怎么办?