FindImpVol2=function(S0,K,t,r,CM)
{
Sigma0=-20;
Sigma1=20;
while((Sigma1-Sigma0)^(-2)<10^8){
Sigma=Sigma1-g(S0,K,t,r,Sigma1,CM)/((g(S0,K,t,r,Sigma1,CM)-g(S0,K,t,r,Sigma0,CM))/(Sigma1-Sigma0))
Sigma0=Sigma1
Sigma1=Sigma
Sigma=Sigma1-g(S0,K,t,r,Sigma1,CM)/((g(S0,K,t,r,Sigma1,CM)-g(S0,K,t,r,Sigma0,CM))/(Sigma1-Sigma0))
Sigma0=Sigma1
Sigma1=Sigma
}
return(Sigma)
}
FindImpVol2(135.02,K1[1],T1,r,CM1[1])
运行后显示『Error in while ((Sigma1 - Sigma0)^(-2) < 10^1) { :
missing value where TRUE/FALSE needed』
但把循环条件改成10^2就可以运行了,就很迷。请问有什么解决办法吗?