我想用“ fsolve”函数反复求解非线性系统,代码如下,这里是三个数字,我想用这三个数字求解三组非线性系统,我的代码有什么问题?周期有问题吗?
A_coeff<-c(177506.9,177639.3,178039.4)
B_coeff<-c(0.0003485474,0.0005155126,0.0004671370)
C_coeff<-5.511464
C_coeff<-rep(C_coeff,3)
D_coeff<-23.39138
D_coeff<-rep(D_coeff,3)
E_coeff<-5.0866e+17
E_coeff<-rep(E_coeff,3)
F_coeff<-0.9732414
F_coeff<-rep(F_coeff,3)
DF<-data.frame(A_coeff,B_coeff,C_coeff,D_coeff,E_coeff,F_coeff,VA=numeric(3),
SA=numeric(3),SV=numeric(3))
s_actual_initial<-rep(20,3)
k_actual_initial<-rep(2000,3)
n_tube_initial<-rep(20,3)
DE<-data.frame(s_actual_initial,k_actual_initial,n_tube_initial)
library('pracma')
for(i in 1:nrow(DF)){
Para_fun <- function(temp1) {
new <- sqrt((4*temp1-1)/3)
return(new)
}
Para_fun2<- function(temp1) {
new2 <- ceiling(temp1/C_coeff)
return(new2)
}
F_try<- function(x){
s_actual <- x[1]
K_actual <- x[2]
n_tube <- x[3]
c( DF$A_coeff[i]/K_actual-s_actual,
(DF$B_coeff[i]+DF$F_coeff[i]/(DF$E_coeff[i]/Para_fun(n_tube)^(2/3))^0.25)^-1-K_actual,
Para_fun2(s_actual)*DF$D_coeff[i]-n_tube)}
}
x0_xinitial_value<- c(DE$s_actual_initial[i],DE$k_actual_initial[i],DE$n_tube_initial[i])
DE$VA[i]<- fsolve(F_try, x0_xinitial_value)$x[1]
DE$SA[i]<- fsolve(F_try, x0_xinitial_value)$x[2]
DE$SV[i]<- fsolve(F_try, x0_xinitial_value)$x[3]