基于MATLAB的数值积分问题求解(附完整代码与例题)

目录

一. 由给定数据进行梯形求积分

1.1 数学理论

1.2 例题与MATLAB代码

例题一

例题二

二. 单变量数值积分问题求积

2.1 数学理论

2.2 例题与MATLAB代码

例题三

例题四

例题五

例题六


一. 由给定数据进行梯形求积分

1.1 数学理论

梯形求积的图形理解可看如下图:

把函数分解成无数个这种类似的梯形,如下:

积分形式:

I=\int_a^b{f(x)}dx=\sum_{i=1}^N\int_{x_i}^{x_{i+1}}f(x)dx=\sum_{i=1}^N\Delta f_i

梯形面积形式:

S=\frac{1}{2}[\sum_{i=1}^{N-1}(y_{i+1}+y_i)(x_{i+1}-x_i)]=\frac{1}{2}\lbrace\sum_{i=1}^{N-1}[(y_{i+1}-y_i)+2y_i](x_{i+1}-x_i)\rbrace

上式中向量:

x={[x_1,x_2,\ldots,x_N]}^T,y={[y_1,y_2,\dots,y_N]}^T

梯形面积对应的MATLAB代码:

sum((2*y(1:end-1,:)+diff(y)).*diff(x))/2

MATLAB自带有函数:trapz() 来计算数值梯形积分。调用格式为:

trapz(x,y)

来看几道例题。

1.2 例题与MATLAB代码

例题一

用梯形法求x\in(0,\pi)区间内,函数sin(x),cos(x),sin(\frac{x}{2})的定积分值。

解:

MATLAB代码:

clc;clear;
x1=[0:pi/30:pi]';
y=[sin(x1) cos(x1) sin(x1/2)];
x=[x1 x1 x1];


S1=sum((2*y(1:end-1,:)+diff(y)).*diff(x))/2 %直接求解

S2=trapz(x1,y) %调用函数求解

运行结果:

S1 =1.998171961343654   0.000000000000000   1.999543052990808


S2 =1.998171961343654   0.000000000000000   1.999543052990808

结果分析:两种方法得出的结果完全一致

例题二

用定步长方法求解积分\int_0^{\frac{3\pi}{2}}cos(15x)dx

解:

MATLAB代码如下:

clc;clear;

%画图
x=[0:0.01:3*pi/2]; %这样赋值能确保3*pi/2点包含在内
y=cos(15*x);
plot(x,y)

%求取理论值
syms x;
A=int(cos(15*x),0,3*pi/2)

%数值方法
h0=[0.1,0.01,0.001,0.0001,0.00001,0.000001]; %随着步距h的减小,计算精度逐渐增加
v=[];
for h=h0
    x=[0:h:3*pi/2];
    y=cos(15*x);
    I=trapz(x,y);
    v=[v;h,I,1/15-I]; %1/15是积分的理论值
end
format long;
v

运行结果

A =1/15

结果的解释:第一列为不同的步长,第二列为对应求出的积分值,第三列为与标准积分结果的差值。

二. 单变量数值积分问题求积

2.1 数学理论

首先引入辛普森(Simpson)公式。Simpson方法求解[x_i,x_{i+1}]上的积分如下:

\Delta f_i\approx \frac{h_i}{12}[f(x_i)+4f(x_i+\frac{h_i}{4})+2f(x_i+\frac{h_i}{2})+4f(x_i+\frac{3h_i}{4})+f(x_i+h_i)]

上式子中h_i=x_{i+1}-x_i

形成图形解释,如下:

 MATLAB中可以调用函数直接计算如下:

y=quad(Fun,a,b)  y=quadl(Fun,a,b) % 求定积分
y=quad(Fun,a,b,c) y=quadl(Fun,a,b,c)
%两种函数均为变步长
%Fun为函数的字符串变量
%限定精度的定积分求解,默认精度为10-6。
%quadl函数使用的算法是自适应Lobatto算法其精度和速度均远高于quad函数

2.2 例题与MATLAB代码

例题三

求解erf(1.5)=\frac{2}{\sqrt{\pi}}\int_0^{1.5} e^{-t^2}dt

代码如下: 

clc;clear;

%运用符号工具箱
syms x;
y0=vpa(int(2/sqrt(pi)*exp(-x^2),0,1.5),60)

format long %16位精度
f=@(x)2/sqrt(pi)*exp(-x.^2);
y=quadl(f,0,1.5,1e-20) %设置高精度

error=abs(y-y0)

运行结果:

 
y0 =0.966105146475310713936933729949905794996224943257461473285748
 

y =0.966105146475311

 
error =0.000000000000000064025228489138917324084325807202

例题四

求解I并画出f(x)。

I=\int_0^4f(x)dx,其中f(x)定义为如下:

 解:

(1)画图

代码如下:

x=[0:0.01:2, 2+eps:0.01:4,4];
y=exp(x.^2).*(x<=2)+80./(4-sin(16*pi*x)).*(x>2);
y(end)=0;
x=[eps, x];
y=[0,y]; %为减少视觉上的误差,对端点与间断点(有跳跃)进行处理。

fill(x,y,'g')

运行结果:

 (2)求积分

代码如下: 

clc;clear;
f=@(x)exp(x.^2).*(x<=2)+80./(4-sin(16*pi*x)).*(x>2);

%直接调用quadl求解
I1=quadl(f,0,4)

%解析解
syms x;
I2=vpa(int(exp(x^2),0,2)+int(80/(4-sin(16*pi*x)),2,4))

运行结果:

I1 =57.764450169467679
I2 =57.76445012505301033331523538518

以下介绍一个新的MATLAB可调用的函数:integral数值积分

q=integral(fun,xmin,xmax,Name,Value)

例题五

计算函数f(x)=e^{-x^2}{(lnx)}^2的积分,x\in[0,Inf)。(此题为广义积分)

解:

MATLAB代码如下:

clc;clear;
fun=@(x)exp(-x.^2).*log(x).^2;
q=integral(fun,0,Inf)

运行结果:q =1.947522220295560

例题六

计算参数化函数f(x)=\frac{1}{x^3-2x-c} 的积分,x\in[0,2],c=5

MATLAB代码如下:

clc;clear;
c=5;
fun=@(x,c)1./(x.^3-2*x-c);
q=integral(@(x)fun(x,c),0,2)

运行结果:q = -0.460501533846733

再补充举一个例子:

代码:

clc;clear;
fun=@(x)log(x);
format long
q1=integral(fun,0,1)
q2=integral(fun,0,1,'RelTol',0,'AbsTol',1e-12)

运行结果:


q1 =-1.000000010959678


q2 =-1.000000000000010

  • 24
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Matlab数值微积分与方程数值求解。数值微积分是数值计算方法的一种,是对函数在某一区间内的近似积分。方程数值求解是利用数值计算方法来解决方程,包括线性方程组,非线性方程组和微分方程等。在Matlab中,可以使用一些特定的函数和工具箱来进行数值微积分和方程数值求解。 ### 回答2: MATLAB是一个广泛使用的数学软件,其内置了许多数值微积分和方程数值求解的工具。数值微积分是数学中的一个分支,主要研究如何利用计算机对连续函数进行计算。方程数值求解是数学中的另一个分支,主要研究如何使用计算机求解方程。 对于数值微积分而言,MATLAB提供了许多工具,如积分函数、微分函数、定积分函数等。利用MATLAB的这些工具,可以很方便地计算一些复杂的函数的积分和导数,为科研工作者和工程师提供了非常实用的工具。 对于方程数值求解而言,MATLAB同样提供了许多工具,如求根函数、ODE求解器等。利用MATLAB的这些工具,可以求解一些困难的方程组,同时也可以对一些常微分方程进行数值求解。这些工具非常实用,为科学研究和工程应用提供了非常快捷的解法。 除了上述的工具,MATLAB还提供了一些非常实用的工具箱,如优化工具箱、信号处理工具箱等。这些工具箱可以帮助用户进行更高级的数值计算和分析,同时也可以应用到各种不同的领域,如机器学习、图像处理等。 综上所述,MATLAB是一款非常强大的数学软件,其数值微积分和方程数值求解工具在科研和工程实践中有着广泛的应用。同时,MATLAB还提供了许多工具箱和应用,在许多领域都有着广泛的应用。 ### 回答3: Matlab是一款强大的数学软件工具,其中包括了数值微积分和方程数值求解的功能。数值微积分是指对函数进行数值积分、微分及求导的过程,而方程数值求解则是指求解一般的数学方程,包括线性方程组、非线性方程、微分方程等。在Matlab中,数值微积分与方程数值求解可以方便地通过内置函数或辅助工具箱实现。 首先,数值微积分是我们计算与建模中常常需要用到的过程。Matlab中可以使用诸如quad、dblquad、triplequad、quad2d、quad3d等函数进行积分计算。这些函数使用的是数值积分法,将其所需积分区间分成若干子区间,并对每个子区间进行数值积分,从而最后得到整个区间的积分估算值。此外,Matlab中还有比如diff、gradient等函数可以用于求解函数的微分和梯度,方便地为我们提供了数学分析的工具。 对于方程数值求解Matlab提供了非常丰富的内置函数和工具箱,包括ODE工具箱、PDE工具箱等。ODE工具箱可用于求解各种常微分方程的初值问题和边值问题,PDE工具箱可用于求解偏微分方程的初值问题和边值问题。同时,Matlab中还有其他非线性方程、线性方程组等常见问题求解函数,如roots、fsolve、linsolve等等。这些函数除了可以求解方程本身之外,还可以提供方程求解的收敛性、解的稳定性、数值误差等信息,有时还能给出方程的解析解。 总的来说,数值微积分与方程数值求解Matlab中非常重要的部分,也是工程师和科学家常用的分析方法。Matlab提供了丰富的函数和工具箱,方便我们进行求解,而且也带有较高的准确性和精度。因此,学习Matlab中的数值微积分和方程数值求解不仅是科学和工程计算的必要部分,也是日常分析中必不可少的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唠嗑!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值