The result of the previous post should look something like this:
3D Charge Simulator
Paste the code at the end of this post here:
https://www.beautifulmathuncensored.de/static/GlowScript/GlowScript.html
And press “Run”.
Edit “pos” (position), “velocity”, “charge” and “mass” parameters to simulate a different set of charged particles.
Add a sphere with all the parameters (followed by a “,”) to add an additional charged particle to the simulation.
I hope people will play around and have fun!
(If you have questions, you can ask in the comments.)
Code:
# from math import * # from visual import * # from visual.graph import * from vpython import * # import vpython scene.fullscreen = True G = 10 # edit initial conditions here ########## spheres = [ sphere(pos=vector(0,0,0),radius =6,color=color.red,charge=1000,mass=7200,velocity=vector(0,0,0),a = vector(0,0,0),trail=curve(color=color.red)), sphere(pos=vector(0,100,-1),radius=2,color=color.blue,charge=-1,mass=1,velocity=vector(10,0,0),a=vector(0,0,0),trail=curve(color=color.blue)), #sphere(pos=vector(0,12,0),radius=.08,color=color.green,mass=sqrt(4),velocity=vector(1.2,0,0.6),a=vector(0,0,0),trail=curve(color=color.green)), sphere(pos=vector(0,100,1),radius=2,color=color.white,charge=-1,mass=1,velocity=vector(-10,0,0),a=vector(0,0,0),trail=curve(color=color.white)), #sphere(pos=vector(0,28,0),radius=.4,color=color.orange,mass=sqrt(80),velocity=vector(0.7,0,0.4),a=vector(0,0,0),trail=curve(color=color.orange)), #sphere(pos=vector(0,32,0),radius=0.2,color=color.white,mass=-sqrt(10),velocity=vector(1.5,0,0.4),a=vector(0,0,0),trail=curve(color=color.white)) ] #print(spheres[0].a) #print(len(spheres)) def acceleration1on2(sphere2,sphere1): r = sphere2.pos - sphere1.pos r_mag = mag(r) normal_r = norm(r) g = ((G*sphere1.charge*sphere2.charge)/pow(r_mag,2))/sphere2.mass*normal_r #print(g) return g t = 0 dt = .01 while 1: rate(100) for i in spheres: i.a = vector(0,0,0) soi = vector(0,0,0) for j in spheres: if i!=j: i.a = i.a + acceleration1on2(i,j) for i in spheres: #print(i.velocity) i.velocity = i.velocity + i.a *dt i.pos = i.pos+i.velocity*dt #print(i.a) i.trail.append(pos=i.pos) scene.center=vector(spheres[0].pos.x,spheres[0].pos.y,spheres[0].pos.z) # print(i.a)
New number set
Def.: |H is the set of all nested hyperoperation and inverse-hyperoperation expressions with the natural numbers (without 0) as base arguments.
Hyperoperation Notation LaTeX
Result:
inverse_hyperoperator_arithmetic
Source:
\documentclass[]{article}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{listings}
\newcommand{\HO}[1]{%
\begin{tikzpicture}[#1]%
\draw (0,1.3ex) — (3ex,1.3ex);%
\draw (1.5ex,1ex) — (1.5ex,1.6ex);%
\end{tikzpicture}%
}
\newcommand{\IHO}[1]{%
\begin{tikzpicture}[#1]%
\draw (0,0.4ex) — (3ex,0.4ex);%
\draw (1.5ex,0.025ex) — (1.5ex,0.05ex);%
\end{tikzpicture}%
}
\begin{document}
\section{Notation}
\subsection{Hyperoperation}
\begin{equation}
a+b = a {\overset{1}{\HO{scale=2}}} b
\end{equation}
\begin{equation}
\label{hyperoperator}
a {\overset{n}{\HO{scale=2}}} a {\overset{n}{\HO{scale=2}}} … a = a {\overset{n+1}{\HO{scale=2}}} b
\end{equation}
\subsection{Inverse-hyperoperation}
\begin{equation}
c \overset{1}{\IHO{scale=2}} b =c-b
\end{equation}
\begin{equation}
\label{hyperoperator}
c {\overset{n}{\IHO{scale=2}}} b = a
\end{equation}
\end{document}
Wiederholungsrechenzeichen in Python
# -*- coding: utf-8 -*- # Wiederholungsrechenzeichen alias Metaoperatoren alias Hyperoperatoren mit Invers #Logarithmus nimmt 1. Argument des Exponentials und gibt 2. Argument zurück. #Mit 0 kann es aber noch nicht so gut umgehen, also nur "einfache" Zahlen (positiv "natürlich"). #log_1(1) gibt 0 aus, was als Fehlermeldung zu werten ist. #Meta-Operator n-ter Stufe def MO(a,n,b): #a (|^n) b r=a if (n<1): r+=1 if (n==1): r=a+b if (n==2): r=a*b if (n==3): r=a**b if (n>3): for i in range(1,b): #b-1 mal, also z.B.: a°a°a mit b=3, dann 2-mal °a ausführen r=MO(a,n-1,r) #a und r vertauscht damit bei Exponential "unten angebaut" wird #print r #print "MO Ergebnis="+str(r) return r #Inverser Meta-Operator n-ter Stufe def IMO(r,n,l): # r (|v n) l z=0 if (n<1): z=r-1 if (n==1): z=r-l if (n==2): while (r>0): r=r-l z+=1 #print z #print r if (n==3): while (r>1): r=r/l z+=1 #print z #print r if (n>3): while (r>1): r=IMO(r,n-1,l) z+=1 #print z #print r return z #Test #jetzt richtig for i in range(1,4): for j in range(1,4): for k in range(1,4): print i,j,k,IMO(MO(i,j,k),j,i)
Wiederholungsrechenzeichenformalismus
Link to Diaspora pod on this domain
Web links on hyperoperation
Wiederholungsrechenzeichen
Fangen wir ganz einfach, intuitiv und doch “philosophisch” an:
Ein Mensch sieht einen Baum. Dann sieht er noch einen Baum, der eigentlich etwas anders ist. Diese Unterschiede sind unserem Protagonisten aber “gleichgültig”. Für ihn sind beide Bäume “gleich”. Es sind beides “Bäume”.
Mit dieser Grundvoraussetzung der subjektiven Gleichheit von “Objekten”, kann er anfangen zu “zählen”:
Ein Baum, Zwei Bäume, Drei Bäume…
Dabei spielt es keine Rolle, welche Art von Objekten er zählt. Sollte er beispielsweise feststellen, dass 2 Bäume links und 3 Bäume rechts insgesamt 5 Bäume ergeben, hätte er genau so gut Straßenlaternen verwenden können und wäre zum gleichen Resultat gekommen.
2+3=5 ist ein abstraktes Ergebnis, dass er auf alle Objekte anwenden und beliebig oft wiederverwenden kann.
Sagen wir unser “Held”, weiß nur wie man zählt: Er hat Symbole auswendig-gelernt, die er nacheinander den jeweiligen Objekten zuordnet.
Wie können wir ihm nun ganz abstrakt das Rechenzeichen “+” erklären? Naja, wir sagen, das Zeichen weist ihn an, so zu tun als hätte er schon bis zur Zahl links davon gezählt und müsse entsprechend der Zahl rechts davon weiterzählen.
Die rechte Zahl zählt also Handlungen – auch das sind Objekte. Dass die Zahlen links und rechts von Plus vertauscht werden können, ist dann bereits ein kleiner mathematischer Satz.
Zusammenfassend können wir also sagen das Rechenzeichen + zählt Wiederholungen – nämlich die der Hochzählhandlung.
Nun ist es kein großes Geheimnis, dass Mal eingeführt wird, indem man Plus wiederholt. Man wiederholt eine Wiederholung. Das ist also sozusagen bereits die zweite “Metastufe”.
Entsprechend kann man “Hoch” und weiter Rechenzeichen einführen. Üblicherweise werden diese Operationen “Hyperoperatoren” genannt. Man könnte sie auch “Metaoperatoren” nennen – oder eben
“Wiederholungsrechenzeichen”.