matlab--积分integration

int(f):对f的不定积分,

表达式f可以通过先创建变量或引用或直接将字符串传递给int

写答案是记得加上常数项C1等

 >> int(x)
 
ans =
 
x^2/2

>> syms n;
>> int(x^n)
 
ans =
 
piecewise(n == -1, log(x), n ~= -1, x^(n + 1)/(n + 1))

如果我们没有对函数的变量进行说明,在使用时会假定一个变量

>> g=sin(n*t);
>> int(g)
 
ans =
 
-cos(n*t)/n

int(f,v):对f进行不定积分,其中v是变量

>> int(g,n)
 
ans =
 
-cos(n*t)/t

subs可以获得给定值的表达式的数值

在一个变量中用数值替换多个符号变量时,用{}

>> subs(F,{b,x},{2,4})
 
ans =
 
16/log(2)

>> f=x^5*cos(9*x);
>> F=int(f,x)
 
F =
 
(40*cos(9*x))/177147 + (40*x*sin(9*x))/19683 - (20*x^2*cos(9*x))/2187 + (5*x^4*cos(9*x))/81 - (20*x^3*sin(9*x))/729 + (x^5*sin(9*x))/9
 
>> pretty(F)
                               2
cos(9 x) 40   x sin(9 x) 40   x  cos(9 x) 20
----------- + ------------- - --------------
   177147         19683            2187

      4               3                5
     x  cos(9 x) 5   x  sin(9 x) 20   x  sin(9 x)
   + ------------- - -------------- + -----------
           81              729             9

被积函数含有两个变量时具体看需要对那个变量进行积分,修改v

>> syms x y
>> f=3*y*sec(x);
>> F=int(f,y)
 
F =
 
(3*y^2)/(2*cos(x))
 
>> pretty(F)
     2
  3 y
--------
2 cos(x)

定积分int(f,a,b):a和b为积分的上下限

inf:正无穷

>> int(x,2,3)
 
ans =
 
5/2

>> int(x^2,-6,6)
 
ans =
 
144

double(a):可以得到一个数值结果

>> f=x^2*cos(x);
>> F=int(f,x)
 
F =
 
sin(x)*(x^2 - 2) + 2*x*cos(x)
 
>> ;s=subs(f,x,6)-subs(f,x,-6)
 
s =
 
0
 
>> s=int(f,-6,6)
 
s =
 
24*cos(6) + 68*sin(6)
 
>> double(s)

ans =

           4.0438

??????????为什么不是0

计算:\int_{0}^{\infty }e^{-x^2}*sin(x)

>> F=int(f,x,0,inf)
 
F =
 
-(pi^(1/2)*erf(1i/2)*exp(-1/4)*1i)/2
 
>> double(F)

ans =

    0.4244

多重积分:

\int \int \int xy^5z^5dxdydz

>> syms x y z;
>> f=x*y^5*z^5;
>> F=int(int(int(f,x),y),z)
 
F =
 
(x^2*y^6*z^6)/72

\int_{1}^{2}\int_{2}^{4}x^2ydxdy

>> f=x^2*y;
>> F=int(int(f,x,2,4),y,1,2)
 
F =
 
28

数值积分:

通过trapz(x,y):执行梯形积分:

x,y是两个数组,x包含积分所出现的域,y包含这些点上的函数值

微积分中梯形积分法:将曲线的区域划分为一组矩阵,然后加起来的面积即为整个区域的积分。

>> x=linspace(0,2,10);
y=x.^2;
a=trapz(x,y)

a =

    2.6831

>> syms t
>> f=int(t^2,0,2)
 
f =
 
8/3
 
>> double(f)

ans =

    2.6667

>> x=linspace(0,2,20);
y=x.^2;
a=trapz(x,y)

a =

    2.6704

可以看出矩形分的越多,算出来的值与真实值就越接近

trapz(x,y):更多用于离散积分里面,在一个小的区段里面可以视为是匀速

>> t=[1:1:10];
v=[65 95 110 150 170 210 240 260 265 272];
x(1)=0;
for k=[1:9]
x(k+1)=trapz(t(k:k+1),v(k:k+1))+x(k);

disp(x(k))
end
     0

    80

  182.5000

  312.5000

  472.5000

  662.5000

  887.5000

   1.1375e+03

        1400

最终的值:

>> trapz(t,v)

ans =

   1.6685e+03

正交积分(quadrature integration)

quad和quad1命令:更好的使用二次函数近似曲线下的面积而不是矩形

辛普森法则通过将积分范围分成偶数来实现这一点截面的面积,近似于每队相邻截面下的面积不同的二次函数。

>> syms x;
>> f=exp(-2*x)
 
f =
 
exp(-2*x)
 
>> F=int(f,1,2)
 
F =
 
(exp(-4)*(exp(2) - 1))/2
 
>> double(F)

ans =

    0.0585

>> F=int(f,x,1,2)
 
F =
 
(exp(-4)*(exp(2) - 1))/2
 
>> double(F)

ans =

    0.0585

>> F=int(f,x,1,5/2)
 
F =
 
(exp(-5)*(exp(3) - 1))/2
 
>> double(F)

ans =

    0.0643

>> f=exp(-2*x);
>> F=int(f,x,0,1/8)
 
F =
 
1/2 - exp(-1/4)/2
 
>> double(F)

ans =

    0.1106

>> quad(f,0,1/8)------------(不推荐用,改用integral)
错误使用 fcnchk (第 107 行)
如果 FUN 为 MATLAB 对象,则它必须具有 feval 方法。

出错 quad (第 57 行)
f = fcnchk(funfcn);

@(x):表示创建一个关于x的函数

>> syms f(x)
>> f=exp(-2*x);
integral(f,0,1/8)
错误使用 integral (第 82 行)
第一个输入参数必须为函数句柄。
 
>> syms f(x)
f=@(x) exp(-2*x);
integral(f,0,1/8)

ans =

    0.1106

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一夕ξ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值