草庐IT

基于MATLAB的特殊函数积分

唠嗑! 2023-04-03 原文

目录

前言

(一)振荡函数的积分

(二)反常(广义)积分

1. 无界函数的反常积分

2. 无穷区间上的反常积分

一. quadgk()函数在MATLAB中的运用

二. 基于MATLAB的特殊函数积分

例题一 无穷积分

例题二 间断函数积分 

例题三 振荡积分

例题四 复数积分

结论


前言

此部分铺垫两个基本的数学概念。

(一)振荡函数的积分

工程问题中有时需要计算如下两种形式的积分:

通常。当很大时,在区间(a,b)内与x轴会有很多个交点,此函数也被称之为振荡函数。同样地,当很大时,在区间(a,b)内与x轴也会有很多个交点,对上述函数的积分也称之为振荡函数积分。

(二)反常(广义)积分

反常积分包括两种:

1. 无界函数的反常积分

设函数f(x)在区间[a,b)上连续,b为奇异点,若对,称极限为无界函数f(x)在[a,b)上的反常积分

2. 无穷区间上的反常积分

设对任何大于a的实数b,f(x)在[a,b)上均可积,则称极限为f(x)在无穷区间上的反常积分

一. quadgk()函数在MATLAB中的运用

quadgk()函数是MATLAB基于Gauss-Kronrod算法(自适应高斯-勒让德积分法)实现的数值积分函数,该函数可以用来求解振荡函数的积分、广义积分甚至是复数积分。调用格式为:

[q,errbnd]=quadgk(fun,a,b,param1,val1,param2,val2,...)

解释:

fun是被积函数,可以是字符表达式、内联函数、匿名函数和M函数;

a,b是积分的上限和下限,它们可以为-inf和inf;

parami,vali是指相关属性名及其属性值;

返回的errbnd是绝对误差的近似边界。

二. 基于MATLAB的特殊函数积分

例题一 无穷积分

计算

解:

MATLAB代码:

clc;clear;
format long
f1=@(x)exp(-x.^2);  % 定义被积函数
I1=quadgk(f1,0,inf)  % quadgk函数求解无穷积分

运行结果:I1 =0.886226925452758

例题二 间断函数积分 

解:

MATLAB代码:

clc;clear;
f2=@(x)x.^5.*exp(-x).*sin(x);  % 定义被积函数
[I2,errbnd] = quadgk(f2,1,10,'Waypoints',[2 5])  
% 其中2,5为间断点,f(2)和f(5)具体取值不影响积分

运行结果:

I2 =-10.940771682195068
errbnd =3.317415541455360e-14

例题三 振荡积分

解:
MATLAB代码:

clc;clear;
f3=@(x)exp(x).*cos(1000*x);
I3_quad=quad(f3,0,pi)  % quad函数求解,实际上结果是错的
I3_quadgk=quadgk(f3,0,pi,'MaxIntervalCount',1000)  % quadgk函数求解

 运行结果:

I3_quad =-0.001476265473678


I3_quadgk =2.214067045838708e-05

例题四 复数积分

解:
MATLAB代码:

clc;clear;
i=sqrt(-1);
f4=@(x)exp(-x.^2-i*x).*sin((7+2i)*x);  % 定义被积函数
I4=quadgk(f4,2,6-5i)  % 调用quadgk函数求解复数积分问题

运行结果:I4 =-0.924460417702932 +25.792072810727397i

结论

求解积分的函数在MATLAB中不止一个。

  • quad函数适用于精确地较低,被积函数平滑性较差的数值积分
  • 相比quad函数,quadl函数的精确度较高,被积函数也较为平滑
  • quadgk函数的精确度最高,可以计算振荡被积函数。同时支持无限区间并且可以处理端点处的适度奇异性。此函数还可以解决沿分段性路径的围道积分
  • quadv函数将数组值fun的quad向量化。

有关基于MATLAB的特殊函数积分的更多相关文章

  1. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  2. ruby-on-rails - 在 ruby​​ 中使用 gsub 函数替换单词 - 2

    我正在尝试用ruby​​中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了

  3. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

  4. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  5. ruby-on-rails - 标准化文件名的字符串,删除重音和特殊字符 - 2

    我正在尝试找到一种方法来规范化字符串以将其作为文件名传递。到目前为止我有这个:my_string.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n,'').downcase.gsub(/[^a-z]/,'_')但第一个问题:-字符。我猜这个方法还有更多问题。我不控制名称,名称字符串可以有重音符、空格和特殊字符。我想删除所有这些,用相应的字母('é'=>'e')替换重音符号,并将其余的替换为'_'字符。名字是这样的:“Prélèvements-常规”“健康证”...我希望它们像一个没有空格/特殊字符的文件名:“prelevements_routin

  6. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  7. ruby - 在 Ruby 中按名称传递函数 - 2

    如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只

  8. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  9. C51单片机——实现用独立按键控制LED亮灭(调用函数篇) - 2

    说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时

  10. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

随机推荐