Photon redshift for Schwarzschild black holes

       2 G M
 Rs = ------- 

                R1 (R2 - Rs)
 f1 = f2 sqrt[ -------------- ]
                R2 (R1 - Rs)

       f2 - f1
  z = ---------

 Where Rs = Schwarzschild radius 
        M = black hole mass
        G = gravitational constant
        c = speed of light in vacuum
       f1 = observed frequency
       R1 = observer distance from singularity (ie. center of mass of the black hole), > Rs
       f2 = emitted frequency 
       R2 = emitter distance from singularity, > Rs
        z = redshift
      [-z = blueshift]

 Calculated in two phases,
 phase 1:  Photon redshift from different emitter distances as observed at R1.
 Emitter starts at 1e12 meters away from the black hole, and approaches
 all the way to 1e-24m (billionth of a proton radius, or so).
 For each emitter distance, observed frequency [Hz] and redshift [dimensionless] are displayed.

 phase 2:  Photon redshift from selected emitter distance at different observer distances.
 Observer starts at 1 meter away from the event horizon, and gains distance
 up the decades all the way to 1e18m (>100ly)
 For each observer distance, observed frequency [Hz] and redshift [dimensionless] are displayed.

 Input as optional GET parameters [with default]:
        M = mass in Msols [1]
       R1 = observer distance in meters [1.49597871e11]
       f2 = emitted frequency in Hertz' [1e20]
        d = emitter distance from event horizon in phase 2 in meters [0.001]
   DIGITS = request more decimal places for calculations [128]


       Solar mass black hole observed from Earth:
         Same but with an emitted visible photon:
                                 Sgr A* from 1au:
           Gargantua from 3au (~Miller's planet):
      10 Sols & emit from 1m above EH in phase 2:
                Msol, visible, emitted from Rsol:
Solar mass observed from Venus, emit a microwave:

                ESA 360° black hole visualisation

Mass M = 4100000 Msol
Schwarzschild radius Rs = 0.080964578463818 a.u. (12112128.5646km)

Phase 1:  emitter moves towards event horizon
Emission distance R2 = Rs + d (variable)
Observer distance R1 = 1.495979e+11m
Emitted frequency f2 = 1.0E+20Hz

    d [m]          f1 [Hz]        z 
1.000000e+12	 1.036859e+20	-3.554840e-2 (-0.04)
1.000000e+11	 9.851618e+19	1.506166e-2 (0.02)
1.000000e+10	 7.014853e+19	4.255465e-1 (0.43)
1.000000e+9	 2.880695e+19	2.471385e+0 (2.47)
1.000000e+8	 9.439265e+18	9.594045e+0 (9.59)
1.000000e+7	 2.996018e+18	3.237764e+1 (32.38)
1.000000e+6	 9.477760e+17	1.045102e+2 (104.51)
1.000000e+5	 2.997242e+17	3.326400e+2 (332.64)
1.000000e+4	 9.478147e+16	1.054058e+3 (1054.06)
1.000000e+3	 2.997254e+16	3.335387e+3 (3335.39)
1.000000e+2	 9.478151e+15	1.054958e+4 (10549.58)
1.000000e+1	 2.997255e+15	3.336287e+4 (33362.87)
1.000000e+0	 9.478151e+14	1.055048e+5 (105504.81)
1.000000e-1	 2.997255e+14	3.336377e+5 (333637.65)
1.000000e-2	 9.478151e+13	1.055057e+6 (1055057.06)
1.000000e-3	 2.997255e+13	3.336386e+6 (3336385.55)
1.000000e-4	 9.478151e+12	1.055058e+7 (10550579.64)
1.000000e-5	 2.997255e+12	3.336386e+7 (33363864.46)
1.000000e-6	 9.478151e+11	1.055058e+8 (105505805.39)
1.000000e-7	 2.997255e+11	3.336387e+8 (333638653.55)
1.000000e-8	 9.478151e+10	1.055058e+9 (1055058062.86)
1.000000e-9	 2.997255e+10	3.336387e+9 (3336386544.51)
1.000000e-10	 9.478151e+9	1.055058e+10 (10550580637.56)
1.000000e-11	 2.997255e+9	3.336387e+10 (33363865454.11)
1.000000e-12	 9.478151e+8	1.055058e+11 (105505806384.56)
1.000000e-13	 2.997255e+8	3.336387e+11 (333638654550.10)
1.000000e-14	 9.478151e+7	1.055058e+12 (1055058063854.59)
1.000000e-15	 2.997255e+7	3.336387e+12 (3336386545510.06)
1.000000e-16	 9.478151e+6	1.055058e+13 (10550580638555.02)
1.000000e-17	 2.997255e+6	3.336387e+13 (33363865455109.56)
1.000000e-18	 9.478151e+5	1.055058e+14 (105505806385558.59)
1.000000e-19	 2.997255e+5	3.336387e+14 (333638654551105.62)
1.000000e-20	 9.478151e+4	1.055058e+15 (1055058063855596.50)
1.000000e-21	 2.997255e+4	3.336387e+15 (3336386545511056.00)
1.000000e-22	 9.478151e+3	1.055058e+16 (10550580638555964.00)
1.000000e-23	 2.997255e+3	3.336387e+16 (33363865455110560.00)
1.000000e-24	 9.478151e+2	1.055058e+17 (105505806385559648.00)

Phase 2:  observer moves away from the horizon
Emission distance R2 = Rs + 1.000000e-3m
Observer distance R1 = variable
Emitted frequency f2 = 1.0E+20Hz

R1 = Rs + [m]      f1 [Hz]        z 
1.000000e+0	3.162278e+18	30.62
1.000000e+1	1.000000e+18	99.00
1.000000e+2	3.162278e+17	315.23
1.000000e+3	1.000000e+17	999.00
1.000000e+4	3.162279e+16	3161.28
1.000000e+5	1.000004e+16	9998.96
1.000000e+6	3.162408e+15	31620.47
1.000000e+7	1.000413e+15	99957.74
1.000000e+8	3.175305e+14	314929.38
1.000000e+9	1.040462e+14	961110.20
1.000000e+10	4.272726e+13	2340425.25
1.000000e+11	3.042398e+13	3286879.67
1.000000e+12	2.890707e+13	3459360.29
1.000000e+13	2.875098e+13	3478141.60
1.000000e+14	2.873532e+13	3480036.60
1.000000e+15	2.873376e+13	3480226.27
1.000000e+16	2.873360e+13	3480245.24
1.000000e+17	2.873358e+13	3480247.14
1.000000e+18	2.873358e+13	3480247.33
1.000000e+19	2.873358e+13	3480247.35

Bonus GET parameters for controlling the loops: p1s = phase 1 loop start, 'outerspace', f.e. 1e24 p1d = phase 1 loop step divider, f.e. 10 or 1e1 (must be > 1) p1e = phase 1 loop end, ~event horizon, f.e. 1e-32 p2s = phase 2 loop start, ~event horizon, f.e. 1e-24 p2d = phase 2 loop step multiplier, f.e. 10 or 1e1 p2e = phase 2 loop end, 'outerspace', f.e. 1e32 Input is handled via PHPs sprintf, which limits numerical range for mass/distance to about 53 decades; the proton mass divided by solar mass is < 1e-57, and therefore proton horizon is intractable (until I maybe fix it). Example: Creative Commons Attribution by jussi.kantola @ 2017 Visualizations by Professor Andrew Hamilton and used with permission. No guarantees on accuracy or correctness of the results. source code.