2017-08-02 1 views
1

Ich folgte diesem Beitrag hier double integral in R und schaltete die Funktion und die Grenzen, um unten zu passen, aber es funktioniert nicht.Warum funktioniert mein Doppelintegral R nicht

enter image description here

InnerFunc = function(x) { x + (y^2) } 
InnerIntegral = function(z) { sapply(y, 
     function(z) { integrate(InnerFunc, 0, 2)$value }) } 
integrate(InnerIntegral, 0, 1) 

ich diesen Fehler:

Fehler bei integrieren (InnerFunc, 0, 2): Bewertung der Funktion ein Ergebnis von falschen Typ gab

Antwort

2

Ihre Variablen sind alle aus dem Wahnsinn. Dies sollte das tun, was Sie

InnerFunc <- function(x, y) { x + (y^2) } 
InnerIntegral <- function(y) { sapply(y, 
    function(z) { integrate(InnerFunc, 0, 2, y=z)$value }) } 
integrate(InnerIntegral, 0, 1) 
# 2.666667 with absolute error < 3e-14 

Hinweis wollen, wie InnerFunc ist jetzt eine Funktion sowohl von x und y. Beachten Sie auch, wie wir den über InnerIntegral über den y-Parameter übergebenen Vektor anwenden (anstatt den übergebenen Wert z zu ignorieren). Wir übergeben auch den aktuellen Wert y an InnerFunc.

Obwohl Sie

getippt
InnerFunc <- function(x, y) { x + (y^2) } 

die Mathematik Sie sieht wirklich zeichnete sollte

in

führen, so bin ich nicht sicher, was Sie wirklich nach waren.

+0

Hallo, so sollte die Antwort .6666667 sein, siehe hier https://www.symbolab.com/solver/double-integrals-calculator/%5Cint_%7B0%7D%5E%7B1%7D%5Cint_%7B%%7D % 5E% 7B2% 7Dxy% 5E% 7B2% 7D% 20dxdy –

+0

Ich erwähnte bereits in der Antwort, dass Sie in Ihrem Code 'x + (y^2)' setzen, aber wenn Sie 'x * (y^2)' dann meinten Sie würden .666 wie erwartet erhalten. – MrFlick