求助 程序有问题
function w=kx2(x)global D1 D2 a b k1 k2 tao1 tao2 lamda p q h g1 A B G G1 xs H;
w=H/(D2*(G1^2)+2*lamda*sqrt(D1*D2)*G1/B+D1);
global D1 D2 a b k1 k2 tao1 tao2 lamda p q h g1 A B G G1 xs H;
D1=0.1;
D2=0.2;
a=5.6;
b=0.4;
k1=10;
k2=1.0;
tao1=0.5;
tao2=0.25;
lamda=0.4;
dx=0.16;
fid=fopen('99.dat','wt')
for ii=1:25
x=0.01+dx*ii;
xx(ii)=x;
p=k2-(a+b)^2/(3*k1^2);
q=-2*(a+b)^3/(27*k1^3)+k2*(a+b)/(3*k1)-b;
A=1-tao1.*(2*a*k1.*x./((x.^2+k1).^2)-k2)+tao1*2*k1*(a.*x.^2./(x.^2+k1)-k2.*x+b)./(x.*(x.^2+k1));
h=a.*(x.^2)./(x.^2+k1)-k2.*x+b;
g1=x.^2./(x.^2+k1);
xs=(-q/2+sqrt((q/2)^2+(p/3)^3))^(1/3)+(-q/2-sqrt((q/2)^2+(p/3)^3))^(1/3);
B=1-tao2*(2*a*k1*xs/((k1+xs)^2)-k2);
H=h./A;
G1=g1./A;
G=sqrt(D2*(G1^2)+2*lamda*sqrt(D1*D2)*G1/B+D1);
m=quad(@kx2,0,x);
yy(ii)=exp(m-log(abs(G)));
end
sump=sum(yy);
for jj=1:25
yy(jj)=yy(jj)/sump;
Q=yy(jj);
fprintf(fid,'%f\n',Q/dx);
end
plot(xx,yy/dx);
fclose(fid);
hold on;
出错提示:
??? Attempted to access y(7); index out of bounds because numel(y)=1.
Error in ==> quad at 71
if ~isfinite(y(7))
Error in ==> xm2 at 27
m=quad(@kx2,0,x);
新手上路请多指教,谢谢!
回复 楼主 xiaomiao416 的帖子
变量的值没有完全给齐请把组件也给标示出来~
有问题的地方也标出来
错误指的是第71行
咱家可看不出来哪行是71阿
尽量把问题整理一下,多问问针对性的问题
毕竟不是每个人都有时间把整支程序看一便的
你可以把程序运行到一部份,把有问题的部份需要的变量列出来
这样你对问题会比较了解点,也可以节省大家的回复时间
回复 楼主 xiaomiao416 的帖子
好的谢谢lqbtbs
我再看看
回复 沙发 lqbtbs 的帖子
LZ的意见很对, 发问者若想得到别人的关注, 的确也需要自己多注意些!还有错误指的不在第71行而是在第27行!:@)
回复 地板 ChaChing 的帖子
哈哈俺還有的學
他寫Error in ==> quad at 71
就以為錯在71~哈
回复 楼主 xiaomiao416 的帖子
不太清楚LZ的问题, 真的没头没尾又太杂乱! 凭感觉请LZ自己检查1.kx2函数里头根本无x, 对吗
2.B会出现复数合理吗
页:
[1]