2016-04-07 25 views
0

Bir dizi doğrusal olmayan denklemi çözmeyi denedim ama takıldım.BB paketini kullanarak doğrusal olmayan denklemleri çözme

0<x1<1 ; x2>0 ; x3>0 

library(BB) 

f <- function(x) { 
    x1 <- x[1] 
    x2 <- x[2] 
    x3 <- x[3] 

    F <- rep(NA, 3) 

    F[1] <- 1-x1^(log(1+1/(x3)^x2))-0.64 

    F[2] <- x1^(log(1+1/(x3)^x2))-x1^(log(1+(2/x3)^x2))-0.17 

    F[3] <- x1^(log(1+(2/x3)^x2))-x1^(log(1+(3/x3)^x2))-0.10 

    return(F) 
} 

p0 <- c(0.5,2,1) 

dfsane(par=p0, fn=f,control=list(maxit=30000)) 

İlk yineleme sadece

bir hata ile sıkışmış "Başarısızlık: işlev değerlendirmesinde hata"

herkes hatasının kurtulmak için nasıl yardımcı olabilir

?

cevap

0

Bu tür hataları ayıklamak için, işlevin hatalı çalışmasına neden olan bağımsız değişkeni tanımlamak üzere her işlev yinelemesinde işlenen x değerini yazdırabilirsiniz. Ben öyle yapınca

, aşağıdaki veri girişi sorunlu olduğu tespit:

x <- c(-1.199934, -2.745093, 3.648077) 
f(x) 
# [1] NaN NaN NaN 

Bunu dışı sınırları veriler için NaN dönmez böylece fonksiyonunu güncellemek (ya da hiç hareket etmeliyiz işlev argümanları üzerindeki kısıtlamaları kabul eden çözücü).

+0

@ Josliber, Evet, doğru. aslında ben 0 0 başlangıç ​​olarak belirtilen fonksiyon argümanları üzerinde kısıtlamaları var; x3> 0. Herhangi biri, bu durumun nasıl ele alınacağına yardımcı olabilir. –

+0

@BilalPara nloptr paketi kısıtlı doğrusal olmayan optimizasyon sağlar; Durumunuzda çalışıp çalışmadığını kontrol edebilirsiniz. – josliber

+0

@ Josliber, Orada lineer olmayan denklemlerin çözümünü almak için optimizasyon yöntemini nasıl kullanacağımı biraz kafam karıştı. –

İlgili konular