学习R语言编程——常用算法——枚举法

################################常用算法——枚举法#################################

##计算函数f(x) = 1-(1+x)^(-10)-6.71*x的根

#for

f = function(x) 1-(1+x)^(-10)-6.71*x

a = NULL

x = seq(-1,1,by = 1e-4)

for(i in 1:length(x)){

if(abs(f(x[i]))<0.0001)a = cbind(a,x[i])

}

a

#while

f = function(x) 1-(1+x)^(-10)-6.71*x

i = 1

a = NULL

x = seq(-1,1,by = 1e-4)

while(i<=length(x)){

if(abs(f(x[i]))<0.0001)a = cbind(a,x[i])

i= i+1

}

a

#repeat

f = function(x) 1-(1+x)^(-10)-6.71*x

a = NULL

x = seq(-1,1,by = 1e-4)

i = 1

repeat{

if(abs(f(x[i]))<0.0001)a = cbind(a,x[i])

i = i+1

if(i>length(x))break

}

a

timeend = Sys.time()

runningtime = timeend - timestart

runningtime

###矩阵语言

f = function(x) 1-(1+x)^(-10)-6.71*x

x = seq(-1,1,by = 1e-4)

x[abs(f(x))<1e-5]

 

#枚举法计算出1000以内水仙花数

a = NULL

for(i in 1:9)

for(j in 0:9)

for(k in 0:9)if((i^3+j^3+k^3) == (100*i+10*j+k))a = cbind(a,100*i+10*j+k)

a

 

#例子:定义一个长度为100mean=1sd=2的正态分布随机向量,并找出该向量的最小值及其出现的位置

norm <- rnorm(100,1,2)

#which(norm ==min(norm)) #矩阵语言

min_norm = 100

for(i in 1:100){

if(norm[i] < min_norm){

min_norm = norm[i]

count_min_norm = i

}

}

min.norm = cbind(count_min_norm,min_norm)

min.norm

你可能感兴趣的:(学习R语言编程)