国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

問大佬們一個(gè)問題,有限差分相關(guān)的,拜謝

2023-07-21 16:04 作者:小道士蘇區(qū)  | 我要投稿

是這樣的,小弟最近在學(xué)數(shù)值方法,于是參考了以下鏈接的教程:

案例1:

是誰還在胡說有限差分法?_嗶哩嗶哩_bilibili

具體問題如下:

問題描述

差分后形式如下:

問題差分

python中,空間步長為0.1,時(shí)間步長為0.1時(shí),結(jié)果為:

空間步長為0.1,時(shí)間步長為0.1

奇怪的來了,按照道理我縮小時(shí)間步長結(jié)果應(yīng)該更精確,但是我取空間步長為0.01,時(shí)間步長為0.01時(shí),結(jié)果如下:


空間步長為0.01,時(shí)間步長為0.01

結(jié)果完全不對(duì):

代碼如下:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D as ax
beta=0.01
deltax=0.01
deltat=0.01
lx=1
t=1
p=beta*deltat/(deltax*deltax)
N=lx/deltax
M=t/deltat
print(M,N,p)
M=int(M)
N=int(N)
ans=np.zeros((M,N))
def jisuan(x,y,z):
? ?u=(x+z-2*y)*p
? ?return u
for k in range(0,M):
? ?ans[k][0]=100
? ?ans[k][N-1]=100
print(ans)
for j in range(1,M):
? ?for i in range(1,N-1):
? ? ? ?ans[j][i]=ans[j-1][i]+jisuan(ans[j-1][i+1],ans[j-1][i],ans[j-1][i-1])

print(ans)
# plt.matshow(ans, cmap=plt.cm.Reds)#這里設(shè)置顏色為紅色,也可以設(shè)置其他顏色
# plt.title("matrix A")
# plt.show()
fig=plt.figure()
ax=ax(fig)
Y=np.arange(0,t,deltat)
X=np.arange(0,lx,deltax)
X,Y=np.meshgrid(X,Y)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# mpl.rcParams['legend.fontsize'] = 30 ?#線段標(biāo)簽 字體大小

ax.set_xlabel('空間長度',size=10,labelpad=10)
ax.set_ylabel('時(shí)間/s',size=10,labelpad=10)
ax.set_zlabel('溫度/C',size=10,labelpad=10)
ax.plot_surface(X, Y, ans, ?cmap=plt.get_cmap('rainbow'))
plt.show()
案例2:

來源于:微分方程數(shù)值求解——有限差分法 - 知乎 (zhihu.com)

具體問題如下:

控制方程

邊界條件如下:

邊界條件

差分如下:

差分

默認(rèn)初始場為0;

python中,x步長為0.01,y步長為0.01時(shí):

x步長為0.01,y步長為0.01

x步長為0.025,y步長為0.025時(shí):

x步長為0.025,y步長為0.025

很明顯最大值不同了!

代碼如下:

import math
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D as ax
import matplotlib.animation as ma
pi=3.1415926
deltax=0.025
deltay=0.025
x=1
y=1
p=1/(deltax*deltax)
q=1/(deltay*deltay)
I=int(x/deltax)
J=int(y/deltay)
ans=np.zeros((J,I))
print(ans)
def f(x,y):
? ?u=(-2)*pi*pi*math.sin(pi*x)*math.sin(pi*y)
? ?return u
for j in range(1,J-1):

? ?for i in range(1,I-1):
? ? ? ?# print(i,j)
? ? ? ?ans[j][i]=(p*(ans[j][i+1]+ans[j][i-1])+q*(ans[j+1][i]+ans[j-1][i])-f(i*deltax,j*deltay))/(2*(p+q))
? ? ? ?if ans[j][i]<0:
? ? ? ? ? ?ans[j][i]=0

fig = plt.figure()
ax = ax(fig)
Y = np.arange(0, y, deltay)
X = np.arange(0, x, deltay)
X, Y = np.meshgrid(X, Y)
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# mpl.rcParams['legend.fontsize'] = 30 ?#線段標(biāo)簽 字體大小

ax.set_xlabel('x',size=10,labelpad=10)
ax.set_ylabel('y',size=10,labelpad=10)
ax.set_zlabel('',size=10,labelpad=10)
ax.plot_surface(X, Y, ans, cmap=plt.get_cmap('rainbow'))
plt.show()
# plt.pause(100)
# plt.close("all")
# print(ans)


# plt.matshow(ans, cmap=plt.cm.get_cmap("rainbow"))#這里設(shè)置顏色為紅色,也可以設(shè)置其他顏色
# plt.title("matrix A")
# plt.show()

希望大佬解惑!

問大佬們一個(gè)問題,有限差分相關(guān)的,拜謝的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
东城区| 平邑县| 江安县| 抚远县| 靖安县| 汉阴县| 家居| 瑞丽市| 安远县| 建湖县| 长子县| 定西市| 彰武县| 天峻县| 巫溪县| 江门市| 汪清县| 古浪县| 垫江县| 德化县| 哈巴河县| 长武县| 泌阳县| 藁城市| 镇江市| 潼关县| 青田县| 都兰县| 香港 | 金堂县| 安吉县| 澄江县| 开封县| 武宣县| 开远市| 泗洪县| 高要市| 广汉市| 馆陶县| 安远县| 咸丰县|