推 simonwu:感謝您的協助 08/28 02:13
稍微改寫一下
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