飞道的博客

Python计算防蓝光眼镜加权阻隔率

229人阅读  评论(0)

400nm以下是紫外线波段,

根据透光率可以看出是基本满足uv400标准的。

 

 

 

 

###################################################################################################

 

############################################################################################################

透光率拟合.py


  
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. #定义x、y散点坐标(下面这个是波长)
  4. x = [ 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500]
  5. x = np.array(x)
  6. print( '波长范围 is :\n',x)
  7. num = [ 0.1, 0.1, 0.1, 2.9, 8.1, 10.3, 11.2, 13.1, 15.7, 19.4, 26.3, 33.4, 46.8]
  8. y = np.array(num)
  9. print( 'y is :\n',y)
  10. #用3次多项式拟合
  11. f1 = np.polyfit(x, y, 5)
  12. print( 'f1 is :\n',f1)
  13. p1 = np.poly1d(f1)
  14. print( 'p1 is :\n',p1)
  15. #也可使用yvals=np.polyval(f1, x)
  16. yvals = p1(x) #拟合y值
  17. print( 'yvals is :\n',yvals)
  18. #绘图
  19. plot1 = plt.plot(x, y, 's',label= 'original values')
  20. plot2 = plt.plot(x, yvals, 'r',label= 'polyfit values')
  21. plt.xlabel( 'x')
  22. plt.ylabel( 'y')
  23. plt.legend(loc= 4) #指定legend的位置右下角
  24. plt.title( 'polyfitting')
  25. plt.show()

 

加权阻隔率计算.py


  
  1. import numpy as np
  2. from scipy.interpolate import InterpolatedUnivariateSpline
  3. λ = np. array([ 380, 385, 390, 395, 400, 405, 410, 415, 420, 425, 430, 435, 440, 445, 450, 455, 460, 465, 470, 475, 480, 485, 490, 495, 500]) #波长λ
  4. W_λ=np. array([ 2 , 4 , 10 , 22 , 47, 112, 269, 564, 660, 722, 771, 849, 911, 930, 946, 933, 864, 776, 706, 639, 532, 479, 266, 194, 122]) #WB(λ)
  5. # 下面是透射率(一部分是插值后得到的数据)
  6. τ=np. array([ 0.1* 0.01, #380
  7. 0.1* 0.01, #385
  8. 0.1* 0.01, #390
  9. 0.1* 0.01, #395
  10. 0.1* 0.01, #400
  11. 1.5* 0.01, #405
  12. 2.9* 0.01, #410
  13. 5.2* 0.01, #415
  14. 8.1* 0.01, #420
  15. 9.5* 0.01, #425
  16. 10.3* 0.01, #430
  17. 10.6* 0.01, #435
  18. 11.2* 0.01, #440
  19. 11.9* 0.01, #445
  20. 13.1* 0.01, #450
  21. 13.9* 0.01, #455
  22. 15.7* 0.01, #460
  23. 16.7* 0.01, #465
  24. 19.4* 0.01, #470
  25. 21.0* 0.01, #475
  26. 26.3* 0.01, #480
  27. 29.2* 0.01, #485
  28. 33.4* 0.01, #490
  29. 39.3* 0.01, #495
  30. 46.8* 0.01 #500
  31. ])
  32. f = InterpolatedUnivariateSpline(λ, W_λ, k= 3) #分母曲线拟合
  33. a=f.integral( 380, 500) #积分运算分母
  34. print( "分母:",a)
  35. f2=InterpolatedUnivariateSpline(λ,np.multiply(τ,W_λ),k= 3) #分子曲线拟合
  36. b=f2.integral( 380, 500) #积分运算分子
  37. print( "分子:",b)
  38. print( "加权透射率:",b/a)
  39. print( "加权阻隔率:", 1-b/a)

 

上述是对外宣称阻隔率70%的蓝光眼镜。

该品牌(为了通过csdn审核,已经取消名字)阻隔蓝光99%的蓝光眼镜也只有30元不到的售价。


转载:https://blog.csdn.net/appleyuchi/article/details/116457063
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场