看板 Statistics 關於我們 聯絡資訊
稍微改寫一下 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
simonwu:感謝您的協助 08/28 02:13