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.