分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
問題描述:
% Re-calculate example 5.3 on P.112 by AFOSM
Miu_W=10;
Sigma_W=0.4;
L=5;
Miu_E=2e7;
Sigma_E=0.5e7;
Miu_I=8e-4;
Sigma_I=1.5e-4;
syms W E I beta
g=L.*360-0.0069.*W.*L^4./(E.*I);
W_cos=-diff(g,W).*Sigma_W./sqrt((diff(g,W).*Sigma_W)^2+(diff(g,E).*Sigma_E)^2+(diff(g,I).*Sigma_I)^2);
E_cos=-diff(g,E).*Sigma_E./sqrt((diff(g,W).*Sigma_W)^2+(diff(g,E).*Sigma_E)^2+(diff(g,I).*Sigma_I)^2);
I_cos=-diff(g,I).*Sigma_I./sqrt((diff(g,W).*Sigma_W)^2+(diff(g,E).*Sigma_E)^2+(diff(g,I).*Sigma_I)^2);
% Iteration 1
W_star=Miu_W;
E_star=Miu_E;
I_star=Miu_I;
Arfa_W=subs(W_cos,{W,E,I},{Miu_W,Miu_E,Miu_I});
Arfa_E=subs(E_cos,{W,E,I},{Miu_W,Miu_E,Miu_I});
Arfa_I=subs(I_cos,{W,E,I},{Miu_W,Miu_E,Miu_I});
F=3000.*beta.*Arfa_W+4000.*beta.*Arfa_E+750.*beta^2.*Arfa_W.*Arfa_E-124.2.*beta.*Arfa_I+12895;
beta1=solve(F,beta);
beta_s=beta1(1);
for i=2:1000
W_star=Miu_W+Arfa_W.*beta_s.*Sigma_W;
E_star=Miu_W+Arfa_E.*beta_s.*Sigma_E;
I_star=Miu_W+Arfa_I.*beta_s.*Sigma_I;
Arfa_I=subs(I_cos,{W,E,I},{W_star,E_star,I_star});
Arfa_E=subs(E_cos,{W,E,I},{W_star,E_star,I_star});
Arfa_w=subs(W_cos,{W,E,I},{W_star,E_star,I_star});
F=3000.*beta.*Arfa_W+4000.*beta.*Arfa_E+750.*beta^2.*Arfa_W.*Arfa_E-124.2.*beta.*Arfa_I+12895;
beta2=solve(F,beta);
beta(i)=beta2(1);
p=abs(beta(i)-beta_s);
if p>1e-4;
beta_s=beta(i);
break
end
Pf=norminv(-beta(i),0,1);
disp('W_star','E_star','I_star','beta2(1)','Pf')
end
這是我編的程序,到>這塊卻出錯了!!!
想知道為什麽,謝謝大家的幫助!感激!
解析:
把p從sym變量轉換為數值變量即可。
原來:p=abs(beta(i)-beta_s);
現在:p=eval(abs(beta(i)-beta_s));