1. 程式人生 > >一維擴散方程的學習——來自流沙公眾號

一維擴散方程的學習——來自流沙公眾號

來自流沙
來自流沙公眾號

認識:
1、理論:差分離散,較為基礎
2、第一次接觸matplotlib中ion()和ioff()。ion()開啟了互動模式,ioff() 感覺像暫停影象
同時,查閱其他部落格得到:
python視覺化庫matplotlib有兩種顯示模式:
阻塞(block)模式
互動(interactive)模式
在Python Consol命令列中,預設是互動模式。而在python指令碼中,matplotlib預設是阻塞模式。
3、第一次接觸pause(time)
4、%.4f s"% (n*dt) 的用法
5、動態列印,每次列印完用cla().

import numpy as np
import matplotlib.pyplot as plt

nx = 41 # 網格節點數
dx = 2 / (nx - 1)  # 網格尺寸
nt = 40 # 時間步長
nu = 0.3 # 擴散係數
sigma = 0.2 # 定義中間變數,用於確定時間步長dt
dt = dx**2 * sigma / nu

# 初始條件
u = 2 * np.ones(nx)
u[int(0.5/dx):int(1/dx)] = 1
un = np.ones(nx)
plt.ion() # 開啟了互動模式,開啟互動模式 ,同時開啟兩個視窗顯示圖片
plt.show()
for n in range(nt):
	plt.cla()   # 清空
	un = u.copy()
	for i in range(1,nx-1):
		u[i] = un[i] + dt * nu / dx**2 * (un[i+1] - 2 * un[i] + u[i-1])
		#繪製圖形
	plt.plot(np.linspace(0,2,nx),u,'r',linewidth=3)
	plt.ylim(0.9,2.1)    # 確定y上下軸
	plt.title("time: %.4f s"% (n*dt)) # 將時間列印到圖形
	plt.pause(0.2)  # 控制圖形顯示時間
plt.ioff()      #沒有使用ioff()關閉的話,則影象會一閃而過,並不會常留。要想防止這種情況,需要在plt.show()之前加上ioff()命令。
plt.show()

在這裡插入圖片描述
其中查詢資料的過程遇到figure,故簡單記錄一下figure用法
plt.figure(num = “as”, figsize = (4, 4)) # num 若是數字則figure 數字;若是字母則為名字

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = x**2
plt.figure(num = "as", figsize = (4, 4))   # num 若是數字則figure 數字;若是字母則為名字
plt.plot(x, y1)
plt.plot(x, y2, color = 'red', linewidth = 1.0, linestyle = '--')
plt.show()

在這裡插入圖片描述
本文純粹是記錄學習過程所用。