scieee AI-readable full text Open interactive document viewer

Fermion–Boson Duality (FBD) Theory of Galactic Rotation Curves: A Statistical–Mechanical Alternative to the Dark Matter Hypothesis

Maruyama, Hirokazu

Abstract

This deposit contains materials for the FBD theory of galactic rotation curves, which explains the observed flat rotation profiles of spiral galaxies without invoking dark matter. The framework extends Fermion--Boson Duality (originally formulated for the QCD effective potential) to galactic scales by introducing a distance-dependent transition function $T_{\mathrm{gal}}(r)$. This function interpolates between a Newtonian regime at small radii and an enhanced-gravity regime at large radii, with the transition radius $r_{\mathrm{fb}}=\sqrt{GM/a_0}$ set by the MOND acceleration scale $a_0 \approx 1.2\times10^{-10}\,\mathrm{m\,s^{-2}}$. The model reproduces the Tully--Fisher relation $v^4 \propto M$, yields an asymptotic speed $v_{\infty}=(GMa_0)^{1/4}$, and is mathematically equivalent to MOND in the deep-MOND limit while offering a distinct statistical--mechanical interpretation.

Full text

4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 I n [] : = (* =========================================================================== = (* FBD Galaxy Rotation Curve Theory -Mathematica Code (Version 1 -English) *) (* A Statistical-Mechanical Interpretation of Galaxy Rotation Curves *) (* Based on Fermion-Boson Duality *) (* Author: Hirokazu Maruyama *) (* Date: 2025 *) (* =========================================================================== = (* Part 1: Physical Constants and Parameter Definitions *) (* =========================================================================== = ClearAll["Global`*"]; (* Physical constants (SI units) *) G0 =6.674 *10^(-11);(* Newton's gravitational constant [m^3 kg^-1 s^-2] *) c=2.998 *10^8; (* Speed of light [m/s] *) Msun =1.989 *10^30; (* Solar mass [kg] *) kpc =3.086 *10^19; (* 1 kpc [m] *) a0MOND =1.2 *10^(-10);(* MOND acceleration scale [m/s^2] *) (* Galaxy parameters (Milky Way reference) *) Mgalaxy =1.0 *10^11 *Msun; (* Galaxy mass [kg] *) rFB =10.0 *kpc; (* Transition radius [m] *) lambdaGal =2.0 *kpc; (* Transition smoothness [m] *) (* Scales for dimensionless quantities *) rScale =kpc; (* Distance scale *) vScale =1000; (* Velocity scale [m/s]=1 km/s*) Print["=== Physical Constants and Parameters ==="]; Print["G0 =", G0, " m^3 kg^-1 s^-2"]; Print["Msun =", Msun, " kg"]; Print["Mgalaxy =", Mgalaxy/Msun, " Msun"]; Print["rFB =", rFB/kpc, " kpc"]; Print["a0 (MOND) = ", a0MOND, " m/s^2"]; (* =========================================================================== = (* Part 2: Transition Function Definition *) (* =========================================================================== = (* Galaxy transition function T_gal(r) *) (* r<< rFB: T 1(Newtonian regime) *) (* r>> rFB: T 0(Enhanced gravity regime) *) Tgal[r_, rFB_, lambda_] :=1/(1+Exp[(r-rFB)/lambda]); (* QCD transition function (for comparison) *) (* Note: In Mathematica, E is reserved for Euler's number, so we use 'en' *) Tqcd[en_, Efb_, nu_] :=1/(1+Exp[(en -Efb)/nu]); 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 Print["\n=== Transition Function Plots ==="]; (* Galaxy transition function plot *) plotTgal =Plot[ {Tgal[r*kpc, rFB, lambdaGal], 1 -Tgal[r*kpc, rFB, lambdaGal]}, {r, 0, 30}, PlotStyle {Blue, Red}, PlotLegends {"T_gal(r) [Newton]", "1-T_gal(r) [Enhanced]"}, AxesLabel {"r [kpc]", "Weight"}, PlotLabel "FBD Galaxy Transition Function", GridLines Automatic, Frame True, ImageSize 500 ]; Print[plotTgal]; (* Transition function for different lambda values *) plotTgalLambda =Plot[ Table[Tgal[r*kpc, rFB, lam*kpc],{lam, {1, 2, 3, 5}}], {r, 0, 30}, PlotStyle {Blue, Orange, Green, Red}, PlotLegends {"λ=1 kpc", "λ=2 kpc", "λ=3 kpc", "λ=5 kpc"}, AxesLabel {"r [kpc]", "T_gal(r)"}, PlotLabel "Transition Function: Effect of λ_gal", GridLines Automatic, Frame True, ImageSize 500 ]; Print[plotTgalLambda]; (* =========================================================================== = (* Part 3: Effective Gravitational Potential *) (* =========================================================================== = (* Newtonian potential *) VNewton [r_, M_] := -G0*M/r; (* Enhanced potential (corrected: logarithmic form) *) (* Flat rotation curve v =v_infty is given by this potential *) (* V_enhanced = -v_infty^2 *ln(r/r0)-GM/r*) (* where v_infty = (G*M*a0)^(1/4) *) vInfty[M_] := (G0 *M*a0MOND)^(1/4); VEnhanced [r_, M_] := -vInfty[M]^2 *Log[r/kpc]-G0*M/r; (* Effective potential (FBD convex combination) *) 2 FBD_Galaxy_Rotation_v1_EN.wl 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 VeffGal [r_, M_, rFBval_, lambda_] := Tgal[r, rFBval, lambda]*VNewton[r, M] + (1-Tgal[r, rFBval, lambda])*VEnhanced[r, M]; Print["\n=== Effective Potential Plots ==="]; (* Potential plot (normalized) *) plotPotential =Plot[ { VNewton[r*kpc, Mgalaxy]/(G0*Mgalaxy/kpc), VEnhanced[r*kpc, Mgalaxy]/(G0*Mgalaxy/kpc), VeffGal[r*kpc, Mgalaxy, rFB, lambdaGal]/(G0*Mgalaxy/kpc) }, {r, 1, 50}, PlotStyle {Blue, Red, {Thick, Purple}}, PlotLegends {"V_Newton", "V_Enhanced", "V_eff (FBD)"}, AxesLabel {"r [kpc]", "V / (GM/kpc)"}, PlotLabel "FBD Galaxy Effective Potential", PlotRange {Automatic, {-5, 0}}, GridLines Automatic, Frame True, ImageSize 500 ]; Print[plotPotential]; (* =========================================================================== = (* Part 4: Rotation Curve Calculation (Corrected Version) *) (* =========================================================================== = (* [IMPORTANT CORRECTION] Effective acceleration for flat rotation curves: -Newtonian regime: a =GM/r^2 v=sqrt(GM/r) (Keplerian decline) -Enhanced regime: a =v_infty^2/rv=v_infty (flat) where v_infty = (G*M*a0)^(1/4)is determined by the Tully-Fisher relation *) (* Effective gravitational acceleration (corrected version) *) aeff[r_, M_, rFBval_, lambda_] :=Module[{Tval, aNewton, aEnhanced}, Tval =Tgal[r, rFBval, lambda]; aNewton =G0*M/r^2; (* Correction: aEnhanced gives v=const form *) aEnhanced =vInfty[M]^2/r; Tval*aNewton + (1-Tval)*aEnhanced ]; (* Rotation velocity (from circular orbit condition) *) vRotation[r_, M_, rFBval_, lambda_] :=Sqrt[r*aeff[r, M, rFBval, lambda]]; FBD_Galaxy_Rotation_v1_EN.wl 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 (* Newtonian rotation velocity *) vNewton[r_, M_] :=Sqrt[G0*M/r]; (* MOND rotation velocity (corrected version) *) (* MOND basic equation: μ(a/a0)*a=a_N Simple interpolating function: μ(x)=x/(1+x) Analytical solution: a = [a_N+sqrt(a_N^2 +4*a_N*a0)] / 2 Deep MOND limit (a_N<< a0):asqrt(a_N*a0) Therefore v =sqrt(r*a)(G*M*a0)^(1/4)=const *) vMOND[r_, M_, a0_] :=Module[{aN, aEff}, aN =G0*M/r^2; (* Analytical solution for simple interpolating function *) aEff = (aN +Sqrt[aN^2 +4*aN*a0]) / 2; Sqrt[r*aEff] ]; Print["\n=== Rotation Curve Plots ==="]; (* Display theoretical asymptotic velocity *) Print["Theoretical asymptotic velocity v_infty = (G*M*a0)^(1/4)=", vInfty[Mgalaxy] / Print["(Note: FBD and MOND converge to the same asymptotic velocity)"]; (* Rotation curve comparison plot *) plotRotation =Plot[ { vNewton[r*kpc, Mgalaxy]/1000, vRotation[r*kpc, Mgalaxy, rFB, lambdaGal]/1000, vMOND[r*kpc, Mgalaxy, a0MOND]/1000, vInfty[Mgalaxy]/1000 (* Theoretical asymptotic value *) }, {r, 1, 50}, PlotStyle {{Blue, Dashed},{Thick, Purple},{Red, DotDashed},{Gray, Dotted}}, PlotLegends {"Newton (Kepler)", "FBD", "MOND", "v_∞(theory)"}, AxesLabel {"r [kpc]", "v [km/s]"}, PlotLabel "Galaxy Rotation Curves Comparison", PlotRange {{0, 50},{0, 300}}, GridLines Automatic, Frame True, ImageSize 500, Epilog { Gray, Dashed, Line[{{10, 0},{10, 300}}], Text["r_FB", {11, 280}] } ]; 4 FBD_Galaxy_Rotation_v1_EN.wl 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 Print[plotRotation]; (* Confirmation of flat rotation curve *) Print["\n=== Rotation Velocity Values ==="]; Print["Theoretical asymptotic velocity: v_infty =", vInfty[Mgalaxy]/1000, " km/s"]; Print[""]; Print["Newton:"]; Print["r =5 kpc: v_Newton =", vNewton[5*kpc, Mgalaxy]/1000, " km/s"]; Print["r =10 kpc: v_Newton =", vNewton[10*kpc, Mgalaxy]/1000, " km/s"]; Print["r =20 kpc: v_Newton =", vNewton[20*kpc, Mgalaxy]/1000, " km/s"]; Print["r =30 kpc: v_Newton =", vNewton[30*kpc, Mgalaxy]/1000, " km/s"]; Print["r =50 kpc: v_Newton =", vNewton[50*kpc, Mgalaxy]/1000, " km/s"]; Print[""]; Print["FBD (corrected version):"]; Print["r =5 kpc: v_FBD =", vRotation[5*kpc, Mgalaxy, rFB, lambdaGal]/1000, " km/s" Print["r =10 kpc: v_FBD =", vRotation[10*kpc, Mgalaxy, rFB, lambdaGal]/1000, " km/ s Print["r =20 kpc: v_FBD =", vRotation[20*kpc, Mgalaxy, rFB, lambdaGal]/1000, " km/ s Print["r =30 kpc: v_FBD =", vRotation[30*kpc, Mgalaxy, rFB, lambdaGal]/1000, " km/ s Print["r =50 kpc: v_FBD =", vRotation[50*kpc, Mgalaxy, rFB, lambdaGal]/1000, " km/ s Print[""]; Print["MOND:"]; Print["r =5 kpc: v_MOND =", vMOND[5*kpc, Mgalaxy, a0MOND]/1000, " km/s"]; Print["r =10 kpc: v_MOND =", vMOND[10*kpc, Mgalaxy, a0MOND]/1000, " km/s"]; Print["r =20 kpc: v_MOND =", vMOND[20*kpc, Mgalaxy, a0MOND]/1000, " km/s"]; Print["r =30 kpc: v_MOND =", vMOND[30*kpc, Mgalaxy, a0MOND]/1000, " km/s"]; Print["r =50 kpc: v_MOND =", vMOND[50*kpc, Mgalaxy, a0MOND]/1000, " km/s"]; (* =========================================================================== = (* Part 5: Effective Gravitational Constant Plot *) (* =========================================================================== = (* Effective gravitational constant ratio G_eff/G_N*) GeffRatio[r_, M_, rFBval_, lambda_] := aeff[r, M, rFBval, lambda]/(G0*M/r^2); Print["\n=== Effective Gravitational Constant ==="]; plotGeff =Plot[ GeffRatio[r*kpc, Mgalaxy, rFB, lambdaGal], {r, 1, 50}, PlotStyle {Thick, Purple}, AxesLabel {"r [kpc]", "G_eff /G_N"}, PlotLabel "Effective Gravitational Constant", PlotRange {{0, 50},{0, 6}}, GridLines Automatic, Frame True, ImageSize 500, Epilog { Gray, Dashed, Line[{{0, 1},{50, 1}}], FBD_Galaxy_Rotation_v1_EN.wl 5 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 Line[{{10, 0},{10, 6}}], Text["r_FB", {11, 5.5}] } ]; Print[plotGeff]; (* Effective gravitational constant values *) Print["G_eff/G_N values:"]; Print["r =5 kpc: G_eff/G_N=", GeffRatio[5*kpc, Mgalaxy, rFB, lambdaGal]]; Print["r =10 kpc: G_eff/G_N=", GeffRatio[10*kpc, Mgalaxy, rFB, lambdaGal]]; Print["r =20 kpc: G_eff/G_N=", GeffRatio[20*kpc, Mgalaxy, rFB, lambdaGal]]; Print["r =30 kpc: G_eff/G_N=", GeffRatio[30*kpc, Mgalaxy, rFB, lambdaGal]]; Print["r =50 kpc: G_eff/G_N=", GeffRatio[50*kpc, Mgalaxy, rFB, lambdaGal]]; (* =========================================================================== = (* Part 6: Tully-Fisher Relation Verification (Corrected Version) *) (* =========================================================================== = Print["\n=== Tully-Fisher Relation ==="]; (* Theoretical prediction: v_infty = (G*M*a0)^(1/4) Therefore v^4 ∝M Slope of log(v)vs log(M)is 0.25 *) (* Mass-dependent transition radius *) rFBfromMass[M_] :=Sqrt[G0*M/a0MOND]; (* Asymptotic rotation velocity for different galaxy masses *) (* Theoretical value: directly use v_infty = (G*M*a0)^(1/4) *) vAsymptoticTheory[M_] :=vInfty[M]; (* Numerical value: value at r =5*rFB *) vAsymptoticNumerical[M_] :=Module[{rFBlocal, lambdaLocal}, rFBlocal =rFBfromMass[M]; lambdaLocal =0.2 *rFBlocal; (* λ=0.2 *rFB *) vRotation[5*rFBlocal, M, rFBlocal, lambdaLocal] ]; (* Tully-Fisher plot data (theoretical values) *) massValues = {10^9, 3*10^9, 10^10, 3*10^10, 10^11, 3*10^11, 10^12}*Msun; TFdataTheory =Table[ {Log10[M/Msun], Log10[vAsymptoticTheory[M]/1000]}, {M, massValues} ]; 6 FBD_Galaxy_Rotation_v1_EN.wl 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 TFdataNumerical =Table[ {Log10[M/Msun], Log10[vAsymptoticNumerical[M]/1000]}, {M, massValues} ]; (* Linear fit *) fitTheory =Fit[TFdataTheory, {1, x}, x]; slopeTheory =Coefficient[fitTheory, x]; fitNumerical =Fit[TFdataNumerical, {1, x}, x]; slopeNumerical =Coefficient[fitNumerical, x]; Print["Tully-Fisher slope (theoretical): ", slopeTheory]; Print["Tully-Fisher slope (numerical): ", slopeNumerical]; Print["Expected value (v^4 ∝M): 0.25"]; plotTF =Show[ ListPlot[ {TFdataTheory, TFdataNumerical}, PlotStyle {{PointSize[0.02], Blue},{PointSize[0.015], Red}}, PlotLegends {"Theory: (GMa\[SubScript]0)^(1/4)", "Numerical: v(5r_FB)"} ], Plot[fitTheory, {x, 9, 12}, PlotStyle {Blue, Dashed}], Plot[fitNumerical, {x, 9, 12}, PlotStyle {Red, Dotted}], AxesLabel {"log\[SubScript]10(M/M⊙)", "log\[SubScript]10(v/km s\[SuperScript]-1) PlotLabel "Tully-Fisher Relation (FBD Theory)", PlotRange {{8.5, 12.5},{1.4, 2.8}}, GridLines Automatic, Frame True, ImageSize 500, Epilog { Text[Style["slope =0.25 (v\[SuperScript]4∝M)", 12],{10.5, 1.6}] } ]; Print[plotTF]; (* =========================================================================== = (* Part 7: Structural Comparison with QCD *) (* =========================================================================== = Print["\n=== Structural Comparison with QCD ==="]; (* QCD parameters *) EfbQCD =0.5; (* GeV *) nuQCD =0.1; (* GeV *) sigmaQCD =0.18; (* GeV^2 *) alphaF =0.3; alphaB =0.1; CF =4/3; FBD_Galaxy_Rotation_v1_EN.wl 7 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 (* QCD effective potential (GeV units, r in GeV^-1) *) VF [r_] := -CF*alphaF/r+sigmaQCD*r; VB [r_] := +CF*alphaB/r; VeffQCD [en_, r_] :=Tqcd[en, EfbQCD, nuQCD]*VF[r]+(1-Tqcd[en, EfbQCD, nuQCD])*VB (* QCD potential plot *) plotQCDpotential =Plot[ {VF[r], VB[r], VeffQCD[0.3, r], VeffQCD[0.5, r], VeffQCD[0.7, r]}, {r, 0.1, 3}, PlotStyle {Blue, Red, {Purple, Thin},{Purple, Thick},{Purple, Dashed}}, PlotLegends {"V_F(Confinement)", "V_B(Asympt. freedom)", "V_eff(E=0.3)", "V_ eff AxesLabel {"r [GeV\[SuperScript]-1]", "V [GeV]"}, PlotLabel "QCD Effective Potential (for comparison)", PlotRange {{0, 3},{-2, 3}}, GridLines Automatic, Frame True, ImageSize 500 ]; Print[plotQCDpotential]; (* Transition function comparison *) plotTransitionComparison =GraphicsRow[{ Plot[ {Tqcd[en, EfbQCD, nuQCD], 1 -Tqcd[en, EfbQCD, nuQCD]}, {en, 0, 1.5}, PlotStyle {Blue, Red}, PlotLegends {"T (F-type)", "1-T(B-type)"}, AxesLabel {"E [GeV]", "Weight"}, PlotLabel "QCD Transition", Frame True, ImageSize 300 ], Plot[ {Tgal[r*kpc, rFB, lambdaGal], 1 -Tgal[r*kpc, rFB, lambdaGal]}, {r, 0, 20}, PlotStyle {Blue, Red}, PlotLegends {"T (Newton)", "1-T(Enhanced)"}, AxesLabel {"r [kpc]", "Weight"}, PlotLabel "Galaxy Transition", Frame True, ImageSize 300 ] }, ImageSize 650]; Print[plotTransitionComparison]; (* =========================================================================== = (* Part 8: Relationship with MOND Acceleration Scale *) 8 FBD_Galaxy_Rotation_v1_EN.wl 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 (* =========================================================================== = Print["\n=== Relationship with MOND Acceleration Scale ==="]; (* Transition radius and mass relationship *) Print["Theoretical prediction: r_FB =sqrt(GM/a0)"]; Print["M =10^10 Msun: r_FB =", rFBfromMass[10^10*Msun]/kpc, " kpc"]; Print["M =10^11 Msun: r_FB =", rFBfromMass[10^11*Msun]/kpc, " kpc"]; Print["M =10^12 Msun: r_FB =", rFBfromMass[10^12*Msun]/kpc, " kpc"]; (* Acceleration comparison plot *) plotAcceleration =LogPlot[ { (G0*Mgalaxy/(r*kpc)^2)/a0MOND, aeff[r*kpc, Mgalaxy, rFB, lambdaGal]/a0MOND, 1(* a=a0 line *) }, {r, 1, 50}, PlotStyle {{Blue, Dashed},{Purple, Thick},{Gray, Dashed}}, PlotLegends {"a_Newton/a\[SubScript]0", "a_eff/a\[SubScript]0", "a =a\[ SubScript AxesLabel {"r [kpc]", "a /a\[SubScript]0"}, PlotLabel "Acceleration Comparison", PlotRange {{0, 50},{0.01, 20}}, GridLines Automatic, Frame True, ImageSize 500 ]; Print[plotAcceleration]; (* =========================================================================== = (* Part 9: 3D Visualization *) (* =========================================================================== = Print["\n=== 3D Visualization ==="]; (* 3D plot of v(r, M) *) plot3D =Plot3D[ vRotation[r*kpc, 10^logM*Msun, rFBfromMass[10^logM*Msun], 0.2*rFBfromMass[10^logM* Msun {r, 1, 40},{logM, 9, 12}, PlotRange All, AxesLabel {"r [kpc]", "log\[SubScript]10(M/Msun)", "v [km/s]"}, PlotLabel "Rotation Velocity v(r, M)", ColorFunction "TemperatureMap", MeshFunctions {#3 &}, ImageSize 500 ]; Print[plot3D]; FBD_Galaxy_Rotation_v1_EN.wl 9 Theoretical prediction: r_FB =sqrt(GM/a0) M=10^10 Msun: r_FB =3.40819 kpc M=10^11 Msun: r_FB =10.7776 kpc M=10^12 Msun: r_FB =34.0819 kpc 0 10 20 30 40 50 0.01 0.05 0.10 0.50 1 5 10 Acceleration Comparison a_Newton/ a a_eff/a\[ SubScript a=a\ [ SubScript === 3D Visualization === === Comparison with Observational Data === 16 FBD_Galaxy_Rotation_v1_EN.wl 0 10 20 30 40 0 50 100 150 200 250 300 r[kpc] Model Fit to Observed Rotation Curve Observed FBD Model Newton === Theoretical Parameter Summary === Parameter QCD Galaxy Relation Transition scale E_fb ~0.5 GeV r_FB ~10 kpc sqrt(GM/a\[SubScript ]0) Transition width ν~0.1 GeV λ~2 kpc Free parameter Asymptotic velocity -v_∞= (GMa\[SubScript]0) ^(1/4) Tully-Fisher Low energy/Short r Confinement Newton gravity T 1 High energy/Long r Asympt. freedom Enhanced gravity T 0 Key relation Cornell potential Flat rotation v\[SuperScript]4∝M === Figure Export === FBD_Galaxy_Rotation_v1_EN.wl 17 0 5 10 15 20 25 30 0.0 0.2 0.4 0.6 0.8 1.0 FBD Galaxy Transition Function T_gal(r) [ Newton ] 1-T_gal(r) [ Enhanced 0 10 20 30 40 50 0 50 100 150 200 250 300 Galaxy Rotation Curves Comparison r_FB Newton ( Kepler FBD MOND v_∞( theory === Calculation Complete === v_infty = (G*M*a0)^(1/4) = 199.779 km/s Tully-Fisher slope =0.25 (theoretical value 0.25) 18 FBD_Galaxy_Rotation_v1_EN.wl