作者arbiteron (..)
站内Statistics
标题Re: [程式] 用R同时做多次回圈的相关问题
时间Sat Aug 27 21:17:55 2011
稍微改写一下
Tm <- seq(31.70682,33.89119,length=5)
T0 <- seq(6.044388,9.184368,length=5)
a <- seq(1.355866e-04-1e-04,1.355866e-04+1e-04,length=5)
dd <- expand.grid(Tm=Tm, T0=T0, a=a)
##代入之参数制作成矩阵
Toptim <- function(T,dd){0.25-(dd[3]*T*(T-dd[2])*sqrt(dd[1]-T))}
##原目标函数作缩减以便使用apply函数
op <- function(m){optim(25,Toptim,dd=m)$par}
sol<- apply(dd,1,op)
##各参数代入求解
※ 引述《clickhere (业余扫地僧)》之铭言:
: 如下所列
: ※ 引述《simonwu (人生就像乘船)》之铭言:
: : ------------------------------------------------------------------------
: : [软体程式类别]:
: : R
: : [程式问题]:
: : optim 与 回圈
: : [软体熟悉度]:
: : 中(3个月到1年)
: : [问题叙述]:
: : 在分析data时碰到了 需要将三个已知参数
: : 放进去optim 里面求另一个未知参数的值 这样的情形
: : 假设三个参数分别有 5个可能值
: : 所以一共需要求出 5 * 5 * 5 一共 125 个解
: : 但是我在跑以下的回圈时
: : 却总是只能跑出 125个 相同的值
: : 希望各位可以帮我看看 我的回圈指令的顺序是否有误 感谢大家 <(_ _)>
: : [程式范例]:
: Toptim <- function (T,a,Tm,T0){0.25-(a*T*(T-T0)*sqrt(Tm-T))}
: Tm <- seq(31.70682,33.89119,length=5)
: T0 <- seq(6.044388,9.184368,length=5)
: a <- seq(1.355866e-04-1e-04,1.355866e-04+1e-04,length=5)
: Topt <- rep(NA,125)
: l <- 1
: # for (l in 1:125){
: for (i in 1:5){
: for (j in 1:5){
: for (k in 1:5){
: Topt[l] <- optim(25,Toptim,a=a[i],T0=T0[j],Tm=Tm[k])$par
: l <- l + 1
: }}}
: # }}}}
: : -----------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.142.7.53
1F:推 simonwu:感谢您的协助 08/28 02:13