[转载]Matlab定积分近似计算

article/2025/3/16 4:02:19

目标:加深理解积分理论中分割、近似、求和、取极限的思想方法,了解定积分近似计算的矩形法、梯形法与抛物线法,会用MATLAB语言编写求定积分近似值的程序,会用MALAB中的命令求定积分。

预备知识

     在许多实际问题中,常常需要计算定积分的值。根据微分学基本定理,若被积函数f(x)在区间[a,b]上连续,只需要找到被积函数的一个原函数F(x),就可以用牛顿-莱布尼茨公式求出定积分值。但在工程技术与科学实验中,有些定积分的被积函数的原函数可能求不出来,即使可求出,计算也可能相当复杂。特别地,当被积函数是图形或表格时,更不能用牛顿-莱布尼茨公式计算。因此必须寻求定积分的近似计算方法。大多数实际问题的积分需要用数值积分方法求出近似结果。数值积分原则上可以用于计算各种被积函数的定积分,无论被积函数是解析形式还是数表形式,其基本原理都是用多项式函数近似代替被积函数,用对多项式的积分结果近似代替对被积函数的积分。由于所选多项式的不同,可以有许多种数值积分方法,下面介绍最常用的几种差值型数值积分方法。

1、矩形法

      定积分的几何意义是计算曲边梯形的面积,如果将区间[a,b]n等分,每个小区间上都是一个小的曲边梯形,用一个个小矩形代替这些小曲边梯形,然后把所有小矩形的面积加起来就近似等于整个曲边梯形的面积,于是便求出了定积分的近似值,这就是矩形法的基本原理。

2、梯形法

      将积分区间[a,b]n等分,用线段依次连接各分点,每段都形成一个小的直角梯形。如果用这些小直角梯形面积之和代替原来的小曲边梯形面积之和,就可求得定积分的近似值。

3、抛物线法

      同梯形法,分成以抛物线为曲边的小曲边梯形。

4、相关的MATLAB命令

命令:sum(a),求数组a的和

例1 调用命令sum求矩阵x的各列元素的累加和。

>> x=[1 2 3;4 5 6;7 8 9];
>> sum(x)
ans =
    12    15    18

命令:format long,长格式,即屏幕显示15位有效数字。
命令:double(),若输入的是字符则转化为相应的ASCII码;若输入的是整数值则转化为相应的实型数值。
命令:quad(),抛物线法求数值积分。
格式:quad(fun,a,b),注意此处的fun是函数,并且为数值形式,所以使用*、/、^等运算时要加上小数点。
其中,quadl(fun,a,b,…)为用高精度进行计算,在同样的精度下高阶方法quadl要求的节点较少,效率可能比quad更高。

例2

>> Q=quad('1./(x.^3-2*x-5)',0,2)
Q =
   -0.4605
 
>> F=inline('1./(x.^3-2*x-5)');
>> S1=quad(F,0,2)
S1 =
   -0.4605

命令:trapz(),梯形法求数值积分。
格式:trapz(x,y)。
其中x为带有步长的积分区间,y为数值形式的运算(相当于上面介绍的函数fun)。

例3

>> x=-1:0.1:1;
>> y=1./(1+25*x.^2);
>> T=trapz(x,y)
T =
    0.5492

&1 trapz函数

trapz其实就是Trapezoidal(梯形的简写)。​使用方法如下:

I=trapz(x,y)

其中x和y分别是自变量和对应的值,例如我们有函数y=x^3-2x-3,为了计算在[0,1]上的积分,可以这么做:

>> format compact

>> x=0:0.05:1;

>> y=x.^3-2.*x-3;

>> I=trapz(x,y)

I =

   -3.7494

我们知道这个函数是可以直接使用经典积分理论计算的,精确值为 -15/4=-3.75,误差为0.016%

可积函数用这个并没有太大的意义,但是对于复杂的函数,使用起来就有用的多了。

&2 cumtrapz函数

cumtrapz函数和trapz函数使用方法类似,但是返回的结果不一样。

 前面的cum是cumulation的意思,也就是累积,相当于是不断地从第一个值累积到当前的结果。

还是以上面的函数为例:

>> x=0:0.1:1;

>> y=x.^3-2.*x-3;

>> Z=cumtrapz(x,y)

Z =

         0   -0.3100   -0.6395   -0.9878   -1.3532   -1.7337   -2.1267   -2.5287   -2.9360   -3.3440   -3.7475

这几个都是积分结果,下限都是x(0),也就是0,上限分别是0,0.1,0.2,一直到1.0

例4 计算image

>> x=0:pi/100:pi;
>> y=sin(x);
>> trapz(x,y)
ans =
    1.9998

注:梯形法是步长越小精度越高。
 
命令:dblquad(),抛物线法求二重数值积分。
格式:dblquad(fun,xmin,xmax,ymin,ymax),fun可以用inline定义,也可以通过某个函数文件的句柄传递。

例5

>> Q1=dblquad(inline('y*sin(x)'),pi,2*pi,0,pi)
Q1 =
   -9.8696
>> Q2=dblquad(inline('y*sin(x)'),0,pi,pi,2*pi)
Q2 =
   29.6088
>> Q3=dblquad(@integrnd,pi,2*pi,0,pi)
Q3 =
   -9.8696

     编写M文件:

% integrnd.m
function z=integrnd(x,y)
z=y*sin(x);

命令:fprintf(文件地址,格式,写入的变量),把数据写入指定文件。

例6

>> x=0:.1:1;
>> y=[x;exp(x)];
>> % 打开文件
>> fid=fopen('vexp.txt','w');
>> % 写入
>> fprintf(fid,'%6.2f%12.8f\n',y);
>> % 关闭文件
>> fclose(fid);

命令:int(f,v,a,b),求f关于v积分,积分区间有[a,b]。
命令:subs(f,’x’,a),将a赋值给符号表达式f中的x,并计算出值。

计算实验:计算定积分近似值

1、矩形法计算定积分近似值

      取f(x)=exp(x),求定积分int(exp(x),0,1)的近似值。

>> % 积分区间为[0,1],等距划分为20个子区间。
>> x=linspace(0,1,21);
>> % 选取每个子区间的端点并计算端点处函数值
>> % 取区间的左端点处得函数值乘以区间长度全部加起来。
>> y1=y(1:20);
>> s1=sum(y1)/20
s1 =
    1.6757

      若选取右端点:

>> y2=y(2:21);
>> s2=sum(y2)/20
s2 =
    1.7616

2、编程用矩形法计算定积分的近似值

      根据image,编写如下M文件:

f=input('请输入被积函数f(x)=');
qujian=input('区间[a,b]=');
n=input('请输入子区间个数n=');
s=0;
for i=1:n
    x=qujian(1)+(qujian(2)-qujian(1))/n*i;
    y=eval(f);
    s=s+y;
end
disp('定积分的近似值是:');
s=s*(qujian(2)-qujian(1))/n

      存为juxingfa.m。运行结果为:

>> juxingfa
请输入被积函数f(x)='x^2'
区间[a,b]=[0,1]
请输入子区间个数n=10
定积分的近似值是:
s =
    0.3850


>> juxingfa
请输入被积函数f(x)='x^2'
区间[a,b]=[0,1]
请输入子区间个数n=1000
定积分的近似值是:
s =
    0.3338

注:可见子区间个数较少时精度不够高。

3、编程用梯形法计算定积分的近似值

根据公式image,编写如下M文件:

f=input('请输入被积函数f(x)=');
qujian=input('区间[a,b]=');
n=input('请输入子区间个数n=');
s=0;
for i=1:n
    x=qujian(1)+(qujian(2)-qujian(1))/n*i;
    y=eval(f);
    s=s+y;
end
x=qujian(1);
y=eval(f);
s=s+y/2;
x=qujian(2);
y=eval(f);
s=s+y/2;
disp('定积分的近似值是:');
s=s*(qujian(2)-qujian(1))/n

      存为tixingfa.m,运行结果如下:

请输入被积函数f(x)='x^2'
区间[a,b]=[0 1]
请输入子区间个数n=10
定积分的近似值是:
s =
    0.4350

4、导数、单调性与极值

      导数是分析充分光滑的函数f(x)的单调性和极值点的有效方法。函数在x0点达到局部极大(或局部极小)的充分条件是f’(x0)=0且f’’(x0)<0(或f’’(x0)>0)。

命令:fminbnd或fminsearch,求极小值
>> [x,f]=fminsearch(inline(fun),0.5) 


http://chatgpt.dhexx.cn/article/JgA1lbIR.shtml

相关文章

matlab近似计算求积分,matlab定积分的近似计算.ppt

matlab定积分的近似计算.ppt MATLAB数学建模与仿真 定积分的近似计算 2 定积分计算的基本公式是牛顿 莱布尼兹公式 但当被积函数的原函数不知道时 如何计算 这时就需要利用近似计算 特别是在许多实际应用中 被积函数甚至没有解析表达式 而是一条实验记录曲线 或一组离散的采样…

【Matlab】求解积分问题

求解积分问题 不定积分inf函数调用实例1实例2 定积分与无穷积分实例1实例2 多重积分 不定积分 inf函数调用 Finf(fun,x)fun是被积函数&#xff0c;是自变量&#xff0c; 当然如果只有一个自变量可以省略。 实例1 f ( x 2 1 ) 2 f {\left( {{x^2} 1} \right)^2} f(x21)2 …

matlab定积分怎么输入,Matlab计算定积分的操作内容讲解

许多伙伴还不晓得Matlab计算定积分的操作&#xff0c;而下面笔者就分享了Matlab计算定积分的操作内容&#xff0c;希望有需要的朋友都来共同学习哦。 打开Matlab&#xff0c;找到Matlab的命令窗口&#xff0c;点击进入&#xff0c;如图&#xff0c;当然也可以编辑脚本然后通过运…

关于用MATLAB求解定积分方程的问题

关于用MATLAB求解定积分方程的问题 Matlab论坛的总结帖&#xff1a; MATLAB中文论坛常见问题归纳-技术专栏-MATLAB中文论坛 帖子里面也有包含对于matlab中常用积分求解的介绍。 关于用matlab求解积分方程的问题&#xff0c;现在比较流行的是符号求解的方法。 对于积分方程的…

MATLAB新手简明使用教程(六)——使用matlab求解定积分和不定积分的问题——新手来看,保证看懂。

前期回顾 上期的教程虽然简短&#xff0c;但还是有点东西的&#xff0c;上一节中&#xff0c;我们学习了下面的知识点。 在matlab中定义矩阵&#xff1a;A [1 2 3; 2 3 4; 3 4 5]&#xff0c;每行元素空格隔开&#xff0c;两行之间使用分号隔开。线性代数矩阵乘法运算、求解…

给div赋html,jquery怎么给div赋值

jquery给div赋值的方法&#xff1a;首先创建addtext函数&#xff1b;然后在函数内通过id(mydiv)获取div对象&#xff1b;最后使用text方法给div赋值即可&#xff0c;如【function addtext(){$(#mydiv).text(xx)}】。 环境&#xff1a; 本文适用于所有品牌的电脑。 (学习视频分享…

jQuery数据赋值解析

作者:Jiang, Jinlin 在我们使用jQuery中,会用到$(element).data()方法存取赋值到元素上的数据。通过该方法,我们每次通过selector获取该元素时,总能获取其赋值的数据。今天,我们就来看看jQuery是如何实现的。 首先,我们先从data方法看起: data方法接受两种参数形式,第…

给div赋值 html,jquery给div赋值的示例

jquery给div赋值的示例 发布时间&#xff1a;2020-11-30 11:44:03 来源&#xff1a;亿速云 阅读&#xff1a;120 作者&#xff1a;小新 小编给大家分享一下jquery给div赋值的示例&#xff0c;希望大家阅读完这篇文章后大所收获&#xff0c;下面让我们一起去探讨吧&#xff01;j…

jQuery取值和赋值的基本方法

一、.html() 获取集合中第一个匹配元素的HTML内容,也可以往匹配到的元素中写入内容。 如果写入的内容为标签&#xff0c;会被解析到页面中。 二、.text() 得到匹配元素集合中每个元素的合并文本&#xff0c;包括他们的后代 写入的标签不会被页面解析 三、.size() 返回的jQu…

Lora协议整理(第2汇报)

帧结构&#xff1a; 详细帧结构&#xff1a; 抓到的数据&#xff1a; LoraServer的搭建&#xff1a; 关于开源的lorawan server目前比较火的是brocaar的go语言版本的 https://github.com/brocaar/loraserver 另一个是gotthardp 的erlang语言的 https://github.com/gotth…

LoRaWAN与LoRa的区别!

LoRaWAN与LoRa的区别 在物联网技术快速发展的今天&#xff0c;NB-IoT、LoRa、SigFox等技术名词经常进入我们的视野中&#xff0c;对于刚刚接触物联网领域的人来说&#xff0c;在一大堆名词面前可能会混淆。面对类似于LoRa和LoRaWAN这样容易混淆的名词&#xff0c;其实只要系统…

Lora通信应用开发

概述&#xff1a; 1.了解Lora技术的基本知识 2.了解通信协议用途 3.掌握Lora模块SPI配置方法 4.掌握简单的Lora模块数据对传方法 5.掌握Lora通讯协议使用方法 一、什么是LoRa LoRa&#xff08;Long Range Radio&#xff0c;远距离无线电&#xff09;是一种基于扩频技术的…

常用的LoRa网络结构

LoRa应用中组网方式非常多&#xff0c;且很多供应商根据需求制定了相应的协议(网络层和应用层)&#xff0c;根据是否支持LoRaWAN协议可以分为LoRaWAN协议网络和私有协议网络两大类。在中国的LoRa生态中有大量的用户使用私有协议&#xff0c;而在欧美等发达国家的LoRa市场上绝大…

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

关于本教程&#xff1a; ESP32 基础篇 1.ESP32简介 2.ESP32 Arduino 集成开发环境 3.VS 代码和 PlatformIO 4.ESP32 引脚 5.ESP32 输入输出 6.ESP32 脉宽调制 7.ESP32 模拟输…

LoRa是什么

LoRa是什么 LoRa是什么LoRa调制LoRa调制参数LoRa WAN 网络LoRa技术框图LoRa WAN网络组成LoRa终端设备划分成A/B/C三类 LoRa是什么 LoRa 是LPWAN通信技术中的一种 LoRa 是美国Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输方案 LoRa调制 LoRa 采用 CSS线性扩频…

LoRaWAN协议

LoRaWAN协议定义了使用LoRa的MAC层规范&#xff0c;处在协议应用层与物理层中间的实现规范。LoRa没有开放的规范化物理层协议&#xff0c;而LoRa物理模块的接口上很多参数都可以进行配置&#xff0c;LoRaWAN同时对一些数据发送格式做了相应的限制。 物理层消息结构 上行带有CRC…

【LoRaWAN协议的扩展与衍生】

文章目录 LoRaWAN协议的扩展与衍生一、LoRaWAN中继Relay协议1.Relay协议强制需求2.Relay入网及数据交互流程3.唤醒方式 二、阿里巴巴D2D协议1.场景要求2.协议机制3.D2D的特点 三、智能家居YoLink协议1.YoLink通信协议架构及特点2.YoLink网络通信模式3.D类设备的唤醒和控制4.YoL…

什么是LoRa?

1.LoRa概述&#xff1a; 智能物联网应用改善了我们的生活方式&#xff0c;并且正在解决城市和社区面临的一些挑战&#xff1a;气候变化&#xff0c;污染控制&#xff0c;自然灾害预警和生命急救。企业也通过改进运营和效率以降低成本获取效益。这种无线射频技术正在应用到汽车…

物联网Lora组网方式及私有协议的应用

本篇文章全程干货&#xff0c;可能有点枯燥, 如果耐心看完&#xff0c;保证不会让大家失望&#xff01; 文章内容都是无际单片机编程团队的几年实战经验&#xff0c;全网独家。 本课程不仅适用于Lora技术&#xff0c;FSK、zigbee、OOK等无线通讯都可以支持&#xff0c;大家可…

LoRaWAN网络协议与LoRa私有协议相比有哪些优势

物联网很多应用现在都普遍用了LoRa技术的芯片&#xff0c;然而没有使用LoRaWan网络协议。经过调查发现&#xff0c;没有使用LoRaWAN网络协议的原因有&#xff1a;应用点数少、规模小&#xff0c;有的是因为LoRaWAN成本高&#xff0c;技术要求高&#xff0c;短时间内无法掌握&am…