Python中的下溢问题

1 投票
1 回答
1246 浏览
提问于 2025-04-18 00:26

我需要绘制一个函数,这个函数我称之为理论数据。

这里输入图片描述

这里的 a 和 b 定义为:a=z-(L/2),b=z+(L/2),适用于以下情况:

  • N=75
  • I=1
  • L=0.16
  • R=0.013

z 的范围是从 -0.011 到 0.011。我的猜测是可能有下溢出的问题。代码如下:

import numpy as np
import matplotlib.pyplot as plt

class Solenoid():

def __init__(self,N,I,L,R):
    self.N=N
    self.I=I
    self.L=L
    self.R=R

def field(self,z):

    mu=4*(np.pi)*(10 ** -7)

    coef=(mu*self.N*self.I)/(2*self.L)

    a=z+(self.L/2)
    b=z-(self.L/2)

    sum_a=a/((self.R ** 2 + a ** 2) ** 0.5)

    sum_b=b/((self.R ** 2 + b ** 2) ** 0.5)

    return (coef*(sum_a - sum_b))

sol=Solenoid(75,1,0.160,0.013)
x=np.linspace(-0.011, 0.011, 10000)
y=[]

for point in x:
    y.append(sol.field(point))

plt.plot(x,y)
plt.show()  

输出结果是:

这里输入图片描述

这个结果明显是错误的。预期的输出应该是一条比较平滑的线,和实验数据相符:

这里输入图片描述

更新:新的输出结果是:

这里输入图片描述

1 个回答

0

在x轴上,它的缩放比例是10倍...

在这里输入图片描述

撰写回答