Dosya:Green's function animation.gif

Tam çözünürlük((640 × 640 piksel, dosya boyutu: 1,69 MB, MIME tipi: image/gif), döngüye girdi, 202 kare, 20 sn)


Özet

Açıklama
English: An intuitive animation that shows how Green's functions that solve a differential equation subject to a point-like source can be superposed to solve it subject to an arbitrary source.
Tarih
Kaynak Yükleyenin kendi çalışması
Yazar Hersle

Julia code

using LinearAlgebra
using Plots
using Printf

function solve(f; x1=0, x2=1)
	N = length(f)
	x = Array(range(x1, x2, length=N))
	h = x[2] - x[1]
	diag = fill(+2/h^2, N-2)
	semidiag = fill(-1/h^2, N-3)
	L = Tridiagonal(semidiag, diag, semidiag)
	u = L \ f[2:end-1]
	u = cat([0], u, [0], dims=1)
	return x, u
end

function animate()
	# Store all Green's function solutions
	N = 101
	U = zeros(N, N)
	p = plot()
	for i in 1:N
		f = [i == j ? 1 : 0 for j in 1:N]
		x, u = solve(f)
		U[i,:] = u
		plot!(p, u)
	end

	# Solve a real problem
	f1 = exp.(-(x.-0.5).^2 / (2*0.01))
	x, u1 = solve(f1)
	u = zeros(N)

	barw = x[2]-x[1] # plot bars with no gap between them

	anim = @animate for i in 1:N
	    y = @sprintf("%.2f", (i-1) / (N-1)) # as string
		f2 = [i == j ? 1 : 0 for j in 1:N]
		x, u2 = solve(f2)
		u += u2 * f1[i]

		colors = [i == j ? :black : :red for j in 1:N]

		# for some reason, only (1599, 1600) gives a height that is divisible by 2 during mp4 generation
		plot(layout=(2, 2), size=(1599, 1600), xlims=(0,1), xticks=([0, 0.5, 1], ["\$0\$", "\$x\$", "\$1\$"]), yticks=nothing, bar_width=barw, titlefontsize=40, tickfontsize=40, framestyle=:box, grid=false, legend=nothing, margin=10Plots.mm, top_margin=0Plots.mm)

		# Plot point-source and Green's function solution
		bar!(subplot=1, x[i:i], f2[i:i],         color=:green,      linecolor=:green,     bar_width=barw, ylims=(0, 1.10), title="\$\\delta(x-$y)\$")
		bar!(subplot=2, x,      u2,              color=:darkgreen,  linecolor=:darkgreen, bar_width=barw, ylims=(0, 0.02), title="\$G(x,$y)\$")

		# Plot full source and full solution
		bar!(subplot=3, x[1:i],     f1[1:i],     color=:blue,      linecolor=:blue,       bar_width=barw, ylims=(0, 1.10), title="\$ \\hat{L}\\,(x) u(x) = f(x < $y) \$")
		bar!(subplot=3, x[i+1:end], f1[i+1:end], color=:lightgrey, linecolor=:lightgrey,  bar_width=barw, ylims=(0, 1.10))
		bar!(subplot=4, x,          u1,          color=:lightgrey, linecolor=:lightgrey,  bar_width=barw, ylims=(0, 0.06))
		bar!(subplot=4, x,          u,           color=:darkblue,  linecolor=:darkblue,   bar_width=barw, ylims=(0, 0.06), title="\$ u(x) = {\\int}_{0}^{$y} \\! f(x') \\, G(x,x') \\, \\mathrm{d} x' \$")
	end

	mp4(anim, "green.mp4", fps=5)
	run(`ffmpeg -i green.mp4 -vf "fps=10,scale=640:640:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 green.gif`)
end

animate()

Lisanslama

Ben, bu işin telif sahibi, burada işi aşağıdaki lisans altında yayımlıyorum:
w:tr:Creative Commons
atıf benzer paylaşım
Bu dosya, Creative Commons Atıf-Benzer Paylaşım 4.0 Uluslararası lisansı ile lisanslanmıştır.
Şu seçeneklerde özgürsünüz:
  • paylaşım – eser paylaşımı, dağıtımı ve iletimi
  • içeriği değiştirip uyarlama – eser adaptasyonu
Aşağıdaki koşullar geçerli olacaktır:
  • atıf – Esere yazar veya lisans sahibi tarafından belirtilen (ancak sizi ya da eseri kullanımınızı desteklediklerini ileri sürmeyecek bir) şekilde atıfta bulunmalısınız.
  • benzer paylaşım – Maddeyi yeniden karıştırır, dönüştürür veya inşa ederseniz, katkılarınızı orijinal olarak aynı veya uyumlu lisans altında dağıtmanız gerekir.

Altyazılar

Bu dosyanın temsil ettiği şeyin tek satırlık açıklamasını ekleyin.

Bu dosyada gösterilen öğeler

betimlenen

Vikiveri ögesi olmayan bir değer

16 Haziran 2021

image/gif

Dosya geçmişi

Dosyanın herhangi bir zamandaki hâli için ilgili tarih/saat kısmına tıklayın.

Tarih/SaatKüçük resimBoyutlarKullanıcıYorum
güncel21.27, 21 Aralık 202221.27, 21 Aralık 2022 tarihindeki sürümün küçültülmüş hâli640 × 640 (1,69 MB)HersleShow changing source values
17.36, 16 Haziran 202117.36, 16 Haziran 2021 tarihindeki sürümün küçültülmüş hâli640 × 640 (754 KB)HersleReduced size to enable automatic animation
12.48, 16 Haziran 202112.48, 16 Haziran 2021 tarihindeki sürümün küçültülmüş hâli960 × 961 (1,3 MB)HersleCross-wiki upload from en.wikipedia.org

Bu görüntü dosyasına bağlantısı olan sayfalar:

Küresel dosya kullanımı

Aşağıdaki diğer vikiler bu dosyayı kullanır: