python一对一辅导教程:Computational Problems for Physics chapter 1-C Code Listings 1.12 - 1.17

Effective Computation in Physics Field Guide to Research with Python 无水印pdf Effective Computation in Physics Field Guide to Research with Python 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除 立即下载

作者自我介绍:大爽歌, b站小UP主 ,直播编程+红警三 ,python1对1辅导老师 。
本博客为一对一辅导学生python代码的教案, 获得学生允许公开。
具体辅导内容为《Computational Problems for Physics With Guided Solutions Using Python》,第一章(Chapter 1 Computational Basics for Physics)的 Code Listings
由于代码较多,第一章内容分为三部分
A(1.1 - 1.6)
B(1.7 - 1.11)
C(1.12 - 1.17)

1 - 1.14 rk4Algor.py

1.12的 rk4Call.py需要导入1.14的rk4Algor.py,
所以先介绍下rk4Algor.py。

1 代码展示
# rk4Algor.py
def rk4Algor(t, h, N, y, f):
    k1 = [0]*(N);  k2 = [0]*(N);  k3 = [0]*(N);  k4 = [0]*(N)
    fvector = [0]*(N);  ydumb = [0]*(N)

    fvector = f(t, y)                     # Returns RHS's  
    for i in range(0, N):  k1[i] = h*fvector[i]   

    for i in range(0, N):  ydumb[i] = y[i] + k1[i]/2.
    fvector = f(t+h/2., ydumb)
    for i in range(0, N):  k2[i] = h*fvector[i]

    for i in range(0, N):  ydumb[i] = y[i] + k2[i]/2.
    fvector = f(t+h/2., ydumb)
    for i in range(0, N):  k3[i] = h*fvector[i]

    for i in range(0, N):  ydumb[i] = y[i] + k3[i]
    fvector = f(t+h, ydumb)
    for i in range(0, N):  k4[i] = h*fvector[i]

    for i in range(0, N):  y[i] = y[i] + (k1[i]+2.*(k2[i]+k3[i])+k4[i])/6.
    return y
2 公式原理

doc: Runge-Kutta 4th Order Method to Solve Differential Equation
公式具体说明见链接,这里只分析其计算方法。

使用代码中对应的变量,计算公式写法如下:

k 1 = h f ( t , y n ) k_1 = hf(t, y_n) k1​=hf(t,yn​)
k 2 = h f ( t + h 2 , y n + k 1 2 ) k_2 = hf(t+\frac{h}{2}, y_n+\frac{k_1}{2}) k2​=hf(t+2h​,yn​+2k1​​)
k 3 = h f ( t + h 2 , y n + k 2 2 ) k_3 = hf(t+\frac{h}{2}, y_n+\frac{k_2}{2}) k3​=hf(t+2h​,yn​+2k2​​)
k 4 = h f ( t + h 2 , y n + k 3 2 ) k_4 = hf(t+\frac{h}{2}, y_n+\frac{k_3}{2}) k4​=hf(t+2h​,yn​+2k3​​)
y n + 1 = y n + k 1 6 + k 2 3 + k 3 3 + k 4 6 + O ( h 5 ) y_{n+1} = y_n + \frac{k_1}{6} + \frac{k_2}{3} + \frac{k_3}{3} + \frac{k_4}{6} + O(h^5) yn+1​=yn​+6k1​​+3k2​​+3k3​​+6k4​​+O(h5)
其 中 O ( h 5 ) 代 表 偏 差 量 , 使 用 公 式 时 不 计 算 , 好 像 也 算 不 了 其中O(h^5)代表偏差量,使用公式时不计算,好像也算不了 其中O(h5)代表偏差量,使用公式时不计算,好像也算不了

3 逐行解析

解析如下图所示

在这里插入图片描述

在每一个阶段,ydumb起的是阶段内部存储暂时值的作用,

4 运行示例

以后面将要调用rk4Algor方法的rk4Call.py中的一次调用的参数为例

  • t: 0.0
  • h: 0.1
  • y: array[ 3. -5.]
  • f: f ( t , y ) = [ y 1 , − 100 y 0 − 2 y 1 + 10 s i n ∗ ( 3 t ) ] f(t, y) = [y_1, -100y_0 - 2y_1 + 10sin*(3t)] f(t,y)=[y1​,−100y0​−2y1​+10sin∗(3t)]

其运行后的结果(返回的y)如下

y: array[ 1.34656554 -24.67337214]

其中间过程为

k1: [-0.5, -29.0]
k2: [-1.9500000000000002, -23.450561867526403]
k3: [-1.6725280933763202, -16.755505680773762]
k4: [-2.175550568077376, -8.628097723420707]

2 - 1.12 rk4Call.py

1 代码展示
# rk4Call.py
from vpython import *
from rk4Algor import rk4Algor  # 1.14 rk4Algor.py
import numpy as np

Tstart = 0.; Tend = 10.; Nsteps = 100  # Initialization
y = np.zeros((2), float)
graph1 = canvas(x=0, y=0, width=400, height=400, title='RK4',
                xtitle='t', ytitle='y[0] = Position versus Time', xmin=0,
                xmax=10, ymin=-2, ymax=3)
funct1 = gcurve(color=color.yellow)
graph2 = canvas(x=400, y=0, width=400, height=400, title='RK4',
                xtitle='t', ytitle='y[1] = Velocity versus Time',
                xmin=0, xmax=10, ymin=-25, ymax=18)
funct2 = gcurve(color=color.red)
y[0] = 3.;   y[1] = -5.  # Initial position & velocity
t = Tstart;   h = (Tend - Tstart) / Nsteps;


def f(t, y):  # Force (RHS) function
    fvector = np.zeros((2), float)
    fvector[0] = y[1]
    fvector[1] = -100. * y[0] - 2. * y[1] + 10. * sin(3. * t)
    return fvector


if ((t + h) > Tend):  h = Tend - t  # Last step
y = rk4Algor(t, h, 2, y, f)
t = t + h
rate(30)
funct1.plot(pos=(t, y[0]))
funct2.plot(pos=(t, y[1]))
2 绘制效果

这个绘制效果是一个从左到右绘制图表的动画,。

在这里插入图片描述

3 np.zeros

基础使用方法为

np.zeros(shape, dtype=float)

doc: numpy.zeros
Return a new array of given shape and type, filled with zeros.
返回给定维度和类型的新数组,数组中填充0。

常用于创建初始的数组。

  • shape: int or tuple of ints.
    新数组的维度。
    一个整数代表一维(整数值代表元素数量),
    元组代表多维(元组的一个元素代表一个维,其值代表这个维的元素数量),
  • dtype: data-type, optional.
    数组所需的数据类型。默认为浮点数np.float64

使用示例(来自官方文档)

>>> np.zeros(5)
array([ 0.,  0.,  0.,  0.,  0.])

>>> np.zeros((5,), dtype=int)
array([0, 0, 0, 0, 0])

>>> np.zeros((2, 1))
array([[ 0.],
       [ 0.]])

>>> s = (2,2)
>>> np.zeros(s)
array([[ 0.,  0.],
       [ 0.,  0.]])
4 逐行解析
Tstart = 0.; Tend = 10.; Nsteps = 100  # Initialization
  • Tstart: 动画开始时间
  • Tend: 动画结束时间
  • Nsteps: 动画分多少步(段),对应动画有多少关键帧。
y = np.zeros((2), float)

创建一个一维二元数组,元素都为0:array([0., 0.])

graph1 = graph(x=0,y=0,width=400,height=400,title='RK4',
	xtitle='t', ytitle='y[0] = Position versus Time',xmin=0,
	xmax=10,ymin=-2,ymax=3)
funct1 = gcurve(color = color.yellow)
graph2 = graph(x=400,y=0,width=400,height=400,title='RK4',
	xtitle='t', ytitle='y[1] = Velocity versus Time',
	xmin=0,xmax=10, ymin=-25,ymax=18)
funct2 = gcurve(color = color.red)
  • graph1, graph2: 两个图,用于分别展示两个曲线。
    xmin, xmax: x轴的范围,
    ymin, ymax: y轴的范围。
  • funct1, funct2: 定义俩个曲线,一个黄色,一个红色
y[0] = 3.;   y[1] = -5.          # Initial position & velocity
t = Tstart;       h = (Tend-Tstart)/Nsteps;

初始化一些值。

h: 一帧的时间长度。计算出来结果为0.1

def f(t, y):                           # Force (RHS) function
    fvector = np.zeros((2), float)
    fvector[0] = y[1]
    fvector[1] = -100.*y[0]-2.*y[1] + 10.*sin(3.*t)
    return fvector
  • 定义一个一维二元数组fvector
  • 第一个元素为 y 1 y_1 y1​
  • 第二个元素为 − 100 y 0 − 2 y 1 + 10 s i n ∗ ( 3 t ) -100y_0 - 2y_1 + 10sin*(3t) −100y0​−2y1​+10sin∗(3t)
while (t < Tend):                                # Time loop
    if ((t + h) > Tend):  h = Tend - t  

进行时间循环,循环持续到终止时间
如果当前时间+下一帧时间长度大于终止时间,修改下一帧时间长度。

    y = rk4Algor(t, h, 2, y, f)
    t = t + h
    rate(30)
    funct1.plot(pos = (t, y[0]) )
    funct2.plot(pos = (t, y[1]) )

调用rk4Algor方法,计算出y。
进入下一帧。
设置循环间隔为1/30秒,每秒t增长30*0.1=3,相当于三倍速展示。

  • 曲线1添加点 ( t , y 0 ) (t, y_0) (t,y0​)
  • 曲线2添加点 ( t , y 0 ) (t, y_0) (t,y0​)

3 - 1.13 rk4Duffing.py

1 代码展示

import numpy as np, matplotlib.pylab as plt  
from math import *;  from rk4Algor import rk4Algor

tt = np.zeros((2000),float);  yy = np.zeros((2000),float);     
vy = np.zeros((2000),float);  y = [0]*(2); rhs = [0]*(2)     
a = 0.5;  b = -0.5;  g = 0.02;  F = 0.0008;   w = 1.         
h = 0.1                                     # Time step                                                   
i = 0; y[0] = 0.09;  y[1] =  0         # Initial x, velocity

def f(t,y):                                   # RHS function
    rhs[0] = y[1]
    rhs[1] = -2*g*y[1] - a*y[0] - b*y[0]**3 + F*cos(w*t)
    return rhs

for t in np.arange(0,200,h):                      # Time Loop    
    tt[i] = t
    y = rk4Algor(t,h,2,y,f)                         # Call rk4  
    yy[i] = y[0]                                         # x(t)
    vy[i] = y[1]                                         # v(t)
    i = i+1
fig, axes = plt.subplots(nrows=1, ncols=2,figsize=(12,5) )   
axes[0].plot(tt[1000:],yy[1000:])    # 1000 to avoid transients
axes[0].grid()                                            # x(t)
axes[0].set_title('Duffing Oscillator x(t)')         
axes[0].set_xlabel('t')
axes[0].set_ylabel('x(t)')
axes[1].plot(yy[1000:],vy[1000:])            
axes[1].grid()
axes[1].set_title('Phase Space Orbits for Duffing Oscillator')  
axes[1].set_xlabel('x(t)')
axes[1].set_ylabel('v(t)')      
plt.show()
2 绘制效果

在这里插入图片描述

3 逐行分析
tt = np.zeros((2000),float);  yy = np.zeros((2000),float);     
vy = np.zeros((2000),float);  y = [0]*(2); rhs = [0]*(2)     
a = 0.5;  b = -0.5;  g = 0.02;  F = 0.0008;   w = 1.         
h = 0.1                                     # Time step                                                   
i = 0; y[0] = 0.09;  y[1] =  0         # Initial x, velocity

初始化

  • tt, yy, vy: 一维2000元的0.0填充的数组。
  • y, rhs: 有两个0组成的列表。
  • a, b, g, F, w: rhs函数中用到的参数。
  • h: 最小的时间间距,两个相邻状态之间的时间间隔。
  • i: 计数,序号。
  • y: 设置为[0.09, 0]
def f(t,y):                                   # RHS function
    rhs[0] = y[1]
    rhs[1] = -2*g*y[1] - a*y[0] - b*y[0]**3 + F*cos(w*t)
    return rhs

新建函数
f ( t , y ) = [ y 1 , − 2 g y 1 − a y 0 − b y 0 3 + F c o s ( w t ) ] f(t, y) = [y_1, -2gy_1 - ay_0-by_0^3 + Fcos(wt)] f(t,y)=[y1​,−2gy1​−ay0​−by03​+Fcos(wt)]

for t in np.arange(0,200,h):                      # Time Loop    
    tt[i] = t
    y = rk4Algor(t,h,2,y,f)                         # Call rk4  
    yy[i] = y[0]                                         # x(t)
    vy[i] = y[1]                                         # v(t)
    i = i+1
  • 在0到200之间,隔h(0.1)取值,最终能取到2000个值。
  • tt数组记录每一个时间值
  • 调用rk4Algor计算出y
  • yy, vy: 分别记录y的两个值。
  • 计数器i加一
fig, axes = plt.subplots(nrows=1, ncols=2,figsize=(12,5))   

划分窗口为一行两列个图

  • figsize: 指定图形尺寸(宽、高),单位为英寸。
axes[0].plot(tt[1000:],yy[1000:])    # 1000 to avoid transients
axes[0].grid()                                            # x(t)
axes[0].set_title('Duffing Oscillator x(t)')         
axes[0].set_xlabel('t')
axes[0].set_ylabel('x(t)')

axes[1].plot(yy[1000:],vy[1000:])            
axes[1].grid()
axes[1].set_title('Phase Space Orbits for Duffing Oscillator')  
axes[1].set_xlabel('x(t)')
axes[1].set_ylabel('v(t)')      
plt.show()

在子图1中绘制tt[1000:]和yy[1000:]曲线。
在子图2中绘制yy[1000:]和vy[1000:]曲线。

4 1.15 TrapMethods.py

1 代码与运行结果
from numpy import *   

def func(x):
    return 5*(sin(8*x))**2*exp(-x*x)-13*cos(3*x)

def trapezoid(A,B,N):
    h = (B - A)/(N - 1)                     # step size
    sum = (func(A)+func(B))/2               # (1st + last)/2
    for i in range(1, N-1):     
       sum += func(A+i*h)       
    return h*sum                
A = 0.5
B = 2.3
N = 1200
print(trapezoid(A,B,N-1))

运行输出如下

2.998428176678047
2 逐行解析
def func(x):
    return 5*(sin(8*x))**2*exp(-x*x)-13*cos(3*x)

定义函数
f ( x ) = 5 s i n 2 ( 8 x ) e − x 2 − 13 c o s ( 3 x ) f(x) = 5sin^2(8x)e^{-x^2} - 13cos(3x) f(x)=5sin2(8x)e−x2−13cos(3x)

def trapezoid(A,B,N):
    h = (B - A)/(N - 1)                     # step size
    sum = (func(A)+func(B))/2               # (1st + last)/2
    for i in range(1, N-1):     
       sum += func(A+i*h)       
    return h*sum    

定义函数,内部执行的代码对应公式如下
h = B − A N − 1 s t r a p e z o i d ( A , B , N ) = h ( f ( A ) + f ( B ) 2 + ∑ i = 1 N − 1 f ( A + i h ) ) \begin{aligned} h &= \frac{B - A}{N - 1} \\s trapezoid(A,B,N) &= h(\frac{f(A)+ f(B)}{2} + \sum_{i=1}^{N-1} f(A+ih)) \end{aligned} hstrapezoid(A,B,N)​=N−1B−A​=h(2f(A)+f(B)​+i=1∑N−1​f(A+ih))​

该公式为梯形积分公式,参考文档:trapezoidal-rule

5 1.17 GaussPoints.py

1.16的 IntegGaussCall.py需要导入1.17的GaussPoints.py,
所以先介绍下GaussPoints.py。

1 代码展示
import math
from numpy import *

def GaussPoints(Npts, a, b, x, w, eps):
    m = 0; i = 0; j = 0; t = 0.; t1 = 0.; pp = 0.
    p1 = 0.; p2 = 0.; p3 = 0.  
    m = int((Npts+1)/2)
    for i in range(1, m+1):
        t = math.cos(math.pi*(float(i)-0.25)/(float(Npts)+0.5))
        t1 = 1
        while((abs(t-t1)) >=  eps):
            p1 = 1. ;  p2 = 0.  
            for j in range(1, Npts + 1):
                p3 = p2;   p2 = p1
                p1 = ((2.*float(j)-1)*t*p2 - (float(j)-1.)*p3)/(float(j))
            pp = Npts*(t*p1 - p2)/(t*t - 1.)
            t1 = t
            t = t1 - p1/pp
        x[i-1] =  -t
        x[Npts-i] = t
        w[i-1] = 2./( (1.-t*t)*pp*pp)
        w[Npts-i] = w[i-1]

    for j in range(0, Npts):               # Scale [-1,+1] to [a,b]
            x[j] = x[j]*(b-a)/2. + (b+a)/2.
            w[j] = w[j]*(b-a)/2.
2 公式原理

好像是高斯-勒让得求积
Gauss-Legendre Quadrature
公式有点复杂,没搞太明白
相关文章链接:

3 逐行解析
def GaussPoints(Npts, a, b, x, w, eps):

定义函数名,函数参数为

  • Npts: 后面用n表示
  • a, b: 区间
  • x, w: 存放值的数组
  • eps: 精度要求。
m = 0; i = 0; j = 0; t = 0.; t1 = 0.; pp = 0.
p1 = 0.; p2 = 0.; p3 = 0.  

声明了一堆变量,但其实都是多余了声明,除了pp。

m = int((Npts+1)/2)
for i in range(1, m+1):

m 是N的一半取整(int是向下取整)
因为x,w首尾都是对称的,所以只需循环N的一半。

    t = math.cos(math.pi*(float(i)-0.25)/(float(Npts)+0.5))
    t1 = 1

对应公式
t = c o s ( π i − 1 4 n + 1 2 ) t = cos(\pi \frac{i - \frac{1}{4}}{n + \frac{1}{2}}) t=cos(πn+21​i−41​​)

来自直播间老哥的补充:猜测是和勒让得(Legendre)多项式是有关。

while((abs(t-t1)) >=  eps):

不断循环,直到t和t1的差值小于eps

p1 = 1. ;  p2 = 0.  
for j in range(1, Npts + 1):
    p3 = p2;   p2 = p1
    p1 = ((2.*float(j)-1)*t*p2 - (float(j)-1.)*p3)/(float(j))

先看for循环,会发现

  • p2 取上一轮的p1的值
  • p3 取上一轮的p2的值,也就是上上一轮的p1的值。

然后用上一轮的p1和上上一轮的p1 不断的计算新的p1,计算N遍。
把这个转化成数列,则如下
数 列 { p n } , p 0 = 1 , p − 1 = 0 , p j = ( 2 j − 1 ) t p j − 1 − ( j − 1 ) p ( j − 2 ) j \begin{aligned} 数列\{p_n\}, p_0 = 1, p_{-1} = 0, p_j = \frac{(2j-1)tp_{j-1} - (j-1)p_(j-2)}{j} \end{aligned} 数列{pn​},p0​=1,p−1​=0,pj​=j(2j−1)tpj−1​−(j−1)p(​j−2)​​
执行完for循环(共N轮)后,最后的p1即pN,p2即p(N-1)

来自直播间老哥的补充:猜测是勒让得(Legendre)的递推式。

pp = Npts*(t*p1 - p2)/(t*t - 1.)
t1 = t
t = t1 - p1/pp

pp是 N t p N − p N − 1 t 2 − 1 N\frac{tp_N - p_{N-1}}{t^2 - 1} Nt2−1tpN​−pN−1​​

来自直播间老哥的补充:猜测是勒让得(Legendre)的求导式。

t1 取t的值
t自减pN/pp

x[i-1] =  -t
x[Npts-i] = t
w[i-1] = 2./( (1.-t*t)*pp*pp)
w[Npts-i] = w[i-1]

x数组的第i个和倒数第i个值,分别取值-t和t
w数组的第i个和倒数第i个值,都取值 2 ( 1 − t 2 ) p p 2 \frac{2}{(1-t^2)pp^2} (1−t2)pp22​和 2 ( 1 − t 2 ) p p 2 \frac{2}{(1-t^2)pp^2} (1−t2)pp22​

for j in range(0, Npts):               # Scale [-1,+1] to [a,b]
    x[j] = x[j]*(b-a)/2. + (b+a)/2.
    w[j] = w[j]*(b-a)/2.

缩放x, w两个数组的值, 从[-1,+1] 缩放为 [a,b]

由于x, w都是数组,其实可以不用for循环,直接对数组进行公示计算,即可改为

x = x * (b - a) / 2. + (b + a) / 2.
w = w*(b-a)/2.

6 1.16 IntegGaussCall.py

1 代码与运行结果
from numpy import *;  from GaussPoints import GaussPoints

Npts = 10; Ans = 0;  a = 0.;  b = 1.;  eps = 3.E-14
w = zeros(2001, float);  x = zeros(2001, float)       # Arrays

def f(x):  return exp(x)                           # Integrand

GaussPoints(Npts, a, b, x, w, eps)      #  eps: precison of pts  
for i in  range(0,Npts): Ans += f(x[i])*w[i]   # Sum integrands
print('\n Npts =', Npts, ',   Ans =', Ans)
print(' eps =',eps, ', Error =', Ans-(exp(1)-1))

运行结果为

Npts = 10 ,   Ans = 2.3504023872875797
eps = 3e-14 , Error = 0.6321205588285346
2 逐行解析
Npts = 10; Ans = 0;  a = 0.;  b = 1.;  eps = 3.E-14
w = zeros(2001, float);  x = zeros(2001, float)       # Arrays
  • Npts, Ans, a, b, eps: 初始设置各种变量
  • w, x: 一维2001元的浮点数数组,用0.0填充

补充:没想太明白为什么要2001元,感觉元素数量应该和Npts数量一致更好。

def f(x):  return exp(x)                           # Integrand

GaussPoints(Npts, a, b, x, w, eps)      #  eps: precison of pts  
for i in  range(0,Npts): Ans += f(x[i])*w[i]   # Sum integrands
  • f(x): e x e^x ex
  • 调用GaussPoints函数,里面将会把结果保存到x, w这两个数组里面。
  • 求和,对应公式为 A n s = ∑ i = 0 N f ( x i ) w i Ans = \sum_{i=0}^{N} f(x_i)w_i Ans=∑i=0N​f(xi​)wi​
print('\n Npts =', Npts, ',   Ans =', Ans)
print(' eps =',eps, ', Error =', Ans-(exp(1)-1))

对计算结果进行输出
其中Error计算对应的公式为 A n s − ( e − 1 ) Ans-(e-1) Ans−(e−1)

实战十三:编写rk4 (4阶Runge-Kutta)的程序 编写rk4 (4阶Runge-Kutta)的程序, 保证rk4既能处理方程也能处理方程组。 立即下载

相关推荐

SpringBoot+Vue+Mysql社区医院信息平台(源码+文档)

SpringBoot+Vue+Mysql学生宿舍信息管理系统 WEB端软件项目(源码+文档) 项目包含:①完整源码(后端+管理后台+用户前台);②数据库脚本文件;③万字论文文档;④开题报告;⑤答辩PPT;⑥项目运行视频教程。 项目架构: B/S 架构、MVC 分层设计 技术栈: Java、MySQL、SpringBoot、MyBatis-Plus、Token 权限校验、管理后台 Vue+ElementUI+ECharts、用户前台 Layui+jQuery、Maven 构建。 一、角色设计 学生用户: 注册登录、浏览宿舍信息、查询宿舍安排、在线报修、缴费查询、失物招领、桶装水预订、评论交流、收藏等。 商家用户: 注册登录、桶装水品牌与商品信息维护、预订订单查看与处理。 维修人员: 注册登录、查看待处理报修、接单维修、填写报修处理结果与进度反馈。 管理员: 学生管理、班级管理、宿舍信息管理、宿舍安排管理、报修处理管理、缴费信息管理、卫生检查与文明宿舍管理、失物招领管理、桶装水与商家管理、维修人员管理、公告资讯与轮播图管理等。 二、前台功能模块(学生端) 1. 首页展示:轮播图、宿舍公告、最新动态推荐、常用服务快速入口 2. 宿舍信息模块:宿舍列表、楼栋与房间条件筛选、宿舍详情查看、我的宿舍安排查询 3. 在线报修模块:在线提交宿舍设施报修申请、上传故障描述、查看报修进度与维修处理结果 4. 缴费模块:水电等缴费记录查询、缴费状态查看 5. 卫生检查与文明宿舍:宿舍卫生检查结果公示、文明宿舍展示 6. 失物招领模块:失物信息发布、招领信息发布、详情查看、评论互动 7. 桶装水预订:桶装水品牌与商品浏览、在线预订、我的预订记录查询 8. 假期留宿:假期留校申请提交、申请记录查询 9. 评论与收藏:信息评论、查看他人评论、评论回复互动、收藏感兴趣的内容 10. 个人中心...

计算物理作业python代码_计算物理python

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!本书适合想要通过python减少工作量的物理学领域的研究人员阅读,也适合想要学习如何通过python编程解决物理问题的读者参考。 读者评价:“这是一本我在本科的时候应该读的书,这本书涉及到了 python 和 linux 编程环境入门,物理学中涉及到的科学计算的一个基本入门,从测试、...

weixin_39691748的博客 1180

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.csdn.net/mtl1994

python一对一辅导教程:Computational Problems for Physics chapter 1-A Code Listings 1.1 - 1.6

作者自我介绍:大爽歌, b站小UP主 ,直播编程+红警三 ,python1对1辅导老师 。 本博客为一对一辅导学生python代码的教案, 获得学生允许公开。 具体辅导内容为《Computational Problems for Physics With Guided Solutions Using Python》,第一章(Chapter 1 Computational Basics for Physics)的 Code Listings 0 安装第三方库 已安装 numpy matplotlib .

大爽老师的博客 502

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

python一对一辅导教程:Computational Problems for Physics chapter 1-B Code Listings 1.7 - 1.11

作者自我介绍:大爽歌, b站小UP主 ,直播编程+红警三 ,python1对1辅导老师 。 本博客为一对一辅导学生python代码的教案, 获得学生允许公开。 具体辅导内容为《Computational Problems for Physics With Guided Solutions Using Python》,第一章(Chapter 1 Computational Basics for Physics)的 Code Listings 由于代码较多,第一章内容分为三部分 A(1.1 - 1.6) B(.

大爽老师的博客 601

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

04-输出保留3位小数的浮点数「C++信息奥赛题解」

你好,我是悦创。 描述 读入一个单精度浮点数,保留 3 位小数输出这个浮点数。 输入 只有一行,一个单精度浮点数。 输出 也只有一行,读入的单精度浮点数。 样例输入 12.34521 样例输出 12.345 代码 #include <iostream> #include <iomanip> using namespace std; int main() { float f; cin >> f; cout << fixed <&

AI悦创·编程私教1v1 4608

别再手动上传了!用宝塔面板的‘Let‘s Encrypt’免费SSL证书,3分钟自动续期

本文详细介绍了如何利用宝塔面板的‘Let‘s Encrypt’功能实现SSL证书的自动申请和续期,3分钟完成配置即可永久免费使用。通过对比不同SSL证书方案,突出Let's Encrypt的免费、自动续期和高安全性优势,特别适合个人博客和中小企业官网。

weixin_30415113的博客 150

Windows 10/11蓝屏急救:SECURE_PCI_CONFIG_SPACE_ACCESS_VIOLATION报错全攻略(附安全模式+CMD修复)

本文针对Windows 10/11系统常见的SECURE_PCI_CONFIG_SPACE_ACCESS_VIOLATION蓝屏报错,提供了从诊断到修复的完整解决方案。文章深入剖析了该错误与系统安全功能“内存完整性”及pci.sys驱动的关系,并详细指导用户如何通过安全模式进行基础修复,以及使用命令提示符执行高级系统文件修复和注册表修改,帮助用户彻底解决蓝屏问题并恢复系统稳定。

echo99的专栏 968

一对一辅导python_Python辅导

Python编程辅导与R编程辅导根据作业内容,协同完成编程任务、开发过程共享、问题解答。纯个人,中介勿扰。服务流程:前段。与学生一对一确认作业或问题细节,可以无障碍阅读全英文文档,判断出作业难度与完成时间点。中段。进入正式开发过程,中间结果会及时发送给学生,与学生确认是否符合要求,并解释代码的作用后段。交付代码,并安排一对一在线讲解代码,可以辅助学生对每一行代码写注释。如作业任务出现新要求,可以帮...

weixin_39528289的博客 1425

Spring Boot 构建war 部署到tomcat下无法在Nacos中注册服务

因此,当使用外部容器时,如此处的 Tomcat 来部署项目,AbstractAutoServiceRegistration 就不能监听到容器启动事件了,也就不会尝试向服务注册中心注册当前这个微服务,那么注册就失败了,并且也就没有异常信息了。自定义获取获取外部容器端口的方法, 然后监听应用启动事件,当应用被启动时,获取外部容器启动的端口号,然后将这个 port 设置到 NacosAutoServiceReigistration 中。在启动类同级目录,复制下面代码即可(不需要修改,直接构建war即可)

ttyy1112的专栏 2519

python一对一辅导教程:PyGeM Tutorials 解析 1

作者自我介绍:大爽歌, b站小UP主 ,直播编程+红警三 ,python1对1辅导老师 。 本博客为一对一辅导学生python代码的教案, 获得学生允许公开。 目前具体辅导内容为PyGeM 本文为PyGeM tutorial-1-ffd 的讲解与分析 Tutorial 1 shows how to apply the free-form deformation to mesh nodes. 0 准备工作 准备软件 必须安装 python 3.8或以上版本 https://www.python.or.

大爽老师的博客 1969

避坑指南:LVGL在Arduino环境编译报错?3步搞定lv_conf.h路径问题(附ST7789屏幕调试技巧)

本文详细解析了在Arduino环境中配置LVGL图形库时,如何解决常见的“lv_conf.h file not found”编译报错问题。通过三步法:定位并复制模板文件、启用核心配置并指定路径、配置基础参数,从根本上解决路径问题。文章还结合ST7789屏幕驱动,分享了使用TFT_eSPI库进行显示适配、内存优化及背光控制等实战调试技巧,帮助开发者建立清晰、可维护的嵌入式UI工程基础。

lake5的博客 860

DeepSeek跨会话协作指南:让AI成为你的「第二大脑」

通过DeepSeek的跨会话协作系统,用户实测工作效率提升63%。

紫夜若涵的博客 1475

线上python课程一般多少钱-排名前十的python零基础编程在线网课一对一费用多少钱...

在这一波技术授权浪潮中,随着教育大数据技术的发展,个性化学习将逐渐成熟并成为教育的常态。接下来给大家讲讲人工智能教育的前景,感兴趣请往下看吧!人工智能作为引领第四次工业革命的重要驱动力,不仅改变了人们的生产、生活和学习方式,而且推动了社会发展进入了人机协作、跨界融合、共创共享的智能时代。随着智能技术的发展,生产效率大大提高。现有教育体系培养的人力资源将无法满足第四次工业革命发展的需要。为此,经合组...

q6q6q的专栏 241

(二)使用VS2022克隆下载C++自制植物大战僵尸游戏教程

本文将介绍如何使用VS2022克隆下载《植物大战僵尸C++自制版本》。Gitee项目地址:Gitee仓库地址Github项目地址:Github仓库地址游戏官网地址(下载可直接运行)游戏官网。

尔灵尔亿的博客 4933

Python编程私教「一对一」

一对一直播教学 联系方式:Jiabcdefh Python 零基础入门 Django 快速入门 数据分析入门 爬虫 GIt Python 算法科普 2h 博客搭建 商学 职业规划 如何高效准备简历和面试『就业指导、简历指导』 Linux 优质视频课程资源 正则表达式 ...

AI悦创·编程私教1v1 1511

Buck电源设计常见的一些问题(四)MOS管振荡抑制方法(二)

另一方面,开关振铃为远超开关频率的高频振铃,并伴随很高的 dV/dt,会带来传导和辐射的 EMI 问题,可能会使得终端产品不能通过 EMI 标准测试,更严重时甚至会干扰开关电源自身的信号电路或临近的其他功能电路的正常工作。选用二极管反向特性好的器件;该电路可等效成图 3 中 LC 谐振电路,新的 LR和 CR为 Lp1、Lp5,Lp3, Lp4, CD等所有参与振铃的寄生感容的复合值。通常 Snubber 的 Csnub取值在数 nF 以上,在振铃频率 fR(加了 snubber 后)下的阻抗很小。

小幽余生不加糖 2892

Claude Code设置中文输出指南

Claude Code 的语言配置其实并不复杂,只要做好全局的默认设置,再加上一些小的提醒技巧,就能完全避免突然切换英文的问题,让你全程用中文流畅地和 AI 助手协作,不用再被语言问题打断工作节奏,真正提升开发效率。

篮球界最会写bug的人;程序猿中打球最菜的人。 2231

python龙格库塔_龙格库塔积分法

Runge--Kutta积分法是由Euler方法改进得来As with the forward-difference derivative, the error in Euler’s rule is O(h2), which is equivalent to ignoring the effect of acceleration on the position of a projectile, b...

weixin_39890289的博客 722

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

少儿python编程培训-无锡江阴少儿Python编程培训一对一

相关学习内容伴随着企业的发展与成长,企业规模逐渐发展壮大给管理者提出了更高的要求,面对规模日益庞大的企业,要做到管理得体,上下沟通顺畅,管理命令得到贯彻与执行,就需要总结和提炼管理理念,把以往较为分散化的管理模式向着更加精确、细致、量化的模式进行转变。而少儿编程的引进恰恰给这种转变带来了契机和可能。所以想要入职一个企业,必须要学会应用各种少儿编程。但是对于那些计算机零基础的人来说,就必须参加少儿编...

weixin_37988176的博客 290

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Python一对一题目辅导「PTA 题目讲解·难度系数:基础」

点击此链接获得完整文章阅读: Python一对一题目辅导「PTA 题目讲解·难度系数:基础」 题目范围 作业 7: 6-2编写函数计算一个或不特定多个数的乘积(高教社,《Python编程基础及应用》习题8-6)(4分) 1、函数接口定义: def caculate(*t) 打 * 号的参数 t 接受多个参数成员,参数成员预期为整数或浮点数类型。 知识点讲解 Linke:htt...

AI悦创·编程私教1v1 6368

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: python一对一辅导教程:Computational Problems for Physics chapter 1-A Code Listings 1.1 - 1.6
下一篇: python一对一辅导教程:Computational Problems for Physics chapter 1-B Code Listings 1.7 - 1.11
大爽歌
博客等级 码龄9年 422粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值