经过摸索,终于学会了用maxwell求解位置/受力关系,并且可以很方便地导出csv表格,然后将程序从拟合的方式改成使用插值法。
给出maxewll仿真文件:
给出修改为插值函数的代码:
Python#######################使用插值函数替换掉拟合函数
import pandas as pd
from scipy.interpolate import interp1d
# 读取CSV文件
dfcsv = pd.read_csv('D:\maxwell2022\project\calculate_Fb\Force Plot 1.csv')
# 提取第二列和第三列的数据
xxx = dfcsv.iloc[:, 1].values # 第二列作为插值点
yyy = dfcsv.iloc[:, 2].values # 第三列作为要插值的值
# 创建插值函数,设置超出范围时的行为,进行外插(备注:外插没有内插准确)
fx = interp1d(xxx, yyy, kind='linear', bounds_error=False, fill_value="extrapolate")
def Fb(offset):
#offset = r - r_coil
#offset是弹丸中心到线圈中心的距离,如果offset>0则表示要出现反拉。
x = abs(offset*1000)
return -(1 if offset>0 else -1)*(1e-3* max(fx(x), 0)) # 需要检查插值结果,fx当小于0时替换为0
'''def Fb(offset):
#offset = r - r_coil
x = abs(offset*1000)
return -(1 if offset>0 else -1)*(
0.89318896e-3*x/
(1+0.63700033*(x/10)**4.92537))'''
最后麻烦大佬斧正。