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 21874 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
计算:
>> F=int(f,x,0,inf)
F =
-(pi^(1/2)*erf(1i/2)*exp(-1/4)*1i)/2
>> double(F)ans =
0.4244
多重积分:
>> 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
>> 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
080
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