Nachgeprüft

Yap, stimmt!


julia> x
-80538738812075974

julia> y
80435758145817515

julia> z
12602123297335631

julia> k = x^3 + y^3 + z^3;

julia> k .== 42
true

Meine Prüfung mit Julia


Mit massivem Einsatz von Computern sei für fast alle Zahlen zwischen 1 und 1000 eine Lösung gefunden, erläutert Krug. Bis vor Kurzem waren nur 14 Zahlen übrig geblieben, „die sich beharrlich einer Darstellung als Summe dreier Kuben erwehrten“. Kuben oder Kubikzahlen sind Zahlen „hoch drei“, die man etwa aus Angaben für Volumen kennt.

65 Jahre nach dem Stellen des ursprünglichen Problems löste Booker dies nun mithilfe von Andrew Sutherland vom Massachusetts Institute of Technology (MIT) und einer Rechnerkapazität über ein Netzwerk, das ungenutzte Leistung von mehr als einer halben Million Heim-PCs nutzt, wie es in einer Mitteilung heißt. Sie lautet: x = -80538738812075974, y = 80435758145817515 und z = 12602123297335631.

42: Mathe-Rätsel nach Jahrzehnten geknackt - WELT



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Ich muss mich mit anderen Rätseln herumschlagen. Die sind aber bei Weitem nicht so rätselhaft wie diese Kubik-Summe = 42.

Aber auch lästig. Bei mir funzt der KDTree aus dem Paket NearestNeighbors
nicht. In der Julia-Box funzt es aber schon.

Deswegen musste ich diesen Schritt zunächst mal überspringen, dafür habe ich mit dem

Example 3: PCA for dimensionality reduction


etwas herumgespielt:

using DataFrames

houses = readtable("houses.csv")

using Plots
plot(size=(500,500),leg=false)

filter_houses = houses[houses[:sq__ft].>0,:]

# Pkg.add("MultivariateStats")
using MultivariateStats

filter_houses[:bnb] = filter_houses[:beds] + filter_houses[:baths]
filter_houses[:ppsqm] = filter_houses[:price] ./ filter_houses[:sq__ft]

# F = filter_houses[[:sq__ft,:price]]
# F = filter_houses[[:sq__ft,:baths]]
# F = filter_houses[[:sq__ft,:beds]]
# F = filter_houses[[:sq__ft,:bnb]]
# F = filter_houses[[:ppsqm,:bnb]]
F = filter_houses[[:price,:bnb]]
F = convert(Array{Float64,2},F)'

M = fit(PCA, F)
y = transform(M, F)
Xr = reconstruct(M, y)

scatter(F[1,:],F[2,:])
scatter!(Xr[1,:],Xr[2,:])


gibt diese Grafiken aus:



F = filter_houses[[:ppsqm,:bnb]]




F = filter_houses[[:sq__ft,:bnb]]


In dem einen habe ich die Quadratmeterpreise errechnet und der Anzahl der Betten + Bäder gegenübergestellt, in dem anderen die gleiche Gegenüberstellung mit Quadratmetern statt Quadratmeterpreisen.


Und hier noch einmal die Preise gegenüber den Quadratmetern:



F = filter_houses[[:sq__ft,:price]]


Etwas weiter verinnerlicht habe ich das Hinzufügen einer Spalte zu einem Dataframe:

filter_houses[:bnb] = filter_houses[:beds] + filter_houses[:baths]
filter_houses[:ppsqm] = filter_houses[:price] ./ filter_houses[:sq__ft]

Ich nehme an, dass
filter_houses[:bnb] = filter_houses[:beds] .+ filter_houses[:baths]

die korrektere Schreibweise ist. Am besten ändere ich das mal in meinem Skript.

Für Spaß versuche ich noch mal diesen Unsinn:

filter_houses[:bnbpsqm] = filter_houses[:bnb] ./ filter_houses[:sq__ft]
F = filter_houses[[:price,:bnbpsqm]]

Das bringt mir das folgende Diagramm:


Und auch diesen Quatsch darf es noch geben:

filter_houses[:sqmpbnb] = filter_houses[:sq__ft] ./ filter_houses[:bnb]
F = filter_houses[[:sqmpbnb,:price]]

Zeigt:





So isses wohl. Woll?


Kommentare

Beliebte Posts aus diesem Blog

·

Es brennt.

Bye, bye Nord Stream 2!