用nleqslv包R解两个非线性方程

时间:2019-02-04 11:54:01

标签: r

我正在使用nleqslv软件包来求解两个非线性方程,其中两个未知数为正。每次终止代码为(3),这意味着找不到更好的解决方案,并且结果与实际值相差太远

library(nleqslv) ## solving nonlinear equations
R.bar=0.4361885
R2.bar=0.2137403
initial=c(0.4361885,1.659362)
sq.initial=sqrt(initial)
fun <- function(z){
 f=numeric(2)
  x=z^2
  f[1]=(exp(-(x[1]^2)/(2*(x[2]))))*((x[1]/sqrt(x[2]))+
                                          (((x[1]/sqrt(x[2]))^3)*0.375)+
                                          (((x[1]/sqrt(x[2]))^5)*0.078125)+
                                          (((x[1]/sqrt(x[2]))^7)*0.01139)+
                                          (((x[1]/sqrt(x[2]))^9)*0.0012817)+
                                          (((x[1]/sqrt(x[2]))^11)*0.000117))-(4*R.bar/sqrt(2*pi))
  f[2]=(exp(-(x[1]^2)/(2*(x[2]))))*((((x[1]/sqrt(x[2]))^2)*0.25)+
                                          (((x[1]/sqrt(x[2]))^4)*0.0834)+
                                          (((x[1]/sqrt(x[2]))^6)*-0.04286)+
                                          (((x[1]/sqrt(x[2]))^8)*-0.05798)+
                                          (((x[1]/sqrt(x[2]))^10)*-0.03594)+
                                          (((x[1]/sqrt(x[2]))^12)*-0.01948)+
                                          (((x[1]/sqrt(x[2]))^14)*-0.005274))-(R2.bar)
   f
   }
testnslv(sq.initial,fun)

0 个答案:

没有答案