学問・資格

2020年9月29日 (火)

FPUT問題(Fermi-Pasta-Ulam-Tsingou)の2次の非線形の振動子の動きを Python+Scipyでルンゲクッタ8次のDOP853(Dormand&Prince)を使って計算

昨日はカテナリになるのをみたけれど、ほぼ同じようなプログラムでFPUT問題(過去はFPU問題と言われていた)が計算できる。

FPUTについてはこちら

やっているのはこちらと同じく、

d2xi/ dt2 = (xi+1 + xi-1 - 2xi) + α[(xi+1 - xi)2- (xi - xi-1)2]

の計算。通常はエネルギーのモードごとの図を描きますが、

Fpunew01

実際の動きをGIFアニメにした。

こちら。

Fpu01

これだけ見てても再帰現象はわからんな、、、

2020年9月28日 (月)

鎖をそのまま置くと懸垂曲線(カテナリ―)になるというのをPython+Scipyでルンゲクッタ8次のDOP853(Dormand&Prince)を使って計算

Fermat Libraryでこういうのを見た。

 

ばねでつながれた質点系でカテナリになるのかどうか試してみようか、とやってみた。使うのはPython+ScipyのDOP853.

計算する式はこちらで。

d2xi/ dt2 = -γdxi/dt + k(xi+1 + xi-1 - 2xi) -g

結果:黒いのがカテナリ。

Catenary

おお、なるほどカテナリになってる。

 

2020年9月17日 (木)

高周波(RF・マイクロ波・ミリ波・5G)関連ニュース2020年9月17日 IEEE microwave magazine10月号はマイクロ波顕微鏡特集、 Microwave Journalはミリ波パッケージ。Vayyarの4Dイメージングレーダの仕組み、MIPIのA-PHY、など。

IEEE Microwave magazineの特集はマイクロ波”顕微鏡”の特集。物質の構造だけでなく、生物や、SAWのようなアコースティックデバイスの表面まで見られるとか。これは今後も進む分野だと期待してます。

https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=6668

Microwavemagazinoct2020

一方、Microwave Journalはミリ波部品とパッケージ。今後ますますパッケージは重要になりますが、AiPやFOWLPよりPolyStrata押しの記事。

 

https://www.microwavejournal.com/publications/1/editions/275

 

Microwavejnloct2020

Vayyarの4Dイメージングレーダの仕組みとは?

Under the Hood: Vayyar’s 4D Imaging Radar

https://www.eetimes.com/under-the-hood-vayyaars-4d-imaging-radar/

 

MIPIのA-PHY(自動車向けインターフェース)の紹介

MIPI Alliance Releases A-PHY SerDes Interface for Automotive

https://www.mwrf.com/markets/automotive/article/21141858/mipi-alliance-releases-aphy-serdes-interface-for-automotive

Microsoft Surface Duoの分解

Microsoft Surface Duo Teardown

https://www.ifixit.com/Teardown/Microsoft+Surface+Duo+Teardown/136576

2020年8月17日 (月)

高周波(RF・マイクロ波・ミリ波・5G)関連ニュース2020年8月17日 Microwave Journal 8月号はドローンで衛星通信をテスト、220GHzの半導体テストシステム。DesignConで導体の粗さモデルと因果律について解説。Qualcommとワシントンポストの5Gクラス、Samsung Galaxy Watch3分解

ドローンで衛星通信のテストするとはなかなかうまいこと考えてるな。

https://www.microwavejournal.com/publications/1/editions/274

そしてアンリツの220GHzのテストシステム。これはいつ見ても高そう(というか私が使ったら壊しそう、、、)。

Anritsu1

で、高周波になると様々な導体の粗さモデルを使ったりするが、それと因果律の関係。これはちゃんと考えたことなかったな。

How to Enforce Causality of Standard and Custom Metal Roughness Models

https://www.signalintegrityjournal.com/articles/1796-how-to-enforce-causality-of-standard-and-custom-metal-roughness-models

Qualcommとワシントンポストの5Gマスタークラス。

'5G Master Class' from The Washington Post BrandStudio explores the human and economic benefits of 5G

https://www.qualcomm.com/news/onq/2020/08/13/5g-master-class-washington-post-brandstudio-explores-human-and-economic-benefits

まずはLesson1から。

https://www.washingtonpost.com/brand-studio/wp/2020/06/12/feature/5g-master-class/

 

続いてiFixitのSamsung Galaxy Watch3分解。Apple  Watchと比べると集積度がとても低く見えるが、これで十分な機能という話もある。

https://www.ifixit.com/Teardown/Samsung+Galaxy+Watch3+Teardown/135891

Samsungwatch3

2020年8月11日 (火)

高周波(RF・マイクロ波・ミリ波・5G)関連ニュース2020年8月10日 Microwave Magazine 9月号はシリコンフォトニクスをマイクロ波・ミリ波通信に使う、コロナと5G、IEEE RFICでimecが低消費電力60GHzレーダを発表、Qorvoの5G向けフィルタ解説、など。

今月のMicrowave Magazine。

https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=6668

Mjaut202001

シリコンフォトニクスをマイクロ波、ミリ波通信に使う話。これは知らなかった(のと、SiPっていうのか、、、普通はSiPというとSystem in Packageですが、Silicon Photonics)。なかなか面白い。

Mjaut202002

あとダイレクトRFサンプリングの記事もあるが、コロナと5Gの健康問題についての話も。

電波塔とか燃やされてたな、、、でもこの記事の結論は、何かを判断するようなデータはない、というもの(肯定も否定もしてない)。

Mjaut202003

次はIMECの発表。Infineon(Google)のProject Soliとどう違うのかな?

Imec presents low-power 60 GHz radar chip for contactless health tracking in battery-powered devices

https://www.imec-int.com/en/press/imec-presents-low-power-60-ghz-radar-chip-contactless-health-tracking-battery-powered-devices

Imec60ghz

Qorvoの5G向けフィルタのホワイトペーパー。

A New Generation of 5G Filter Technology

https://www.microwavejournal.com/articles/34267-a-new-generation-of-5g-filter-technology

 

Mixed Mode Sパラメータの解説。

A Guide for Single-Ended to Mixed-Mode S-parameter Conversions

https://www.signalintegrityjournal.com/articles/1832-a-guide-for-singleended-to-mixedmode-s-parameter-conversions

SiTimeのMEMSクロックICの記事。

MEMS Clock ICs and Oscillators Arrive in Time for 5G

https://www.mwrf.com/technologies/semiconductors/article/21138647/mems-clock-ics-and-oscillators-arrive-in-time-for-5g

すぐiPhoneをパクるSamsungのUWB搭載。

Samsung's UWB tech will let you use a Galaxy Note 20 Ultra as a digital key

https://www.engadget.com/samsung-galaxy-note-20-ultra-wide-band-connectivity-151223521.html

 

 

2020年7月20日 (月)

Python+Scipyでルンゲクッタ8次のDOP853(Dormand&Prince)を使う(その16)  時間依存のシュレーディンガー方程式のトンネル効果を計算してGIFアニメに。

時間依存のシュレーディンガー方程式も空間微分を差分化すると普通の常微分方程式になるので、ルンゲクッタ8次のDormand-Prince法で計算できる。
具体的には空間の拡散項は2次の差分
(φi+1 - 2*φi + φi-1) / (dx*dx)
で近似。中央に井戸型ポテンシャルを置いて、左から波束が入ってくるときの計算。

ただし、複素数になるのでライブラリがodeからcomplex_odeに変わる。

ずっと前にExcel VBAでやったもののPythonでの書き直し。これは”計算物理”にでてたもので、もともとはシッフの例題にあるものだそうです。

クリックするとGIFアニメが始まります。

Sh01

 

ソースはこんな感じで(インデントがないけどココログにコピペすると消えるので、、、)

%matplotlib notebook
import numpy as np
from scipy.integrate import complex_ode
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation
from matplotlib.animation import PillowWriter
import numba

INTERVAL = 0.05 # [s] interval time
FRAME_INTERVAL = 1000 * INTERVAL # [msec] interval between frames
FPS = 1000/FRAME_INTERVAL # frames per second

Nt=6000
Nx=2000


t0=0
dx = 0.001
dt = dx * dx / 2
xmax = dx * float(Nx) / 2
xmin = -dx * float(Nx) / 2
tmax=Nt*dt

v_width = 0.064
v0 = 0.6*((70.7 * np.pi) **2)
deltax = 0.035
x0 = -0.3
p0 = np.pi * 50
t=np.linspace(0,tmax,Nt)
x=np.linspace(xmin,xmax,Nx)
v=np.empty(Nx,dtype=np.complex)
u0=np.empty(Nx,dtype=np.complex)

for i in range(Nx):
u0[i]=np.exp(-((x[i]-x0)**2) / (4 * deltax * deltax))*np.exp(p0*x[i]*1j)/((2 * np.pi * deltax * deltax) ** 0.25)
if x[i]>=-v_width/2 and x[i] <=v_width/2:
v[i]=v0
else:
v[i]=0

sol= np.empty((Nt, Nx),dtype=np.complex)
sol[0] = u0


def Schroedinger(t, u): #odeintのときとt,xの並びが逆
f=np.zeros(Nx, dtype=np.complex)

for i in range(Nx):
if i < Nx-1:
p1=i + 1
else:
p1=0
if i > 0:
m1=i - 1
else:
m1=Nx-1

diff2 = (u[m1] + u[p1] -2.0* u[i]) / ( dx ** 2)
f[i] = (-1j)*(-diff2 + v[i]*u[i])

return f

numba_f = numba.jit(Schroedinger,nopython=True)

solver=complex_ode(Schroedinger)
solver.set_integrator('dop853')
solver.set_initial_value(u0,t0) #なぜか関数と並びが逆


k=1
while solver.successful() and solver.t < tmax:
solver.integrate(t[k])
sol[k] = solver.y
k+= 1


def update(i):
plt.cla() #現在描写されているグラフを消去
plt.xlim(-1,1)
plt.ylim(0,4)
plt.plot(x,np.abs(sol[i]),c='Red',lw=3)
plt.plot(x,4*abs(v)/v0,c='blue',lw=3)
plt.xlabel("x")
plt.ylabel("Phi")
plt.title("Schroedinger equation by DOP853")
plt.grid()
# Plot
fig = plt.figure(figsize=(10,6))
ani = FuncAnimation(fig, update, frames=range(0,Nt,15), interval=FRAME_INTERVAL, blit=True)
plt.show()
ani.save("sh01.gif", writer = 'pillow',fps=FPS)

2020年7月18日 (土)

Python+Scipyでルンゲクッタ8次のDOP853(Dormand&Prince)を使う(その15) 蔵本モデルを計算してGIFアニメに。 

先日は蔵本・シバシンスキー方程式でしたが、今日は蔵本モデル。

dφi/dt = ωi + K/N Σsin (φj - φi )          (和はj=1 ~ N)

位相がどんどんそろっていくのがわかる。

クリックでGIFアニメが始まります。

Kuramoto_model

 

2020年7月16日 (木)

Python+Scipyでルンゲクッタ8次のDOP853(Dormand&Prince)を使う(その14)  蔵本・シバシンスキー方程式(Kuramoto-Sivashinsky equation)を計算してGIFアニメに。

蔵本先生と言えば、最近は千葉先生の研究で蔵本モデルが有名ですが、私にはこっちのほうがなじみがある蔵本・シバシンスキー方程式(Kuramoto-Sivashinsky equation)。1次元の乱流がシンプルに見られる。これはKdV方程式ができればすぐにできる。

∂u/∂t +u*∂u/∂x = -∂^2u/∂x^2  -∂^4/∂x^4

空間微分をO(h^6)という高次の差分で近似、かつ時間微分をルンゲクッタ8次のスキームであるDormand-Prince法(DOP853)で計算。

結果はこんな感じ。クリックでGIFアニメが始まります。(最初が動きがないので面白くないがだんだん動く)

Kuramoto_sivashinsky1

 

ソースはKdVと同じなので関数部分だけ。

 

def kuramoto(t, u): #odeintのときとt,xの並びが逆
    f=np.zeros(Nx)

    for i in range(Nx):
       if i < Nx-1:
          p1 = i + 1
       else:
          p1 = 0

       if i < Nx - 2:
          p2 = i + 2

       elif i == Nx - 2:
          p2 = 0
        else:
          p2 = 1

        if i < Nx - 3:
          p3 = i + 3
        elif i == Nx - 3:
          p3 = 0
        elif i == Nx - 2:
          p3 = 1
        else:
          p3 = 2

        if i > 0:
           m1 = i - 1
        else:
           m1 = Nx-1

        if i > 1:
           m2 = i - 2
        elif i == 1:
           m2 = Nx - 1
        else:
           m2 = Nx - 2

        if i > 2:
           m3 = i - 3
        elif i == 2:
           m3 = Nx - 1
        elif i == 1:
           m3 = Nx - 2
        else:
           m3 = Nx - 3

        d1 = (u[p3] / 9 - u[p2] + 5* u[p1] - 5 * u[m1] + u[m2] - u[m3] / 9) / (20 * dx / 3)
        d2 = (2 * u[p3] - 27 * u[p2] + 270 * u[p1] - 490 * u[i] + 270 * u[m1] - 27 * u[m2] + 2 * u[m3])/(180 * dx * dx)
        d4 = (-u[p3] +12*u[p2]-39*u[p1]+56*u[i]-39*u[m1]+12*u[m2]-u[m3])/(6*dx*dx*dx*dx)

        f[i] = -u[i] * d1 - d2 - d4

    return f

2020年7月15日 (水)

高周波(RF・マイクロ波・ミリ波・5G)関連ニュース2020年7月15日 Microwave Magazine 8月号はマイクロ波エンジニアのための量子コンピュータ、Microwave Journal8月号はRFツールとAI(機械学習)、SAW vs. BAW、Samsung researchの6Gホワイトペーパー、など。

まずIEEE Microwave magazineの特集は、Quantum computing for microwave engineers。

https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=6668

なるほどこういうのを見るとRFとも深くかかわるのが分かる。

425a7abe1e67f6186b70b9e454f27eb2

次はMicrowave Journal。

Artificial Intelligence and Machine Learning Add New Capabilities to Traditional RF EDA Tools

https://www.microwavejournal.com/articles/34234-artificial-intelligence-and-machine-learning-add-new-capabilities-to-traditional-rf-eda-tools

LTEアンテナをAIで設計改善する例。

F1

どちらも流行りものとRFのお話でちょっと面白いというかネタが切れているというか。

あと、TF-SAW vs. BAW: RF Companies Taking Different Strategies
についてはノーコメント。

https://www.microwavejournal.com/blogs/9-pat-hindle-mwj-editor/post/34255-tf-saw-vs-baw-rf-companies-taking-different-strategies

Samsung Researchが6Gについてのホワイトペーパーだしてる。まあまだ先なので好き勝手に、、、

Samsung’s 6G White Paper Lays Out the Company’s Vision for the Next Generation of Communications Technology

https://news.samsung.com/global/samsungs-6g-white-paper-lays-out-the-companys-vision-for-the-next-generation-of-communications-technology

 

あとはこれに驚く、、、

アナログ・デバイセズ、アナログ半導体の主導的地位の強化に向け、Maxim Integratedを買収することを発表

https://www.analog.com/jp/about-adi/news-room/press-releases/2020/7-13-2020-analog-devices-announces-combination-with-maxim-integrated.html

2020年7月14日 (火)

Python+Scipyでルンゲクッタ8次のDOP853(Dormand&Prince)を使う(その13) KdV方程式の時間発展にDOP853、空間差分はオリジナルのザブスキーとクルスカルのを使ってGIFアニメに。

KdV方程式

∂u/∂t +u*∂u/∂x+δ^2 ∂^3u/∂x^3 = 0

δ=0.022

ですが、これも空間を差分化すると普通の常微分方程式系と見なせる。そこでルンゲクッタ8次のDOP853を使おう。

空間差分はオリジナルのザブスキーとクルスカルのものと同じとします。

クリックでGIFアニメが始まります。

Kdv

ソースコードはこんな感じ。

%matplotlib notebook
import numpy as np
from scipy.integrate import ode
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation
from matplotlib.animation import PillowWriter
import numba

INTERVAL = 0.05 # [s] interval time
FRAME_INTERVAL = 1000 * INTERVAL # [msec] interval between frames
FPS = 1000/FRAME_INTERVAL # frames per second

Nt=512
Nx=256

xmax=2.0
xmin=0.0
tmin=0.0
tmax=16/np.pi

t0=0
dt = (tmax-tmin)/Nt
dx = (xmax - xmin) / Nx
d=0.022

t=np.linspace(0,tmax,Nt)
x=np.linspace(0,xmax,Nx)
u0=np.cos(np.pi*x)
sol= np.empty((Nt, Nx))
sol[0] = u0


def kdv(t, u): #odeintのときとt,xの並びが逆
f=np.zeros(Nx)

    for i in range(Nx):
        if i < Nx-1:
            p1 = i + 1
        else:
            p1 = 0

        if i > 0:
            m1 = i - 1
        else:
            m1 = Nx-1

        if i < Nx - 2:
            p2 = i + 2
        elif i == Nx - 2:
            p2 = 0
        else:
            p2 = 1

        if i > 1:
           m2 = i - 2
        elif i == 1:
            m2 = Nx - 1
        else:
            m2 = Nx - 2

        diff3 = (-u[m2] + 2 * u[m1] - 2 * u[p1] + u[p2]) / (2 * (dx ** 3))
        diff1 = (-u[m1] + u[p1]) / (2 * dx)
        f[i] = -(u[m1]+u[i]+u[p1]) * diff1/3 - d*d*diff3

    return f

numba_f = numba.jit(kdv,nopython=True)

solver=ode(kdv)
solver.set_integrator('dop853')
solver.set_initial_value(u0,t0) #なぜか関数と並びが逆

 

k=1
while solver.successful() and solver.t < tmax:
solver.integrate(t[k])
sol[k] = solver.y
k+= 1


def update(i):
    plt.cla() #現在描写されているグラフを消去
    plt.xlim(0,2)
    plt.ylim(-1,3)
    plt.plot(x,sol[i],c='Red',lw=3)
    plt.xlabel("t")
    plt.ylabel("u")
    plt.title("KdV equation by DOP853")
    plt.grid()

# Plot
fig = plt.figure(figsize=(10,6))
ani = FuncAnimation(fig, update, frames=range(0,Nt,1), interval=FRAME_INTERVAL, blit=True)
plt.show()
ani.save("kdv.gif", writer = 'pillow',fps=FPS)

より以前の記事一覧

最近のコメント

2020年10月
    1 2 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      
フォト
無料ブログはココログ