matlab画响应曲面程序求助 15
我想画Rg随参数a和s变化的响应曲面。然而我的主函数比较特殊,它的积分上下限是a和s的函数,也就是说下面s0中引入了向量,于是报错s0这里不能是向量。求修正。k=0;s=...
我想画Rg随参数a和s变化的响应曲面。然而我的主函数比较特殊,它的积分上下限是a和s的函数,也就是说下面s0中引入了向量,于是报错s0这里不能是向量。求修正。
k=0;
s=2.5*10^-29:0.01*10^-29:3.5*10^-29;%参数
a=0.29:0.01:0.39;%参数
[a,s]=meshgrid(a,s);
n=50;
na=50;
r=a.*sqrt(n).*10^-9;
sm=(na.*s).^(1/3);
s0=sm:2*10^-11:r.*n^(1/5);
y0=s0.^6.*exp(-7.*s0.^2./(2.*r.^2)).*exp(na*k*na.*s./(2.*s0.^3)-na.*((s0.^3./(na.*s)-1).*log(1-na.*s./s0.^3)+1));
d=trapz(s0,y0);
y1=1/d.*y0.*s0.^2;
Rg=sqrt(trapz(s0,y1));
mesh(a,s,Rg);
figure;
[c h]=contour(a,s,Rg);
clable(c); 展开
k=0;
s=2.5*10^-29:0.01*10^-29:3.5*10^-29;%参数
a=0.29:0.01:0.39;%参数
[a,s]=meshgrid(a,s);
n=50;
na=50;
r=a.*sqrt(n).*10^-9;
sm=(na.*s).^(1/3);
s0=sm:2*10^-11:r.*n^(1/5);
y0=s0.^6.*exp(-7.*s0.^2./(2.*r.^2)).*exp(na*k*na.*s./(2.*s0.^3)-na.*((s0.^3./(na.*s)-1).*log(1-na.*s./s0.^3)+1));
d=trapz(s0,y0);
y1=1/d.*y0.*s0.^2;
Rg=sqrt(trapz(s0,y1));
mesh(a,s,Rg);
figure;
[c h]=contour(a,s,Rg);
clable(c); 展开
1个回答
展开全部
%k=0;
s=2.5*10^-29:0.01*10^-29:3.5*10^-29;%参数
slen=length(s);
%a=0.29:0.01:0.39;%参数
a=linspace(0.29,0.39,slen);
%[a,s]=meshgrid(a,s);
n=50;
na=50;
r=a*sqrt(n)*10^-9;
sm=(na*s).^(1/3);
rn=r*n^(1/5);
Rg=zeros(slen,slen);
for k=1:slen
for m=1:slen
%s0=sm(k):2*10^-11:r(k)*n^(1/5);
s0=linspace(sm(k),rn(m),slen);
%y0=s0.^6.*exp(-7*s0.^2./(2*r.^2)).*exp(na*k*na.*s./(2*s0.^3)-na.*((s0.^3./(na.*s)-1).*log(1-na.*s./s0.^3)+1));
y01=exp(-7*s0.^2./(2*r.^2));
y02=((s0.^3./(na.*s)-1).*log(1-na.*s./s0.^3)+1);
y03=exp(na*k*na.*s./(2*s0.^3)-na.*y02);
y0=s0.^6.*y01.*y03;
d=trapz(s0,y0);
y1=(eps+1/d).*y0.*s0.^2;
Rg(k,m)=sqrt(trapz(s0,y1));
if Rg(k,m)==inf
Rg(k,m)=1.0e-01;
end
end
end
[a,s]=meshgrid(a,s);
mesh(a,s,Rg);
xlim([0.29 0.39]),ylim([2.5*10^-29 3.5*10^-29]),zlim([1.0847e-09 1.0e+08])
hold on
figure;
[c, h]=contour(a,s,Rg);
clabel(c,h);
按上面语句试试,由于有的太大,有inf 出现,超过范围,图画的不正常或出不来。
s=2.5*10^-29:0.01*10^-29:3.5*10^-29;%参数
slen=length(s);
%a=0.29:0.01:0.39;%参数
a=linspace(0.29,0.39,slen);
%[a,s]=meshgrid(a,s);
n=50;
na=50;
r=a*sqrt(n)*10^-9;
sm=(na*s).^(1/3);
rn=r*n^(1/5);
Rg=zeros(slen,slen);
for k=1:slen
for m=1:slen
%s0=sm(k):2*10^-11:r(k)*n^(1/5);
s0=linspace(sm(k),rn(m),slen);
%y0=s0.^6.*exp(-7*s0.^2./(2*r.^2)).*exp(na*k*na.*s./(2*s0.^3)-na.*((s0.^3./(na.*s)-1).*log(1-na.*s./s0.^3)+1));
y01=exp(-7*s0.^2./(2*r.^2));
y02=((s0.^3./(na.*s)-1).*log(1-na.*s./s0.^3)+1);
y03=exp(na*k*na.*s./(2*s0.^3)-na.*y02);
y0=s0.^6.*y01.*y03;
d=trapz(s0,y0);
y1=(eps+1/d).*y0.*s0.^2;
Rg(k,m)=sqrt(trapz(s0,y1));
if Rg(k,m)==inf
Rg(k,m)=1.0e-01;
end
end
end
[a,s]=meshgrid(a,s);
mesh(a,s,Rg);
xlim([0.29 0.39]),ylim([2.5*10^-29 3.5*10^-29]),zlim([1.0847e-09 1.0e+08])
hold on
figure;
[c, h]=contour(a,s,Rg);
clabel(c,h);
按上面语句试试,由于有的太大,有inf 出现,超过范围,图画的不正常或出不来。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询