
Dostali sa mi do rúk poznámky z fyziky od jednej kamarátky a napadlo ma, že energiu oscilácií ^^^ by sme si mohli aj nakresliť :) O čo ide? Predstavil som integrály oscilačného sínusu ako stĺpčeky v počítačovom algoritme, keď sa integrál ráta hrubou silou, no á logicky ak je tento integrál na druhú, tak energia musí sedieť na grafe. Toť som nakreslil vyššie ^^^
using Pkg
Pkg.add("GLMakie")
Pkg.add("Colors")
using GLMakie
using Colors
# Dáta
x = 0:0.1:10
y = sin.(x)
abs_y = abs.(y)
# Rozdelenie na „tabličky“ (stĺpce)
bar_x = x[1:5:end] # každý 5. bod
bar_height = abs_y[1:5:end] # výška stĺpca = hodnota krivky
bar_width = 0.08 # šírka tabličky
# Vytvorenie grafu
fig = Figure(resolution=(900, 400))
ax = Axis(fig[1,1], title="E = integral[-inf,+inf] { (|y(t)|^2) dt } https://hrubos.tech/blogy/ Mgr. Ján Hruboš", xlabel="x", ylabel="|sin(x)|")
# Hlavný graf |sin(x)|
lines!(ax, x, abs_y, color=:blue, linewidth=2, label="|sin(x)|")
# Bar chart „integrál pod krivkou“
barplot!(ax, bar_x, bar_height, color=:orange, width=bar_width, label="integral copying bars")
# Popisky x pod každý oranžový stĺpec
for (bx, bh) in zip(bar_x, bar_height)
text!(ax, string(round(bx; digits=2)),
position = (bx, 0), # tesne nad osou x
align = (:center, :top),
fontsize = 10, color = :black)
end
# Špeciálny červený bod
special_index = 2
scatter!(ax, [bar_x[special_index]], [bar_height[special_index]],
color=:red, marker=:circle, markersize=5, label="touching point")
# Červená tablička presne pod červeným bodom, šírka = výška baru
v_bottom = bar_height[special_index] # y-hodnota červeného bodu
# rozsahy osí
xrange = ax.finallimits[].widths[1]
yrange = ax.finallimits[].widths[2]
# pomer jednotiek
scale = xrange / yrange
# šírka červenej tabličky v X jednotkách
width = bar_height[special_index] * scale*4.5 # šírka tabličky = výška oranžového stĺpca
height = 0.05*scale*9.6 # výška tabuľky (malá, konštantná)
x0 = bar_x[special_index]
rect_x = [x0, x0 + width, x0 + width, x0]
rect_y = [v_bottom, v_bottom, v_bottom - height, v_bottom - height]
poly!(ax, rect_x, rect_y, color=:red, alpha=0.4)
# Legenda
axislegend(ax)
display(fig)
# pre terminál
if !Base.isinteractive()
println("Stlač ENTER pre ukončenie...")
readline()
end
Inak vďaka za prednášku Počítačové algoritmy pánovi docentovi Dederovi na Vojenskej akadémií v nejakom cca roku 2005-2006 Ták toto som si z toho odniesol ^^^

Comments “Tak čo, už ste videli počítačový algoritmus na výpočet integrálov? Premeňme integrálny stĺpček na energiu oscilácií, čo je integrál na druhú:”