MATLAB(四)在高等数学中的应用

版权声明:未经博主允许不得转载 https://blog.csdn.net/qq_40962368/article/details/80864049

MATLAB在高等数学中的应用

(一)求极限

matlab中求极限的命令为

limit(expr, x, a)
limit(expr, a)
limit(expr)
limit(expr, x, a, 'left')
limit(expr, x, a, 'right')

其中,limit(expr, x, a)表示求符号表达式expr关于符号变量x趋近于a时的极限;limit(expr)表示求默认变量趋近于0时的极限。

关于left和right则表示左极限和右极限。

clc,clear;
syms x
b = limit(sqrt(1+x^2)-1)/(1-cos(x))
b =
0

clc,clear;
syms x a
b = limit((1+a/x)^x,x, inf)
b =
exp(a)

(二)求导数

matlab的求导数命令为

diff(expr)
diff(expr, v)
diff(expr, sym('v'))
diff(expr, n)
diff(expr, v, n)
diff(expr, n, v)

其中:diff(expr)表示求表达式expr,关于默认变量的1阶导数;diff(expr, v, n)和diff(expr, n, v)都表示求表达式expr关于符号变量v的n阶导数。

clc, clear;
syms y(x)
y = log((x+2)/(1-x));
d3y = diff(y,3)
d3y = simplify(d3y)%对符号函数进行化简
pretty(d3y)%分数线居中显示
d3y =
(2*(1/(x - 1) - (x + 2)/(x - 1)^2)*(x - 1))/(x + 2)^3 - (2*(2/(x - 1)^2 - (2*(x + 2))/(x - 1)^3))/(x + 2) - (2*(1/(x - 1) - (x + 2)/(x - 1)^2))/(x + 2)^2 + (2*(2/(x - 1)^2 - (2*(x + 2))/(x - 1)^3)*(x - 1))/(x + 2)^2 + ((6/(x - 1)^3 - (6*(x + 2))/(x - 1)^4)*(x - 1))/(x + 2)
d3y =
-(18*(x^2 + x + 1))/(x^2 + x - 2)^3
    2
  (x  + x + 1) 18
- ---------------
     2         3
   (x  + x - 2)

(2)求向量a = [0  0.5  2  4]的一阶向前差分。

clc, clear;
a = [0 0.5 2 4];
da = diff(a)
da =
   0.500000000000000   1.500000000000000   2.000000000000000

(3)求矩阵b=的一阶差分。

b = [1 2 3;9 8 7;4 5 6];
diff(b)
ans =
     8     6     4
    -5    -3    -1

关于矩阵元素的差分运算理解如下:

    顾名思义,就是在矩阵中,一行(一列)的元素与上一行(上一列)对应元素的差值,依次排列在上一行(上一列)元素对应所在位置。矩阵元素的差分分为行差分和列差分,第一行和第一列不做差分计算。

    上述的定义是定义一介差分计算,若进行多介矩阵元素的差分计算,仅需要进行迭代计算即可。

在matlab中差分运算的理解如下:

Y = diff(X) 对数组的第一维来计算相邻 X的差值(要求长度不能为1)

  • (1)如果 X 是一个 m长度的向量, 那么Y = diff(X) 返回一个 m-1长度的向量。 Y 的元素是相邻 X的差值。Y = [X(2)-X(1) X(3)-X(2) ... X(m)-X(m-1)]。
  • (2)如果X是一个非空,非向量的p*m 矩阵,那么Y = diff(X) 返回(p-1)*m的矩阵,矩阵的元素是X每一行元素间的差值。Y = [X(2,:)-X(1,:); X(3,:)-X(2,:); ... X(p,:)-X(p-1,:)](X(2,:)-X(1,:)代表第2行减第1行)。
  • (3)如果X 是一个零矩阵, 那么Y = diff(X) 返回零矩阵。Y = diff(X,n) 通过迭代计算diff(X) n次来计算第n次的差值。事实上,这就意味着diff(X,2) 等价于diff(diff(X))。Y = diff(X,n,dim) 对 dim所指定的维来计算n次差值。 这个dim参数是一个正整数标量。

(三)求极值

求函数f(x) = x^3+6*x^2+8*x-1的极值点,并画出函数的图形。

解:对这类问题一般的求解方式为对f(x)求导,然后令导函数等于零,解方程则可求得函数f(x)的极值点。

clc,clear;
syms x
y = x^3+6*x^2+8*x-1;
dy = diff(y);
dy_zero = solve(dy)
dy_zero_num = double(dy_zero)%变成数值类型
ezplot(y)%符号函数画图
dy_zero =
 - (2*3^(1/2))/3 - 2
   (2*3^(1/2))/3 - 2
dy_zero_num =
  -3.154700538379252
  -0.845299461620748

(四)求积分

1.求不定积分

Matlab求符号函数不定积分的命令为

int(expr)
int(expr, v)

例:求不定积分 

clc,clear;
syms x
I = int(1/(1+sqrt(1-x^2)))
pretty(I)

结果为:

I =
(x*asin(x) + (1 - x^2)^(1/2) - 1)/x
                      2
x asin(x) + sqrt(1 - x ) - 1
----------------------------
              x

2.求定积分

1)求定积分的符号解

Matlab求fuha符号函数的定积分命令为

int(expr, a, b)
int(expr, v, a, b)

例:求定积分

clc,clear;
syms x
I = int(cos(x)*cos(2*x), -pi/2, pi/2)

结果为:

I =
2/3

 2)求定积分的数值解

例:求下列积分的数值解

(1)做变量替换x = 1/t,dx = -1/t^2dt,   得

clc, clear;
I = quadl(@(t)(t-3*t.^2+2*t.^3).^(-1/3),eps,0.5)

结果为

I =
   1.439615969001624

(2)

clc, clear;
I = dblquad(@(x,y)sqrt(1-x.^2-y.^2).*(x.^2+y.^2<=x), 0, 1,  -0.5, 0.5)

 结果为

I =
   0.602782455784300

 (3)

clc, clear;
fun3 = @(x,y,z)z.^2*log(x.^2+y.^2+z.^2+1)./(x.^2+y.^2+z.^2+1).*(z>=0&z<=sqrt(1-x.^2-y.^2));
I = triplequad(fun3, -1, 1, -1, 1, 0, 1)

结果为

I =
   0.127302323127225

 (五)级数求和

Matlab级数求和的命令为

r = symsum(expr, v)
r = symsum(expr, v, a, b)

 其中:expr为级数的tong通项表达式;v是求和变量;a和b分别为求和变量的起始点和终止点,若没有zhim指明a和b,则a的默认值为0,b的默认值为v-1.

例:求如下级数的和

(1) \sum_{n=1}^{\infty } \frac{2n-1}{2^{n}};

clc, clear;
syms n
f1 = (2*n-1)/2^n;
s1 = symsum(f1, n, 1, inf)

结果为

s1 =
3

 (2) \sum_{n=1}^{\infty } \frac{1}{n^2} ;

clc, clear;
syms n
f2 = 1/n^2;
s2 = symsum(f2, n, 1, inf)

结果为

s2 =
pi^2/6

猜你喜欢

转载自blog.csdn.net/qq_40962368/article/details/80864049