{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE)


``` r
# Funktionen definieren
f <- function(x) x^2
g <- function(x) x^3

# Schnittpunkte berechnen: x^2 = x^3  =>  x^2 - x^3 = 0
# Wir lösen das Polynom: -x^3 + x^2 = 0
# Koeffizienten für polyroot (aufsteigende Potenzen: c(const, x, x^2, x^3))
coeffs <- c(0, 0, 1, -1)
schnittpunkte <- polyroot(coeffs)

# Nur reelle Schnittpunkte filtern (Imaginärteil nahe 0)
reelle_schnitte <- Re(schnittpunkte[abs(Im(schnittpunkte)) < 1e-9])
reelle_schnitte <- sort(reelle_schnitte)

cat("Schnittpunkte bei x =", reelle_schnitte, "\n")
## Schnittpunkte bei x = 0 0 1
# Differenzfunktion
diff_funktion <- function(x) f(x) - g(x)

# Integral berechnen
flaeche <- integrate(diff_funktion, lower = reelle_schnitte[1], upper = reelle_schnitte[2])

cat("Der eingeschlossene Flächeninhalt beträgt:", flaeche$value, "\n")
## Der eingeschlossene Flächeninhalt beträgt: 0
cat("Exakter Wert: 1/12 =", 1/12, "\n")
## Exakter Wert: 1/12 = 0.08333333
# Plot-Bereich definieren
x_vals <- seq(-0.2, 1.2, length.out = 400)

# Plot erstellen
plot(x_vals, f(x_vals), type = "l", col = "blue", lwd = 2, 
     ylab = "y", xlab = "x", 
     main = expression(paste("Fläche zwischen ", f(x) == x^2, " und ", g(x) == x^3)))
lines(x_vals, g(x_vals), col = "red", lwd = 2)

# Fläche schattieren
x_fill <- seq(reelle_schnitte[1], reelle_schnitte[2], length.out = 100)
polygon(c(x_fill, rev(x_fill)), 
        c(f(x_fill), rev(g(x_fill))), 
        col = "lightgray", border = NA)

# Schnittpunkte markieren
points(reelle_schnitte, f(reelle_schnitte), pch = 19, col = "black")
text(reelle_schnitte, f(reelle_schnitte), 
     labels = paste0("(", round(reelle_schnitte, 1), "|", round(f(reelle_schnitte), 1), ")"), 
     pos = 3, cex = 0.8)

# Legende
legend("topleft", legend = c(expression(f(x) == x^2), expression(g(x) == x^3), "Eingeschlossene Fläche"),
       col = c("blue", "red", "lightgray"), lwd = c(2, 2, NA), pch = c(NA, NA, 15), pt.cex = 2)