正弦积分与余弦积分函数

2023-10-27

  在看天线理论时遇到了正弦积分与余弦积分函数,为了更好的理解这个函数的性质,使用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函数值
x Si x Ci x
0 0 − ∞ -\infty
π / 2 \pi /\text{2} π/2 1.371 0.472
π \pi π 1.852 0.074
3 π / 2 3 \pi /\text{2} 3π/2 1.608 -0.198
2 π 2 \pi 2π 1.418 -0.0227
3 π 3\pi 3π 1.675 0.011
4 π 4\pi 4π 1.492 -0.006
∞ \infty 1.5708 0
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. 百度百科-余弦积分
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正弦积分与余弦积分函数 的相关文章

  • 这世界公平吗?

    我最喜欢的一段台词 送给为买房而苦熬的人 我不是没有尝试过 尝试安分守己 拼命干活 挣那么一点点钱 我试过 但是外面那些人 外面那些人 他们懂建筑懂盖楼吗 他们只是拿 一点点钱出来 花一点点时间 把房价炒高不断的赚大钱 这叫做公平吗 你去问
  • js字符串RTrim方法(right trim)

    String prototype RTrim function c if c c var reg new RegExp c gi return this replace reg 附其他 function trim str 删除左右两端的空格
  • idea提升编码效率的12种插件

    前言 基本上每个程序员都会写代码 但写代码的速度不尽相同 为什么有些人 一天只能写几百行代码 而有些人 一天可以写几千行代码 有没有办法 可以提升开发效率 在相同的时间内 写出更多的代码呢 今天我跟大家一起聊聊在idea中 能提升编码效率的
  • main方法不能直接调用 非静态方法

    public class Test public static void main String args amethod args public void amethod String args 问题原因 main方法是静态方法 静态方法
  • C语言进阶——程序环境和预处理详解

    目录 一 程序环境 1 翻译环境 1 预编译 预处理 2 编译 3 汇编 4 链接 2 执行环境 运行环境 二 预处理详解 1 预定义符号 2 define 1 define定义标识符常量 2 define定义宏 3 define替换规则
  • 组合特征(四)linearsvm-tfidf(word)+lr-tfidf(article)

    将linearsvm挑选的tfidf word 特征和lr挑选的tfidf article import pickle from scipy import sparse from scipy sparse import hstack wit

随机推荐

  • 深入理解express框架

    写在前面 Express 是一个简洁而灵活的 node js Web应用框架 提供了一系列强大特性帮助你创建各种 Web 应用 和丰富的 HTTP 工具 使用 Express 可以快速地搭建一个完整功能的网站 http jafeney co
  • [Kaggle Courses]数据清洗 Data Cleaning

    文章目录 一 简介 二 数据鸟瞰和空值处理 1 数据鸟瞰 2 空值处理 三 缩放 Scaling 归一化 MinMax 和标准化 Normalization 1 缩放和归一化 2 标准化 四 时间转换 五 字符编码 六 不一致的数据输入 一
  • 前端响应式开发浅谈

    前言 我们的程序猿们在日常工作中可能会遇到部分项目需要使用到响应式布局 响应式布局可以为不同终端的用户提供更加舒适的界面和更好的用户体验 而且随着大屏幕移动设备的普及 为了避免重复开发 响应式布局显得尤为重要 在这里我就分享一下我使用到的处
  • 卷积层输出特征图大小计算

    假设输入图片为 3 200 200 普通卷积 nn Conv2d input nc output nc kernel size 3 stride 2 padding 1 特征图计算公式为 其中 为输出特征图的大小 为输入图片 特征图的大小
  • 如何用jmeter工具进行性能测试

    前言 今天我们来说说jmeter如何进行性能测试 我们都知道jmeter工具除了可以进行接口功能测试外 还可以进行性能测试 当项目趋于稳定 根据性能需求就可以着手准备性能测试了 今天就说一说jmeter如何进行性能测试 jmeter进行性能
  • Python pygame实现中国象棋单机版源码

    今天给大家带来的是关于Python实战的相关知识 文章围绕着用Python pygame实现中国象棋单机游戏版展开 文中有非常详细的代码示例 需要的朋友可以参考下 coding utf 8 Created on Sun Jun 13 15
  • 顺序、随机IO和Java多种读写文件性能对比

    概述 对于磁盘的读写分为两种模式 顺序IO和随机IO 随机IO存在一个寻址的过程 所以效率比较低 而顺序IO 相当于有一个物理索引 在读取的时候不需要寻找地址 效率很高 基本流程 总体结构 我们编写的用户程序读写文件时必须经过的OS和硬件交
  • HTTP学习重点

    1 HTTP与TCP关系 1 1 什么是HTTP协议 HTTP Hypertext Transfer Protocol 超文本传输协议 是一个简单的请求 响应协议 它通常运行在TCP之上 2 url URL Uniform Resource
  • web前端基础:CSS背景样式

    背景样式 设置元素的背景颜色 设置元素的背景图片 background color 设置元素的背景颜色 background image 把图像设置为背景 background position 设置背景图像的起始位置 background
  • 解决Django 配置mysql 遇到 No module named MySQLdb or MySQL-python

    解决Django 配置mysql 遇到 No module named MySQLdb or MySQL python 防止环境变量带来的一系列问题 先安装python 虚拟环境 pip install virtualenv 具体可浏览 h
  • 做短视频千万不要错过这5个视频素材网

    这个要看你创作什么内容 dy里面很多视频素材都是创作者自己拍摄 要不就插入一些网上找的视频素材 现在网上找到一些视频素材很多都是有版权 除非花钱买 也有免费的 但就是质量不算高 各取所需 下面我就推荐几个视频素材网站 你可以根据自己的情况选
  • 如何安装和使用vicuna

    Vicuna 是基于 LLaMa 微调得来的大规模语言对话模型 本文以 Vicuna 7B 模型为例 安装和使用 Vicuna 若需使用 Vicuna 13B 模型 仅需把参数 7B 改成 13B 即可 0 虚拟环境 在 conda 中创建
  • 用python 取得mysql随机一条记录的取巧办法

    网上有很多关于如何从数据库取得随机一条记录的办法 包括 SELECT RAND MAX id FROM random 还有据说是效率最低的办法 SELECT FROM foo ORDER BY RAND LIMIT 1 至于其他的方法 可以
  • stm32搭建mqtt_STM32+MQTT协议功能实现

    实例简介 STM32 F103VE 野火的那个 很常用的 移植好的MQtt协议 注册迪发物联的用户 连接就能行 自己亲测可用 也可以自己搭建MQTT服务器连接 实例截图 核心代码 STM32 TCP Client MQTT 完成 STM32
  • 多语言vue-i18n (vue2)

    1 安装 vue i18n npm install vue i18n 8 save npm install vue i18n save 9版本需要vue3 0 在vue2环境下 默认安装 npm install vue i18n 的版本是
  • mysql数据库优化方式

    引言 如何比较两个相同类型产品的好坏 在功能大致相同的情况下 剩下的就拼的是速度 比谁的代码优化的更好 提高代码质量 优化数据库 优化SQL语句提高查询效率 采用Nosql等等 这次我要记录的是8种mysql数据库优化方式 1 选取最适用的
  • 【OpenCV学习笔记】【编程实例】一(VS2010/MFC+OPenCV2.4.7读取图片和摄像头)

    问题 VS2010 MFC OpenCV 显示图片 链接 http jingyan baidu com article f71d60375ddd411ab641d1e3 html 说明 可以了解一个基本的应用OpenCV的MFC程序的基本流
  • IDEA单元测试控制台不能输入数据

    问题 在使用IDEA写单元测试方法 其中包含了输入语句 但在控制台无法输入数据 解决方案 其实这个是IDEA本身的配置问题 我们只需要修改IDEA 添加相应配置文件就好啦 具体操作如下 选择最上方工具栏中的Help gt Edit Cust
  • git pull时报错:Your local changes to the following files would be overwritten by merge

    1 产生原因 这种情况一般是由于 你在工作区修改了一些代码 但是还不打算提交 这时同步主干代码的时候 如果你修改的文件与主干分支的代码有冲突 那么拉取主干分支代码时就会报这个错误 2 简单示例 下面我通过一个简单的例子给大家展示一下这个报错
  • 正弦积分与余弦积分函数

    文章目录 一 被积分函数分析 二 积分函数分析 参考 在看天线理论时遇到了正弦积分与余弦积分函数 为了更好的理解这个函数的性质 使用Python将这两个函数的图像复现出来 同时画了被积函数的图像 图1 书上的公式示例 正弦积分函数 S i