经过摸索,终于学会了用maxwell求解位置/受力关系,并且可以很方便地导出csv表格,然后将程序从拟合的方式改成使用插值法。
给出maxewll仿真文件:
给出修改为插值函数的代码:
#######################使用插值函数替换掉拟合函数 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))'''
最后麻烦大佬斧正。
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |