📜  MATLAB 中的微积分

📅  最后修改于: 2022-05-13 01:58:43.617000             🧑  作者: Mango

MATLAB 中的微积分

微积分在工程、物理和其他科学等不同领域都很重要,但无论是物理还是工程,计算都是由机器或计算机完成的。这里使用的工具是 MATLAB,它是工程师和科学家用于数据分析的编程语言。因此,在本文中,将详细讨论使用 MATLAB 进行微积分。

MATLAB 中的限制

众所周知,微积分的概念始于极限,让我们快速回顾一下极限。我们记得一张图,上面有一个洞,一开始看起来很奇怪,但后来看起来很正常,曾经有一个符号看起来像,它被读作 f(x) 的极限为 x接近某个数字。

在这种情况下,数字是 1。X 越来越接近 1,从图的左侧,我们可以看到并记录 x 接近 1 时的 y 值。

该图表是为了更好的可视化

现在让我们考虑函数f(x)=x^2+x+4,你想找出当 x 接近 4 时的极限。

例子:

Matlab
% MATLAB code for function f(x)=x^2+x+4,
% and find out the limit when x approaches 4
syms x
f = x^2+x+4;
limit(f,x,4)


Matlab
% MATLAB code for trigonometric functions
% function be sin(x)-cos(x)/cos2x when x = pi/4
syms x
 
f = sin(x)-cos(X)/cos2x;
limit(f,x,pi/4)


Matlab
% MATLAB code for derivatives
% of algebraic function
syms x
f= 3x^2+4x+5;
diff(f)


Matlab
% MATLAB code for derivatives
% of algebraic function
syms y
y = exp(x)*tan(x);
diff(y)


Matlab
% MATLAB code for integrate
% an algebraic expression
f=@(x)sin(x)+cos(x);
i=integral(f,0,45)


Matlab
syms x,y,z
 
field = [x^2 y^3 z^4];
dimensions= [x y z];
divergence(field, dimensions)


Matlab
syms x y z
 
V = [x^3+y^3+z, y^3+x^3+z, z^3+x^3+y];
X = [x y z];
curl(V,X)


Matlab
syms x
T1 = taylor(exp(x))


输出:

现在让我们取一些三角函数,当 x 接近 pi/4 时,函数为 sin(x)-cos(x)/cos2x。

例子:

MATLAB

% MATLAB code for trigonometric functions
% function be sin(x)-cos(x)/cos2x when x = pi/4
syms x
 
f = sin(x)-cos(X)/cos2x;
limit(f,x,pi/4)

输出:

ans =  -1/√2  

MATLAB 中的微分

微分是求函数对变量的导数的过程,导数是指函数对变量的变化率。我们应用微分来找到物理学和其他领域的速度。导数是告诉我们在任意点与曲线相切的直线斜率的函数。在dy/dx中,变量y相对于x 是微分的。让我们看看下面的图表。

有一个斜率和绿线,让我们称之为割线,现在如果我们想找到线的两点之间的距离,我们将使用斜率公式,即m=(y2-y1/x2- x1)。在这种情况下,坐标是 (x, f(x)) 和 (f(x+h),f(x)),斜率将是差商,给定图形,但这只是一个近似值,我们不需要近似值,我们需要一个精确的解决方案,我们需要从割线的起点更接近 x,或者说,我们需要最小化h,我们需要 h 为零并且当 h 为零时并且直线成为曲线的切线,我们取差商的极限。

当给定极限时,这种求导数的方法称为求导数。

让我们看一些关于代数函数导数的例子。

例子:

MATLAB

% MATLAB code for derivatives
% of algebraic function
syms x
f= 3x^2+4x+5;
diff(f)

输出:

如果我们要微分指数函数,那么

例子:

MATLAB

% MATLAB code for derivatives
% of algebraic function
syms y
y = exp(x)*tan(x);
diff(y)

输出:

这里使用乘积规则,即(vu)'=vu'+uv'

在 MATLAB 中集成

积分,也叫反导数,负责求曲线下面积,积分的概念可以通过下图来理解

上图有一条曲线,如果我们想求曲线下的面积,那么这里有一个方法,曲线是用矩形填充的,矩形的总和就是曲线的面积,但问题是,有很多空白,我们用 Δx 表示,但我们仍然可以用更多的矩形填充曲线,

正如我们所见,Δx 确实减小了,但是要完全消除它,我们需要更多的矩形,

因此,通过填充足够多的矩形或矩形的宽度接近于零,Δx 变为 dx,我们就有了答案。由于我们已经讨论过积分是逆导数,所以 2x 的积分将是 x^2,而 x^2 的微分将是 2x。现在让我们看一些积分的例子,顺便说一下,积分用∫这个符号表示或表示。

让我们看看如何在 MATLAB 中集成代数表达式

例子:

MATLAB

% MATLAB code for integrate
% an algebraic expression
f=@(x)sin(x)+cos(x);
i=integral(f,0,45)

输出:

让我们看看微积分中的一些高级概念。

向量微积分

向量既有大小又有方向,它有大小,而且肯定会朝某个方向流动,类似地,如果我们走路,它将朝特定方向流动。矢量代数的概念在 STEM 中得到了广泛应用。但是为什么我们需要对向量进行积分或微分,因为在求解偏微分方程,或流体流动,或引力猫时,它是有帮助的,所以如果我们对向量进行积分或微分,我们将 X 轴和 Y 轴分别积分.

向量场的卷曲和散度

Curl and Divergence,也称为麦克斯韦方程、流体流动等的语言;但是为了理解它们,让我们想象一下从某处流动的流体并想象一下电磁场。现在通过使用散度的概念,我们可以找出流体在给定点膨胀的流动,散度是缩放量而不是矢量,因为它定义了流体在某一点膨胀的速率,因为没有参与方向,它是一个标量,要找到向量场在 3 维空间中的散度,我们对场进行偏导运算符(也称为 grad)的点积,数学上,设 F 是向量场在 3-d 空间中,以 x,y,z 为坐标,则向量场的散度为

 div F(x,y,z) = ∇.F or div F(x,y,z) = ∂f/∂x + ∂g/∂y + ∂h/∂z

在正向发散的情况下,流动是向外的,像膨胀的热气,在负向发散的情况下,考虑冷气被压缩的情况。为了形象化这一概念,想象在气球中填充一些空气,气球会膨胀,这是一个可以形象化正分歧的例子。

现在让我们看看如何在 MATLAB 中找到散度

MATLAB

syms x,y,z
 
field = [x^2 y^3 z^4];
dimensions= [x y z];
divergence(field, dimensions)

输出:

现在让我们看看 Curl 如果我们需要找到一个向量在 3-d 空间中的循环,那么我们将使用 Curl,它是场中每个点的循环密度。假设有一个具有三个维度的向量,那么向量的旋度将为

[∂P/∂y - ∂N/z]i+[∂M/∂z-∂N/∂x]j+[∂M/∂x -∂P/∂y].

为了在 MATLAB 中做同样的事情,让我们假设 V 是关于向量 X 的向量场,它们都具有三个维度。令 V =[x^3+y^3+z, y^3+x^3+z, z^3+x^3+y] 且 X = [x,y,z]。

MATLAB

syms x y z
 
V = [x^3+y^3+z, y^3+x^3+z, z^3+x^3+y];
X = [x y z];
curl(V,X)

输出:

卷曲和发散,也称为麦克斯韦电磁方程的语言,一组耦合的偏微分方程以及洛伦兹力定律,形成了电动力学的基础

∇ x E = ∂B/∂r ∇ X H = ∂D/∂r ∇.D = ρ ∇.H = 0

其中 E 是电场,B 是磁场,H 是磁场强度,ρ 是电荷密度。

MATLAB 中的梯度

梯度用于定义一条线或斜率上升或下降的剧烈程度,常规的微分方法为我们提供了只有一个变量的函数的变化率,但如果函数有两个变量(如 f(x ,y)),那么梯度的概念就来了,假设函数是

f(x,y) = 2xsin(y)

所以 f(x,y) 的梯度将是关于 x 和 y 的偏微分向量形式。

∇f= [2 sin(y)    2xcos(y)]

梯度的几何意义

假设你正在爬山,你想知道你想快速到达山顶的路径,或者你只是想绕山(在同一高度,既不上也不上) down),然后通过使用 Gradient,我们将看到这一点。让我们看看这里的等高线图,

上图是轮廓在 3-d 平面上的 2-d 投影,因此使用梯度的概念并将其绘制出来可以解决这个山问题。

泰勒级数

泰勒级数是整个微积分中最重要的定理之一。为了理解它,让我们考虑函数e^x 在 x=0 时,它是 1,但是我们怎么知道 x 是 0.2 时,我们将近似它,会有一个错误,但它会是一个小错误,但是当 x 等于 1.2 时,误差会很大,让我们看下图

我们看到一个常数函数,但是通过使用近似,我们可以使用线性近似,图形看起来像这样

但是我们可以做得比这更好,实际上,泰勒级数的研究是取非多项式函数并找到接近某个输入的多项式,因为多项式在积分或微分方面是非常友好的函数,所以我们需要在 x=0 附近找到最适合我们的指数图的函数。

x=0 处的多项式函数为T1= x^4/24 + x^3/6 + x^2/2 + x + 1。

让我们看看如何在 MATLAB 中进行泰勒逼近

MATLAB

syms x
T1 = taylor(exp(x))

输出:

上面的代码与图中所示的指数函数相同,它将作为输出给出。泰勒近似用于工程领域、统计学、物理学和计算机科学。