<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lvdgraaff</id>
		<title>explain xkcd - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lvdgraaff"/>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php/Special:Contributions/Lvdgraaff"/>
		<updated>2026-04-18T21:54:02Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:2537:_Painbow_Award&amp;diff=220338</id>
		<title>Talk:2537: Painbow Award</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:2537:_Painbow_Award&amp;diff=220338"/>
				<updated>2021-11-04T13:34:41Z</updated>
		
		<summary type="html">&lt;p&gt;Lvdgraaff: further reads&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Please sign your posts with ~~~~ and don't delete this text. New comments should be added at the bottom.--&amp;gt;&lt;br /&gt;
LOL [[Special:Contributions/127.0.0.1|127.0.0.1]] 19:49, 3 November 2021 (UTC)&lt;br /&gt;
:f!rst p0st [[Special:Contributions/172.69.170.53|172.69.170.53]] 19:50, 3 November 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Mein gott, this color palette IS actually painful to look at.  [[Special:Contributions/172.70.178.161|172.70.178.161]] 20:02, 3 November 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
The caption has changed since the image was captured (&amp;quot;color gradient&amp;quot; changed to &amp;quot;color scale&amp;quot;), we need to pull the new comic. [[User:Barmar|Barmar]] ([[User talk:Barmar|talk]]) 20:08, 3 November 2021 (UTC)&lt;br /&gt;
:I updated the file, although the changes haven't taken effect yet. [[User:Theusaf|theusaf]] ([[User talk:Theusaf|talk]]) 20:37, 3 November 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Does anyone know what Lambda is often used for in physics (or other sciences) as it relates to Theta, where Theta is phase?  [[Special:Contributions/127.0.0.1|127.0.0.1]] 20:48, 3 November 2021 (UTC).&lt;br /&gt;
:I'm surprised YOU don't know. {{w|Wavelength}}. -- [[User:Hkmaly|Hkmaly]] ([[User talk:Hkmaly|talk]]) 22:38, 3 November 2021 (UTC)&lt;br /&gt;
::Why are you talking to yourself? [[Special:Contributions/127.0.0.1|127.0.0.1]] 21:07, 3 November 2021 (UTC).&lt;br /&gt;
::Wouldn't that make this chart self-referential, in that each color output at any particular x,y coordinate can somehow be measured in terms of wavelength and phasing (red shift)? [[Special:Contributions/127.0.0.1|127.0.0.1]] 21:17, 3 November 2021 (UTC).&lt;br /&gt;
:::I think you're responding to my comment (it seems to be above it, though?). Not sure exactly what you mean by self-referential either, but I suppose somewhat. Assuming this is a black body curve, the emission spectra has a peak at the point where the graph shows &amp;quot;peak&amp;quot; intensity; this wavelength is based off the temperature of the black body itself (see Wien's displacement law), whilst the redshift is based on the relative velocity of an observer &amp;amp; the black body (i.e. a star, usually).--[[User:Sapphirejulia|Sapphirejulia]] ([[User talk:Sapphirejulia|talk]]) 23:28, 3 November 2021 (UTC)&lt;br /&gt;
:If I had to guess (as an &amp;quot;armchair&amp;quot; astronomer), it seems to be similar to that of a black body (Planck curve) but also showing the phase. A phase shift to me means change in wavelength, i.e. Delta lambda / lambda, but that's normally denoted by the z-parameter (see Wikipedia's redshift article). There's also a phase angle listed under astronomy on Wikipedia, which could relate but never heard of it before. --[[User:Sapphirejulia|Sapphirejulia]] ([[User talk:Sapphirejulia|talk]]) 23:28, 3 November 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Scientific publications aren't the only contenders for the award.  I see a Painbow during almost every TV weather report.  Captured an image of one of them, hope it displays correctly.&lt;br /&gt;
[[file:WeatherBow.png|thumb|center|550px|alt=Painbow used by a TV weather forecast]]&lt;br /&gt;
&lt;br /&gt;
[[User:JohnB|JohnB]] ([[User talk:JohnB|talk]]) 22:20, 3 November 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
This subreddit has a lot of these scales: https://www.reddit.com/r/dataisugly [[User:Fabian42|Fabian42]] ([[User talk:Fabian42|talk]]) 00:03, 4 November 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
When I'm developing a continuum of colours on a scale (or scale-like) system I tend to try one of two things:&lt;br /&gt;
* Hue-based angle, going from one hue-angle to another hue-angle (usually normalised for fullest saturation) at no more than ⅚ths of a rotation between, to keep maximum looking too like minimum, and choosing the endpoints and via-point to be meaningful (e.g. red to green via blue, or magenta to yellow via cyan - whatever best works). &lt;br /&gt;
* A series of connected straight-lines through the RGB colour-cube, without too much criss-crossings, again with meaning. I'll make that more complex if necessary, e.g. for eightmap of the Earth, deepest depth #000 (or #002ish, maybe) to #0FF at the minimum depth, linearly #0(n)(n) for n inversely normalised to depth; quickly use #0FF-&amp;gt;#FF8-&amp;gt;#0F0 across the intertidal range; then from lowest elevations to highest #0F0 shades to something like #A50 (or maybe a grey) then onward to #FFF for the top. All done with simple gradient-based formulae linking height(/depth) directly to whatever changing component there is.&lt;br /&gt;
...though I don't usually thing about dichromatic vision (let alone monochromatic), in either case, so I may indeed make things difficult for some people. [[Special:Contributions/172.70.85.249|172.70.85.249]] 01:19, 4 November 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
At the moment it states: &amp;quot;The red then turns back into green as the intensity increases further.&amp;quot; Is there something I misunderstands or is the intensity not decreasing when going from top to bottom? I would have said &amp;quot;when the intensity decreases further&amp;quot; --[[User:Kynde|Kynde]] ([[User talk:Kynde|talk]]) 08:18, 4 November 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
I just like to share some great 'further reads' on scientific colormaps for the ones interested. A must watch on this topic is the talk by [https://www.youtube.com/watch?v=xAoljeRJ3lU Nathaniel Smith and Stéfan van der Walt on the development of matplotlibs colormap]. Apart from very entertaining, it has been the best introduction to color theory I've ever seen.&lt;br /&gt;
If you're more into scientific literature, just get directly to the [https://www.nature.com/articles/s41467-020-19160-7?s=09 Nature article explaining proper color maps]. Fabio Crameri, the author of this article is advocating good colormap practice and also has a [https://www.fabiocrameri.ch/colourmaps/ website providing scientific colormaps] that I found very beneficial. [[User:Lvdgraaff|Lvdgraaff]] ([[User talk:Lvdgraaff|talk]]) 13:34, 4 November 2021 (UTC)&lt;/div&gt;</summary>
		<author><name>Lvdgraaff</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:2435:_Geothmetic_Meandian&amp;diff=207527</id>
		<title>Talk:2435: Geothmetic Meandian</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:2435:_Geothmetic_Meandian&amp;diff=207527"/>
				<updated>2021-03-11T10:42:47Z</updated>
		
		<summary type="html">&lt;p&gt;Lvdgraaff: New Python code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Please sign your posts with ~~~~ and don't delete this text. New comments should be added at the bottom.--&amp;gt;&lt;br /&gt;
Oh, this one's good. Just checked in (no, I wasn't hovering over the refresh button, my first visit today!) and one glance had me in paroxysms of laughter. But how to explain it? Gonna have to think about that. [[Special:Contributions/141.101.98.96|141.101.98.96]] 01:12, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
I made a really bad spreadsheet to understand better how it works: https://docs.google.com/spreadsheets/d/1fqmHwDmirJrsKPdf94PutFDw31DMAYxNeR7jef1jneE/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
Someone fix my ''awful''  transcript edits please. --[[User:Char Latte49|Char Latte49]] ([[User talk:Char Latte49|talk]]) 02:31, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Seeing the Python added to the Explanation, try this Perl (typed straight here, so not tested)... &lt;br /&gt;
 ## Your prefered variations of &amp;quot;#!/usr/bin/perl&amp;quot;, &amp;quot;use strict;&amp;quot; and &amp;quot;use warnings;&amp;quot; here! ##&lt;br /&gt;
 sub F { my (@vals)=@_; my $invVals=1/int(@vals);&lt;br /&gt;
  my ($geo,$arith,$med)=(1); # Only defining $geo, so first *= works correctly!&lt;br /&gt;
  while (@vals) { my($lo,$hi)=(shift @vals,pop @vals); # $hi may be undef - this is intended!&lt;br /&gt;
   $arith+=$lo; $geo*=$lo; unless (defined $hi) {  $med =  $lo;     last }&lt;br /&gt;
   $arith+=$hi; $geo*=$hi; unless (@vals)       { ($med)=F($lo,$hi)      }&lt;br /&gt;
  }&lt;br /&gt;
  return ($arith*$invVals, $geo**$invVals, $med);&lt;br /&gt;
 }&lt;br /&gt;
 sub GMDN { my (@vals)=sort @_; my $lim=10**(-5); # Adjust $lim to taste...&lt;br /&gt;
   return &amp;quot;Error: No vals!&amp;quot; unless  @vals; # Catch!&lt;br /&gt;
   return $vals[0]          unless ($vals[$#vals]-$vals[0]) &amp;gt; $lim;&lt;br /&gt;
   return GMDM(F(@vals));&lt;br /&gt;
 }&lt;br /&gt;
 my @test=(1,1,2,3,5);&lt;br /&gt;
 print &amp;quot;Values:              @test\nGeothmetic Meandian: &amp;quot;.GMDN(@test).&amp;quot;\n&amp;quot;;&lt;br /&gt;
...debugged in my head, so probably fatally flawed but easily fixed/adapted anyway. [[Special:Contributions/141.101.99.109|141.101.99.109]] 03:04, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Why so complicated?&lt;br /&gt;
 perl -e 'use strict; use warnings; sub F { my ($s,$p) = (0,1); my @srt = sort {$a&amp;lt;=&amp;gt;$b} @_; for (@_) { $s += $_; $p *= $_; } return ($s/@_,$p**(1/@_),$srt[$#_/2]); } sub Gmdn { print join(&amp;quot;, &amp;quot;,@_=F(@_)),&amp;quot;\n&amp;quot; for 0..20; return @_; } print join(&amp;quot;, &amp;quot;,Gmdn(1,1,2,3,5)),&amp;quot;\n&amp;quot;;'&lt;br /&gt;
(With interim results) SCNR -- [[User:Xorg|Xorg]] ([[User talk:Xorg|talk]]) 03:18, 11 March 2021 (UTC)&lt;br /&gt;
:''I'' can read your version (and I see you do explicit {$a&amp;lt;=&amp;gt;$b}, which indeed ''may'' be necessary in mine for real use, along with additional sanity checks, I will check later) but I wanted to make mine neat, and ''slightly'' tricksy in implementation, but still not quite so entirely obfuscated to the more uninitiated. TIMTOWTDI, etc, so I like your (almost) bare-bones version too. ;)&lt;br /&gt;
:(Is 20 cycles enough to converge in sufficiently extreme cases? Won't give &amp;quot;Too deep&amp;quot; error, though, even  if it takes at least that long. There's a definite risk that mine might, as written.) [[Special:Contributions/141.101.99.229|141.101.99.229]] 03:45, 11 March 2021 (UTC)&lt;br /&gt;
::Given the lack of precision in Randall's example usage, I think 20 cycles ought to be enough for everyone ;-P. I'm trying to prove that the interval's size has to shrink by somewhat close to a factor of 1/2 every cycle, but it's tricky and it's late. If I can assume a factor of 1/2 in the long run, 64 iterations should pin down a 64-bit float.&lt;br /&gt;
::I actually didn't try to obfuscate, I was just too lazy to type more ;-). Otherwise I might have left out the &amp;quot;return&amp;quot;s and passing parameters at all. -- [[User:Xorg|Xorg]] ([[User talk:Xorg|talk]]) 04:21, 11 March 2021 (UTC)&lt;br /&gt;
:::I find the one-liner more readable: it's straightforward and pretty minimal. For what its worth, here's my version: &amp;lt;pre&amp;gt;perl -MList::Util=sum,product -E 'sub F { (sum @_)/@_, (product @_)**(1/@_), (sort { $a &amp;lt;=&amp;gt; $b } @_)[$#_/2] } $, = &amp;quot; &amp;quot;; say @v = @ARGV; say @v = F(@v) for 1..30' 1 1 2 3 5&amp;lt;/pre&amp;gt; 30 iterations is enough for the numbers to display identically on this system (to 14 decimal places). I think it's even cleaner in Raku (formerly Perl 6): &amp;lt;pre&amp;gt;raku -e 'sub F(@d) { @d.sum/@d, [*](@d)**(1/@d), @d.sort[@d/2] }; say my @v = +«@*ARGS; say @v = F(@v) for 1..33' 1 1 2 3 5&amp;lt;/pre&amp;gt; On this system, Rakudo yields an additional decimal place, which takes another 3 iterations to converge.  [[User:Smylers|Smylers]] ([[User talk:Smylers|talk]]) 06:53, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Side-thought: is GMDN (nowhere near as logical an ETLA contraction of the title term as, say, 'GMMD' or 'GTMD') actually an oblique reference to the GNDNs as popularised/coined by Trek canon? Worth a citation/Trivia? [[Special:Contributions/162.158.158.97|162.158.158.97]] 04:12, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
Besides of nerdgasm is there some reason why the program code is relevant for the explanation? [[User:Elektrizikekswerk|Elektrizikekswerk]] ([[User talk:Elektrizikekswerk|talk]]) 08:55, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Proof of convergence ==&lt;br /&gt;
&lt;br /&gt;
Can any of you come up with a mathematical proof that repeated application of F on a set of (say) positive real numbers is guaranteed to converge toward a single real number, i.e. that the GMDN of a set of positive real numbers is well-defined? &lt;br /&gt;
&lt;br /&gt;
One observation I've made is that if you consider that maximum and minimum numbers in the original set to be x1 and xn (without loss of generality), something we know for sure is that AM(x1, ..., xn), GM(x1, ..., xn) and Median(x1, ..., xn) are all at least x1 and at most xn that is to say...&lt;br /&gt;
&lt;br /&gt;
x1 &amp;lt;= AM(x1, ..., xn), GM(x1, ..., xn), Median(x1, ..., xn) &amp;lt;= xn&lt;br /&gt;
&lt;br /&gt;
So range(AM(x1, ..., xn), GM(x1, ..., xn), Median(x1, ..., xn)) is necessarily &amp;lt;= range(x1, ..., xn). &lt;br /&gt;
&lt;br /&gt;
And given that we know that unless x1, ..., xn are all equal, that x1 &amp;lt; AM(x1, ..., xn) &amp;lt; xn, we have an even stricter result (unless x1, ..., xn are all equal) that is &lt;br /&gt;
range(AM(x1, ..., xn), GM(x1, ..., xn), Median(x1, ..., xn)) &amp;lt; range(x1, ..., xn). &lt;br /&gt;
&lt;br /&gt;
So, it's clear that range(x1, ..., xn) &amp;gt; range(F(x1, ..., xn)) &amp;gt; range(F(F(x1, ..., xn))) &amp;gt; range(F(F(F(x1, ..., xn)))) &amp;gt; ... and it's also clear that all of these ranges are &amp;gt;= 0. There is a result in number theory that says that any infinite sequence of real numbers which monotonically decreases and is bounded from below converges.&lt;br /&gt;
&lt;br /&gt;
So we know for sure that range(F(F(...F(x1, ..., xn)...))) converges but we still have to show that it converges to 0 to show that the GMDN converges to a single real number.&lt;br /&gt;
&lt;br /&gt;
I'm not sure how to proceed. Does anyone have any ideas?&lt;br /&gt;
&lt;br /&gt;
EDIT:&lt;br /&gt;
I just noticed that unless x1, ..., xn are all equal, AM(x1, ..., xn) is at least ((n-1)/n) * range(x1, ..., xn) away from both x1 and xn. So not only do we have that range(x1, ..., xn) &amp;gt; range(F(x1, ..., xn)) from before, but we also have that ((n-1)/n) * range(x1, ..., xn) &amp;gt;= range(F(x1, ..., xn)). This guarantees that that the range falls exponentially on repeated applications of F. So it's certain that the the range ultimately converges to 0, and hence that the GMDN is well-defined.&lt;br /&gt;
&lt;br /&gt;
It might be a good idea for someone to concretely present this idea as a proof on Page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/172.69.135.44|172.69.135.44]] 05:07, 11 March 2021 (UTC) Anirudh Ajith&lt;br /&gt;
&lt;br /&gt;
:That doesn't quite work as it stands, since proving AM is that distance away does not say anything about the other two averages. I think it's true, but a little more rigour is required. [[Special:Contributions/141.101.98.120|141.101.98.120]] 09:17, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
When trying this myself I first arrived at 2.082, not 2.089. What threw me off was the incomplete formula for the median, which only works with sorted lists. The three values returned by F(...) aren't necessarily sorted.&lt;br /&gt;
[[Special:Contributions/141.101.76.194|141.101.76.194]] 09:49, 11 March 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
I'd like to add a somewhat more compact Python implementation based on the numpy module.&lt;br /&gt;
 import numpy as np&lt;br /&gt;
 &lt;br /&gt;
 def F(x):&lt;br /&gt;
    return np.mean(x), np.exp(np.log(x).mean()), np.median(x)&lt;br /&gt;
 &lt;br /&gt;
 def GMDN(x, tolerance=1e-6):&lt;br /&gt;
    while np.std(x) &amp;gt; tolerance:&lt;br /&gt;
        x = F(x)&lt;br /&gt;
    return x[0]&lt;br /&gt;
 &lt;br /&gt;
 gmdn = GMDN([1, 1, 2, 3, 5])&lt;br /&gt;
 print(gmdn)&lt;br /&gt;
--[[User:Lvdgraaff|Lvdgraaff]] ([[User talk:Lvdgraaff|talk]]) 10:42, 11 March 2021 (UTC)&lt;/div&gt;</summary>
		<author><name>Lvdgraaff</name></author>	</entry>

	</feed>