Hi all,

I have this simple integral function:

\int (5 + \sin \ x)^{4} \ dx

and I want to plot the integral function above so I use this code:

```
using SymPy, Plots
f(x) = integrate((5 + sin(x))^4)
plot(f)
```

but it gets errors:

I also concern about the Warning when I type `using Plots`

why is this occurring? I added today a new package `QuadGK`

and maybe that is whyβ¦

My package list:

```
Status `~/LasthrimProjection/Project.toml`
[537997a7] AbstractPlotting v0.18.3
[6e4b80f9] BenchmarkTools v1.3.2
[3391f64e] CDDLib v0.7.0
[13f3f980] CairoMakie v0.5.10
[5ae59095] Colors v0.12.8
[39dd38d3] Dierckx v0.5.2
[b4f34e82] Distances v0.10.7
[5752ebe1] GMT v0.43.1
[d997a800] Implicit3DPlotting v0.2.3 `https://github.com/matthiashimmelmann/Implicit3DPlotting.jl.git#main`
[95701278] ImplicitEquations v1.0.9
[a98d9a8b] Interpolations v0.14.6
[d1acc4aa] IntervalArithmetic v0.20.8
[d8418881] Intervals v1.8.0
[b964fa9f] LaTeXStrings v1.3.0
[b4f0291d] LazySets v2.3.0
[ae8d54c2] Luxor v3.5.0
[ebaf19f5] MTH229 v0.2.11
[961ee093] ModelingToolkit v8.11.0
[429524aa] Optim v1.7.3
[1dea7af3] OrdinaryDiffEq v6.11.2
[f0f68f2c] PlotlyJS v0.18.10
[91a5bcdd] Plots v1.36.0
[67491407] Polyhedra v0.6.17
[f27b6e38] Polynomials v3.2.0
[438e738f] PyCall v1.94.1
[1fd47b50] QuadGK v2.6.0
[ce6b1742] RDatasets v0.7.7
[6e93f119] SchwarzChristoffel v0.1.11
[24249f21] SymPy v1.1.7
[78aadeae] SymbolicNumericIntegration v0.8.6
[9ec6d097] TruthTables v0.4.2
[e88e6eb3] Zygote v0.6.44
[de0858da] Printf
```

Thanks

nilshg
December 15, 2022, 10:30am
2
I donβt think this does what you think it does:

```
julia> f(x) = integrate((5 + sin(x))^4)
f (generic function with 1 method)
julia> f(1)
ERROR: MethodError: no method matching integrate(::Float64)
```

when you pass `x`

, `(5 + sin(x))^4`

is just a nuber - e.g. for `x = pi`

you get `5^4 = 625`

so you are essentially doing

```
julia> integrate(625.0)
ERROR: MethodError: no method matching integrate(::Float64)
```

which doesnβt make a lot of sense. `integrate`

is expecting a function rather than a value, so you probably meant:

```
julia> g = integrate(y -> (5 + sin(y))^4)
4 2 2 4
3β
xβ
sin (x) 3β
xβ
sin (x)β
cos (x) 2 3β
xβ
cos (x) 2
βββββββββββ + βββββββββββββββββββ + 75β
xβ
sin (x) + βββββββββββ + 75β
xβ
cos (x)
8 4 8
3 3
5β
sin (x)β
cos(x) 2 3β
sin(x)β
cos (x)
+ 625β
x - ββββββββββββββββ - 20β
sin (x)β
cos(x) - ββββββββββββββββ - 75β
sin(x)β
8 8
3
40β
cos (x)
cos(x) - ββββββββββ - 500β
cos(x)
```

Now you can pass a value which will be substituted to derive the integral:

```
julia> g(2)
4 3 3 2 2 4
3β
cos (2) 3β
sin(2)β
cos (2) 5β
sin (2)β
cos(2) 3β
sin (2)β
cos (2) 3β
sin (2
βββββββββ - ββββββββββββββββ - ββββββββββββββββ + βββββββββββββββββ + ββββββββ
4 8 8 2 4
3
) 40β
cos (2) 2 2 2
β - ββββββββββ - 20β
sin (2)β
cos(2) + 150β
cos (2) - 75β
sin(2)β
cos(2) + 150β
sin
3
(2) - 500β
cos(2) + 1250
```

2 Likes

Thatβs a really clear and easy to understand explanation thanks @nilshg

Why is the integral calculation for function g that is created from

```
g = integrate(y -> (5 + sin(y))^4)
```

different with the function that I input directly:

```
julia> integrate(g, 0, 2Ο)
13824
```

```
julia> integrate((5+sin(x))^4, (x, 0, 2pi))
4400.58590951590
```

Those are two different functions you are integrating (compare `g`

to `(5+sin(x))^4`

).

The method `integrate(f::Function, ...)`

was intended to be deprecated (which might help clear this up). Iβd suggest only integrating symbolic expressions formed directly, as with `(5+sin(x))^4`

or through a function, like `f(x)`

(not just `f`

).

1 Like

g is already the integrated function and you do not need to integrate again.

To have the finite integral you want, just use

```
g(2pi)-g(0)
```

which yields 4400.5859095159

1 Like

Thanks a lot for helping me to understand more.

Thanks a lot, I think it is clearer now to me.