решение двух нелинейных уравнений с помощью nleqslv packain R - PullRequest
0 голосов
/ 04 февраля 2019

Я использую пакет 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...