Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Draft Forbes Group Website (Build by Nikola). The official site is hosted at:

https://labs.wsu.edu/forbes

5912 views
License: GPL3
ubuntu2004
Kernel: Python 2 (Ubuntu, plain)

Here we look at discretization using irregular grids.

Fourier

Here we attempt to use spectral methods to differentiate a function.

%pylab inline --no-import-all N = 48 L = 10.0 dx = L/N x = np.arange(N)*dx - L/2.0 k = 2*np.pi * np.fft.fftfreq(N, dx) psi = np.exp(-x**2/2.0) ddpsi = (x**2-1)*psi psi = np.exp(-np.sin(np.pi*x/L)**2/2.0) c = np.cos(np.pi*x/L) ddpsi = np.pi**2*(1-c**2-c**4)/L**2*psi abs(np.fft.ifft(-k**2*np.fft.fft(psi)) - ddpsi).max()
Populating the interactive namespace from numpy and matplotlib
6.3912317426252163e-14

Here is the explicit basis:

Q = np.exp(1j*k[None, :]*x[:, None]) Qinv = np.linalg.inv(Q) abs(Q.dot(-k**2*np.linalg.solve(Q, psi)) - ddpsi).max()
6.4184791257258749e-14

Now with random lattice points:

np.random.seed(4) N = 48 dx = L/N x = np.array(sorted(np.random.random(N)*L - L/2.0)) psi = np.exp(-np.sin(np.pi*x/L)**2/2.0) c = np.cos(np.pi*x/L) ddpsi = np.pi**2*(1-c**2-c**4)/L**2*psi k = 2*np.pi * np.fft.fftfreq(N, dx) Q = np.exp(1j*k[None, :]*x[:, None]) ddpsi_ = Q.dot(-k**2*np.linalg.solve(Q, psi)) abs(ddpsi_ - ddpsi).max()
4.0683224370974766e-10
np.linalg.solve(Q, psi)
array([ 1.38453820e+00 +2.73778564e-01j, -2.12816523e-01 +5.85308840e-01j, -5.26145185e-01 -3.18666277e-01j, 3.10002033e-01 -4.30032179e-01j, 2.79842831e-01 +2.98707628e-01j, -3.00115217e-01 +8.85527692e-02j, 1.31731952e-01 -3.26829113e-01j, 3.88424446e-01 +3.64751752e-01j, -5.91516681e-01 +4.89953111e-01j, -6.31159278e-01 -7.92088679e-01j, 9.47496131e-01 -8.06235708e-01j, 1.00414777e+00 +1.04160593e+00j, -1.06277353e+00 +1.20949959e+00j, -1.40386443e+00 -1.00511323e+00j, 8.69264004e-01 -1.56745664e+00j, 1.68098600e+00 +6.62574517e-01j, -3.98684946e-01 +1.72751869e+00j, -1.69416869e+00 -9.65385049e-02j, -2.21092933e-01 -1.57346229e+00j, 1.36424713e+00 -5.29441612e-01j, 8.03772322e-01 +1.07206112e+00j, -7.08926844e-01 +1.02142767e+00j, -1.16370977e+00 -2.92590966e-01j, -1.54722838e-01 -1.21743621e+00j, 1.17603635e+00 -6.07938649e-01j, 1.04098901e+00 +1.04009748e+00j, -8.17320802e-01 +1.42875220e+00j, -1.74890127e+00 -5.21901765e-01j, 1.73398719e-01 -1.98351380e+00j, 2.12031333e+00 -2.04805443e-01j, 5.87311416e-01 +2.15344901e+00j, -2.08376135e+00 +9.48626105e-01j, -1.26503907e+00 -1.91852994e+00j, 1.67074389e+00 -1.51630518e+00j, 1.68700639e+00 +1.35797376e+00j, -1.00095391e+00 +1.76749749e+00j, -1.75437698e+00 -6.22002794e-01j, 2.43416665e-01 -1.65046835e+00j, 1.46433869e+00 -1.14036633e-01j, 4.32413523e-01 +1.20941821e+00j, -9.02812718e-01 +6.97595385e-01j, -8.99936418e-01 -5.63920888e-01j, 2.12979119e-01 -1.03453490e+00j, 1.10113717e+00 -1.30348457e-01j, 4.48230190e-01 +1.10371328e+00j, -1.04976564e+00 +7.25695537e-01j, -9.51373430e-01 -9.49447607e-01j, 8.14580164e-01 -1.11791082e+00j, 1.22207038e+00 +6.57654936e-01j, -4.90904315e-01 +1.26453270e+00j, -1.24944753e+00 -3.25502402e-01j, 1.70943646e-01 -1.18379221e+00j, 1.07660601e+00 +3.46256875e-02j, 7.83567122e-02 +9.38172082e-01j, -7.79215655e-01 +1.65219813e-01j, -2.25328818e-01 -6.10175249e-01j, 4.40591648e-01 -2.59901992e-01j, 2.71622799e-01 +2.78644325e-01j, -1.30850073e-01 +2.64203440e-01j, -2.41942538e-01 -1.92150371e-03j, -1.05230341e-01 -2.09312655e-01j, 1.70605989e-01 -1.89373177e-01j, 2.50738990e-01 +1.29656842e-01j, -8.96514787e-02 +2.90748264e-01j, -3.11704240e-01 -5.30258123e-02j, 2.14428089e-02 -3.16484608e-01j, 3.08253274e-01 -4.16460045e-03j, 2.35021482e-02 +2.90208477e-01j, -2.65379163e-01 +3.67918346e-02j, -4.46359176e-02 -2.36475747e-01j, 2.05795807e-01 -4.78818534e-02j, 4.74994005e-02 +1.75179980e-01j, -1.46010052e-01 +4.44762702e-02j, -3.97364021e-02 -1.19239496e-01j, 9.54456785e-02 -3.40824800e-02j, 2.81626827e-02 +7.48937373e-02j, -5.76037397e-02 +2.24592207e-02j, -1.72945850e-02 -4.34157730e-02j, 3.20491523e-02 -1.28507667e-02j, 9.19630183e-03 +2.31536401e-02j, -1.63512904e-02 +6.31635278e-03j, -4.14124363e-03 -1.12687092e-02j, 7.55993009e-03 -2.57061905e-03j, 1.49183463e-03 +4.92028842e-03j, -3.09231325e-03 +7.93044661e-04j, -3.71918441e-04 -1.86537523e-03j, 1.07166187e-03 -1.41024132e-04j, 3.05603086e-05 +5.80552661e-04j, -2.92849925e-04 -1.11980287e-05j, 1.92610232e-05 -1.35378647e-04j, 5.62043331e-05 +1.46934877e-05j, -8.13090474e-06 +2.04121351e-05j, -6.25297321e-06 -3.47972978e-06j, 1.13090490e-06 -1.52897519e-06j, 2.69559411e-07 +2.56877978e-07j, -3.24167261e-08 +2.67954667e-08j, -1.02844060e-09 +1.77460827e-08j, -1.21976100e-07 -4.28974365e-08j, 3.50723036e-07 -4.53463965e-07j, 1.04897745e-06 +1.68136482e-06j, -5.82649025e-06 +1.18974961e-06j, 2.07546172e-06 -1.59912804e-05j, 3.66127478e-05 +1.63610070e-05j, -5.72116551e-05 +7.22084411e-05j, -1.25230892e-04 -1.51890183e-04j, 3.43458960e-04 -1.93128668e-04j, 2.65115232e-04 +6.95204533e-04j, -1.29550265e-03 +3.19122161e-04j, -3.19531444e-04 -2.26333221e-03j, 3.75431002e-03 -2.16140508e-04j, -5.54049010e-05 +5.96708651e-03j, -9.14909736e-03 -5.71522888e-04j, 1.41665034e-03 -1.35999213e-02j, 1.96697161e-02 +2.67617622e-03j, -4.42525093e-03 +2.77504392e-02j, -3.82585404e-02 -6.71234610e-03j, 9.53777565e-03 -5.16083590e-02j, 6.81759597e-02 +1.28286070e-02j, -1.64130883e-02 +8.82529741e-02j, -1.11991226e-01 -1.99987805e-02j, 2.31589525e-02 -1.39339521e-01j, 1.69975389e-01 +2.53319134e-02j, -2.58372194e-02 +2.03235593e-01j, -2.38051739e-01 -2.39121902e-02j, 1.87701001e-02 -2.72900008e-01j, 3.05775569e-01 +9.68002354e-03j, 3.93402501e-03 +3.34202361e-01j, -3.55287343e-01 +2.23784424e-02j, -4.55671628e-02 -3.65826754e-01j, 3.62467794e-01 -7.29016703e-02j, 1.03168721e-01 +3.41924442e-01j, -3.01239575e-01 +1.34472387e-01j, -1.64216728e-01 -2.38081173e-01j, 1.51054794e-01 -1.89154751e-01j, 2.05515465e-01 +4.00091919e-02j, 9.36935293e-02 +2.09215236e-01j, -1.96149575e-01 +2.46974367e-01j, -4.14930581e-01 -1.62553254e-01j, 1.05407389e-01 -5.90853633e-01j, 7.66394407e-01 +2.28649590e-02j, 8.53419785e-02 +9.31889809e-01j, -1.07684916e+00 +2.17555081e-01j, -3.69944716e-01 -1.19058340e+00j, 1.26294409e+00 -5.36406791e-01j, 7.08634264e-01 +1.28512631e+00j, -1.25047627e+00 +8.76387470e-01j, -1.02797067e+00 -1.15523470e+00j, 9.99144684e-01 -1.15090396e+00j, 1.23275799e+00 +7.85857845e-01j, -5.23083644e-01 +1.26210145e+00j, -1.22949305e+00 -2.22440005e-01j, -1.01015172e-01 -1.12843657e+00j, 9.56210843e-01 -4.29566557e-01j, 7.43902103e-01 +7.14489716e-01j, -4.09679531e-01 +1.02439032e+00j, -1.25248763e+00 -5.29181680e-02j, -3.40295337e-01 -1.41217002e+00j, 1.49126968e+00 -7.50843047e-01j, 1.15706948e+00 +1.48259631e+00j, -1.38473553e+00 +1.53613897e+00j, -1.86557728e+00 -1.20243739e+00j, 9.46539556e-01 -2.12488404e+00j, 2.29708638e+00 +6.33404710e-01j, -2.83896447e-01 +2.37009949e+00j, -2.33777042e+00 +7.80420822e-02j, -4.27104881e-01 -2.20050229e+00j, 1.96538927e+00 -7.38505788e-01j, 9.89876250e-01 +1.64583109e+00j, -1.26064289e+00 +1.16301896e+00j, -1.24536506e+00 -8.32721310e-01j, 3.87370277e-01 -1.23100387e+00j, 1.12118830e+00 -4.95800999e-02j, 4.53705348e-01 +9.24260594e-01j, -6.54994785e-01 +8.03805543e-01j, -1.08345400e+00 -3.33405179e-01j, -1.68790225e-02 -1.28214027e+00j, 1.39590679e+00 -3.70534883e-01j, 7.02596129e-01 +1.42742049e+00j, -1.38547256e+00 +9.90453470e-01j, -1.21562787e+00 -1.28395116e+00j, 1.14038379e+00 -1.36516107e+00j, 1.43250428e+00 +9.74184566e-01j, -8.04771026e-01 +1.41782998e+00j, -1.32774468e+00 -6.49727939e-01j, 5.23193112e-01 -1.17443373e+00j, 9.74325013e-01 +4.34617808e-01j, -3.88016205e-01 +7.46401734e-01j, -5.10327090e-01 -3.81771576e-01j, 4.09020951e-01 -2.84561175e-01j, 8.49020827e-02 +4.58523465e-01j, -5.09969334e-01 -7.81590145e-02j, 2.95914006e-01 -5.66129563e-01j])