首页 > 编程知识 正文

正弦函数求积分,正弦余弦积分公式大全

时间:2023-05-05 07:08:50 阅读:266513 作者:4830

文章目录 一、被积分函数分析二、积分函数分析参考

  在看天线理论时遇到了正弦积分与余弦积分函数,为了更好的理解这个函数的性质,使用Python将这两个函数的图像复现出来,同时画了被积函数的图像。

图1 书上的公式示例 正弦积分函数: S i   x = ∫ 0 x sin ⁡ x x d x Sitext{ }x=int_{0}^{x}{frac{sin x}{x}dx} Si x=∫0x​xsinx​dx;被积分函数是 sin ⁡ x / x sin x/x sinx/x,积分区间是 ( 0 , x ) left( 0,x right) (0,x)。余弦积分函数: C i   x = − ∫ x ∞ cos ⁡ x x d x = ∫ x ∞ − cos ⁡ x x d x Citext{ }x=-int_{x}^{infty }{frac{cos x}{x}dx}=int_{x}^{infty }{-frac{cos x}{x}dx} Ci x=−∫x∞​xcosx​dx=∫x∞​−xcosx​dx;被积分函数 − cos ⁡ x / x -cos x/x −cosx/x,积分区间是 ( x , ∞ ) left( x,infty right) (x,∞),这里将Ci x的负号写到了被积分函数里面。 一、被积分函数分析

  使用matplotlib里面的plot函数作图,代码里需要注意的地方是起始点是0.2不是0,否则会因为 − cos ⁡ x / x -cos x/x −cosx/x的值是-∞而作图比例不协调。通过函数图像可以得到两个被积分函数的性质。

sin ⁡ x / x sin x/x sinx/x:当x=0时其值为1是最大,之后波动趋向于0; − cos ⁡ x / x -cos x/x −cosx/x:当x=0时其值为-∞是最小,之后波动趋向于0;

  两者共同趋向于0的原因是分子的范围是[-1,1],而分母最终会趋向于正无穷大,所以结果最终会趋向于0。

import matplotlib.pyplot as pltimport numpy as npx = np.arange(0.2, 10, 0.01) # x参数:0.2 10是范围 0.01是分辨率,因为x<0.2时,余弦积分无穷大,所以从0.2开始# 先看下sin(t)/t与-cos(t)/t的图像 这里x的范围是x>0.2,是因为x<0.2时余弦积分无穷大会超出边界,所以从0.2开始sin_t = np.sin(x)/xcos_t = np.cos(x)*(-1)/xplt.title('被积分函数') # 添加标题plt.plot(x, sin_t, label="sinx/x")plt.plot(x, cos_t, label="cosx/x")plt.legend(loc='upper left') # 显示在左上,解决label不显示的问题plt.rcParams['font.sans-serif'] = ['SimHei'] # 这一行和下一行解决中文显为方框的问题plt.rcParams['axes.unicode_minus'] = Falseplt.show()

图2 被积分函数图像 二、积分函数分析

  可以看到Cinx和 sin ⁡ x / x sin x/x sinx/x有重合的部分,这个对应 C i   x ≈ sin ⁡ x x , x ≥ 1 Citext{ }xapprox frac{sin x}{x},xge 1 Ci x≈xsinx​,x≥1,尤其是在x≥2之后几乎是重合的,不过因为求Ci x这里使用了近似解。

最终余弦积分的结果趋向于0,这是因为他的积分区间导致的,x→∞时,积分区间长度为0。正弦积分区间趋向于1.5708书上Si x和Ci x函数值如表1所示余弦积分的积分到∞代码实现不了,使用积分到300进行工程近似,即第23行代码的v_cos[a], err = integrate.quad(g, x[a], 300) 表1 Si x和Ci x函数值 xSi xCi x00 − ∞ -infty −∞ π / 2 pi /text{2} π/21.3710.472 π pi π1.8520.074 3 π / 2 3 pi /text{2} 3π/21.608-0.198 2 π 2 pi 2π1.418-0.0227 3 π 3pi 3π1.6750.011 4 π 4pi 4π1.492-0.006 ∞ infty ∞1.57080from scipy import integrateimport matplotlib.pyplot as pltimport numpy as npx = np.arange(0.2, 10, 0.01) # x参数:0.2 10是范围 0.01是分辨率,因为x<0.2时,余弦积分设计无穷大,所以从0.2开始v = x * 0.0 # 初始化v和x的长度一致,并且都是0.0,小数,0的话就是整数了v_cos = x * 0.0# 先看下sin(t)/t与cos(t)/t的图像sin_t = np.sin(x)/x # sin(x)/x的积分是从0→x,直接从前积分就行,没有进行近似cos_t = np.cos(x)*(-1)/x # cos(x)/x的积分是从x→∞,后面的积分可以忽略,所以只计算到的积分是30即可,主要看趋势def f(t): # return np.sin(t)/t # 积分公式里的函数,这里的变量x和上面的x冲突了,修改为tdef g(t): return np.cos(t)*(-1)/t # 积分公式里的函数,这里的变量x和上面的x冲突了,修改为tfor a in range(0, len(x), 1): # 第一个积分出来是nan,先跳过第0个元素 v[a], err = integrate.quad(f, 0, x[a]) # 0,np.pi是积分范围,在最后的画图里面np.pi应该是变量 v_cos[a], err = integrate.quad(g, x[a], 300) # v_cos[a], err = integrate.quad(g, 30, x[a])plt.title('正弦/余弦积分') # 添加标题plt.plot(x, v, label="Si x")plt.plot(x, v_cos, label="Ci x")plt.plot(x, sin_t, label="sinx/x")plt.plot(x, cos_t, label="cosx/x")plt.legend(loc='upper left') # 显示在左上,解决label不显示的问题plt.rcParams['font.sans-serif'] = ['SimHei'] # 这一行和下一行解决中文显为方框的问题plt.rcParams['axes.unicode_minus'] = Falseplt.show()

图3 正弦/余弦积分函数图像 参考 《天线理论与技术》矮小的鼠标,P46百度百科-正弦积分百度百科-余弦积分

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。