正弦积分与余弦积分函数

本文介绍了在天线理论中遇到的正弦积分Si x和余弦积分Ci x函数,通过Python绘制它们及被积函数的图像进行分析。正弦积分的被积函数为sinx/x,余弦积分的被积函数为-cosx/x。被积函数随着x的增大趋向于0。积分函数方面,Cinx在x≥1时与sinx/x有重合,且余弦积分结果趋向于0,正弦积分趋向于1.5708。文章引用《天线理论与技术》和百度百科作为参考。
部署运行你感兴趣的模型镜像

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

图1 书上的公式示例
  • 正弦积分函数: S i   x = ∫ 0 x sin ⁡ x x d x Si\text{ }x=\int_{0}^{x}{\frac{\sin x}{x}dx} Si x=0xxsinxdx;被积分函数是 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 Ci\text{ }x=-\int_{x}^{\infty }{\frac{\cos x}{x}dx}=\int_{x}^{\infty }{-\frac{\cos x}{x}dx} Ci x=xxcosxdx=xxcosxdx;被积分函数 − 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 plt
import numpy as np

x = 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)/x
cos_t = np.cos(x)*(-1)/x

plt.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'] = False
plt.show()

在这里插入图片描述

图2 被积分函数图像

二、积分函数分析

  可以看到Cinx和 sin ⁡ x / x \sin x/x sinx/x有重合的部分,这个对应 C i   x ≈ sin ⁡ x x , x ≥ 1 Ci\text{ }x\approx \frac{\sin x}{x},x\ge 1 Ci xxsinx,x1,尤其是在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 x
00 − ∞ -\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 π 3\pi 3π1.6750.011
4 π 4\pi 4π1.492-0.006
∞ \infty 1.57080
from scipy import integrate
import matplotlib.pyplot as plt
import numpy as np

x = 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冲突了,修改为t


def g(t):
    return np.cos(t)*(-1)/t  # 积分公式里的函数,这里的变量x和上面的x冲突了,修改为t


for 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'] = False
plt.show()

在这里插入图片描述

图3 正弦/余弦积分函数图像

参考

  1. 《天线理论与技术》钟顺时,P46
  2. 百度百科-正弦积分
  3. 百度百科-余弦积分

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值