6.1 数值微分与数值积分
数值微分:
- dx=diff(x):计算向量 x 的向前差分,dx(i)=x(i+1)-x(i),i=1,2,…,n-1。
- dx=diff(x,n):计算向量 x 的 n 阶向前差分。例如,diff(x,2)=diff(diff(x))。
- dx=diff(A,n,dim):计算矩阵 A 的 n 阶差分,dim=1时(默认状态),按列计算差分;dim=2,按行计算差分。
数值积分:
- I=integral(filename,a,b) :基于全局自适应积分方法。其中,I 是计算得到的积分;filename 是被积函数;a 和 b 分别是定积分的下限和上限,积分限可以为无穷大。
例:求定积分
I = ∫ 1 e 1 x 1 − l n 2 x d x I=\int_1^e \frac{1}{x\sqrt{1-ln^2x}}dx I=∫1ex1−ln2x1dx
>> f=@(x)1./(x.*sqrt(1-log(x).^2)); % 使用函数句柄定义函数
>> I=integral(f,1,exp(1))
I =
1.5708
多重积分:
- I=integral2(filename,a,b,c,d) :求二重积分的数值解 ∫ c d ∫ a b f ( x , y ) d x d y \int_c^d\int_a^bf(x,y)dxdy ∫cd∫abf(x,y)dxdy
- I=integral3(filename,a,b,c,d,e,f):求三重积分的数值解 ∫ e f ∫ c d ∫ a b f ( x , y , z ) d x d y d z \int_e^f\int_c^d\int_a^bf(x,y,z)dxdydz ∫ef∫cd∫abf(x,y,z)dxdydz
例:分别求二重积分和三重积分。
∫ − 1 1 ∫ − 2 2 e − x 2 / 2 s i n ( x 2 + y ) d x d y ∫ 0 1 ∫ 0 π ∫ 0 π 4 x z e − z 2 y − x 2 d x d y d z \int_{-1}^1\int_{-2}^2e^{-x^2/2}sin(x^2+y)dxdy \\ \int_0^1\int_0^\pi\int_0^\pi4xze^{-z^2y-x^2}dxdydz ∫−11∫−22e−x2/2sin(x2+y)dxdy∫01∫0π∫0π4xze−z2y−x2dxdydz
>> f1=@(x,y) exp(-x.^2/2).*sin(x.^2+y);
>> I1=integral2(f1,-2,2,-1,1)
I1 =
1.5745
>> f2=@(x,y,z) 4*x.*z.*exp(-z.*z.*y-x.*x);
>> I2=integral3(f2,0,pi,0,pi,0,1)
I2 =
1.7328
6.2 线性方程组求解与函数极值计算
线性方程组求解:
直接法:以矩阵初等变换为基础,可以求得方程组的精确解;占用的内存空间大、程序实现较为复杂;一般适合求解低阶稠密线性方程组。
迭代法:从给定初始值逐步逼近精确解的过程,求解过程占用存储空间小,程序设计简单;适用于求解大型稀疏矩阵线性方程组;要考虑算法的收敛性。
直接解法:
利用左除运算符的直接解法:MATLAB 提供了一个左除运算符 “\” 用于求解线性方程组,它使用列主元消去法,使用起来十分方便。对于线性方程组Ax=b,可以利用左除运算符反斜杠求解,b左除以A可获得线性方程组的数值解x(Ax=b -----> x=A\b)。
例:用左除运算符求解下列线性方程组。
{ 2 x 1 + x 2 − 5 x 3 + x 4 = 13 x 1 − 5 x 2 + 7 x 4 = − 9 2 x 2 + x 3 − x 4 = 6 x 1 + 6 x 2 − x 3 − 4 x 4 = 0 \begin{cases} 2x_1+x_2-5x_3+x_4=13 \\ x_1-5x_2+7x_4=-9 \\ 2x_2+x_3-x_4=6 \\ x_1+6x_2-x_3-4x_4=0 \end{cases} ⎩ ⎨ ⎧2x1+x2−5x3+x4=13x1−5x2+7x4=−92x2+x3−x4=6x1+6x2−x3−4x4=0
>> A=[2 1 -5 1;1 -5 0 7;0 2 1 -1;1 6 -1 -4];
>> b=[13;-9;6;0];
>> x=A\b
x =
-66.5556
25.6667
-18.7778
26.5556
函数极值的计算:
函数极值:包括极大值和极小值,或者叫最大值和最小值。MATLAB 只考虑最小值问题的计算,如果要求 f(x) 的最大值,可以通过求 -f(x) 的最小值来解决。
- [xmin,fmin]=fminbnd(filename,x1,x2,option):求最小值的函数,其中,xmin 表示极小值点,fmin 表示最小值,filename是定义的目标函数。第一个函数的输入变量 xl、x2 分别表示被研究区间的左、右边界。option 为优化参数,可以通过 optimset 函数来设置。
例:求函数 f ( x ) = x − 1 x + 5 f(x)=x-\frac{1}{x}+5 f(x)=x−x1+5在区间 (-10,-1) 和 (1,10) 上的最小值点。
>> f=@(x) x-1./x+5;
[xmin,fmin]=fminbnd(f,-10,-1)
xmin =
-9.9999
fmin =
-4.8999
>> [xmin,fmin]=fminbnd(f,1,10)
xmin =
1.0001
fmin =
5.0001