matlab中符号函数如何求最⼤值的表达式_Matlab求解极限、
微积分问题
MATLAB提供了解决微分和积分微积分的各种⽅法,求解任何程度的微分⽅程和极限计算。可以轻松绘制复杂功能的图形,并通过求解原始功能以及其衍⽣来检查图形上的最⼤值,最⼩值和其他固定点。
本章将介绍微积分问题。在本章中,将讨论预演算法,即计算功能限制和验证限制属性。
在下⼀章微分中,将计表达式的导数,并到⼀个图的局部最⼤值和最⼩值。我们还将讨论求解微分⽅程。
最后,在“整合/集成”⼀章中,我们将讨论积分微积分。
计算极限
MATLAB提供计算极限的limit函数。在其最基本的形式中,limit函数将表达式作为参数,并在独⽴变量为零时到表达式的极限。
例如,要计算函数f(x)=(x^3 + 5)/(x^4 + 7)的极限,因为x趋向于零。
syms xlimit((x^3 + 5)/(x^4 + 7))
MATLAB
执⾏上⾯⽰例代码,得到以下结果 -
Trial>> syms x limit((x^3 + 5)/(x^4 + 7)) ans = 5/7
Shell
limit函数落在符号计算域; 需要使⽤syms函数来告诉MATLAB正在使⽤的符号变量。还可以计算函数的极限,因为变量趋向于除零之外的某个数字。要计算 -
可使⽤带有参数的limit命令。第⼀个是表达式,第⼆个是数字 - x表⽰接近,这⾥它是a。
例如,要计算函数f(x)=(x-3)/(x-1)的极限,因为x倾向于1。
limit((x - 3)/(x-1),1)
MATLAB
执⾏上⾯⽰例代码,得到以下结果 -
ans = NaN
Shell
下⾯再看另外⼀个例⼦,
limit(x^2 + 5, 3)
Shell
执⾏上⾯⽰例代码,得到以下结果 -
ans = 14
Shell
使⽤Octave计算极限
以下是Octave版本的上述⽰例使⽤symbolic包,尝试执⾏并⽐较结果 -
pkg load symbolic symbols x=sym("x");subs((x^3+5)/(x^4+7),x,0)
MATLAB
执⾏上⾯⽰例代码,得到以下结果 -
ans = 0.7142857142857142857
Shell
验证极限的基本属性
代数极限定理提供了极限的⼀些基本属性。这些属性如下 -
下⾯来考虑两个函数 -
f(x) = (3x + 5)/(x - 3) g(x) = x^2 + 1.
下⾯计算函数的极限,这两个函数的x趋向于5,并使⽤这两个函数和MATLAB验证极限的基本属性。
例⼦
创建脚本⽂件并在其中键⼊以下代码 -
syms x f = (3*x + 5)/(x-3);g = x^2 + 1;l1 = limit(f, 4)l2 = limit (g, 4)lAdd = limit(f + g, 4)lSub = limit(f - g, 4)lMult = limit(f*g, 4)lDiv = limit (f/g, 4)
MATLAB
执⾏上⾯⽰例代码,得到以下结果 -
diff函数l1 = 17 l2 = 17 lAdd = 34 lSub = 0 lMult = 289 lDiv = 1
Shell
使⽤Octave验证极限的基本属性
以下是Octave版本的上述⽰例使⽤symbolic包,尝试执⾏并⽐较结果 -
pkg load symbolic symbols x = sym("x");f = (3*x + 5)/(x-3);g = x^2 + 1;l1=subs(f, x, 4)l2 = subs (g, x, 4)lAdd = subs (f+g, x, 4)lSub = subs (f-g, x, 4)lMult = subs (f*g, x, 4)lDiv = subs (f/g, x, 4)
MATLAB
执⾏上⾯⽰例代码,得到以下结果 -
l1 = 17.0 l2 = 17.0 lAdd = 34.0 lSub = 0.0 lMult = 289.0 lDiv = 1.0
Shell
左右边界极限
当函数对变量的某个特定值具有不连续性时,该点不存在极限。 换句话说,当x = a时,函数f(x)的极限具有不连续性,当x的值从左侧接近x时,x的值不等于x从右侧接近的极限值。
对于x a的极限,从左侧即x接近a。 对于x> a的值,右极限被定义为x - > a的极限,从右边,即x接近a。 当左极限和右极限不相等时,极限不存在。
下⾯来看看⼀个函数 -
f(x) = (x - 3)/|x - 3|
下⾯将显⽰
不存在。MATLAB帮助我们以两种⽅式说明事实 -
通过绘制函数图并显⽰不连续性。
通过计算极限并显⽰两者都不同。
通过将字符串“left”和“right”作为最后⼀个参数传递给limit命令来计算左侧和右侧的极限。
例⼦
创建脚本⽂件并在其中键⼊以下代码 -
f = (x - 3)/abs(x-3);ezplot(f,[-1,5])l = limit(f,x,3,'left')r = limit(f,x,3,'right')
MATLAB
执⾏上⾯⽰例代码,得到以下结果 -
显⽰以下输出结果 -
Trial>> Trial>> f = (x - 3)/abs(x-3); ezplot(f,[-1,5]) l = limit(f,x,3,'left') r = limit(f,x,3,'right') l = -1 r = 1 Shell
MATLAB提供⽤于计算符号导数的diff命令。 以最简单的形式,将要微分的功能传递给diff命令作为参数。
例如,计算函数的导数的⽅程式 -
例⼦
创建脚本⽂件并在其中键⼊以下代码 -
syms t f = 3*t^2 + 2*t^(-2);diff(f)
MATLAB
执⾏上⾯⽰例代码,得到以下结果 -
Trial>> syms t f = 3*t^2 + 2*t^(-2); diff(f) ans = 6*t - 4/t^3
Shell
以下是使⽤Octave 计算的写法 -
pkg load symbolic symbols t = sym("t");f = 3*t^2 + 2*t^(-2);differentiate(f,t)
MATLAB
执⾏上⾯⽰例代码,得到以下结果 -
ans = 6*t - 4/t^3
Shell
基本微分规则的验证
下⾯简要说明微分规则的各种⽅程或规则,并验证这些规则。 为此,我们将写⼀个第⼀阶导数f'(x)和⼆阶导数f“(x)。
以下是微分的规则 -
规则 - 1
对于任何函数f和g,任何实数a和b是函数的导数:
h(x) = af(x) + bg(x)相对于x,由h’(x) = af’(x) + bg’(x)给出。
规则 - 2
sum和subtraction规则表述为:如果f和g是两个函数,则f'和g'分别是它们的导数,如下 -
(f + g)' = f' + g' (f - g)' = f' - g'
规则 - 3
product规则表述为:如果f和g是两个函数,则f'和g'分别是它们的导数,如下 -
(f.g)' = f'.g + g'.f
规则 - 4
quotient规则表明,如果f和g是两个函数,则f'和g'分别是它们的导数,那么 -
规则 - 5
多项式或基本次幂规则表述为:如果y = f(x)= x^n,则 -
这个规则的直接结果是任何常数的导数为零,即如果y = k,那么为任何常数 -
f' = 0
规则 - 5
chain规则表述为 - 相对于x的函数h(x)= f(g(x))的函数的导数是 -
h'(x)= f'(g(x)).g'(x)
MATLAB
例⼦
创建脚本⽂件并在其中键⼊以下代码 -
syms x syms t f = (x + 2)*(x^2 + 3)der1 = diff(f)f = (t^2 + 3)*(sqrt(t) + t^3)der2 = diff(f)f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)der3 = diff(f)f = (2*x^2 + 3*x)/(x^3 + 1)der4 = diff(f)f = (x^2 + 1)^17der5 = diff(f)f = (t^3 + 3* t^2 + 5*t -9)^(-6)der6 = diff(f)
MATLAB
执⾏上⾯⽰例代码,得到 以下结果 -
f = (x^2 + 3)*(x + 2) der1 = 2*x*(x + 2) + x^2 + 3 f = (t^(1/2) + t^3)*(t^2 + 3) der2 = (t^2 + 3)*(3*t^2 + 1/(2*t^(1/2))) +
2*t*(t^(1/2) + t^3) f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) der3 = (2*x - 2)*(3*x^3 - 5*x^2 + 2) - (- 9*x^2 + 10*x)*(x^2 - 2*x + 1) f = (2*x^2 + 3*x)/(x^3 + 1) der4 = (4*x + 3)/(x^3 + 1) - (3*x^2*(2*x^2 + 3*x))/(x^3 + 1)^2 f = (x^2 + 1)^17 der5 = 34*x* (x^2 + 1)^16 f = 1/(t^3 + 3*t^2 + 5*t - 9)^6 der6 = -(6*(3*t^2 + 6*t + 5))/(t^3 + 3*t^2 + 5*t - 9)^7
Shell
以下是对上⾯⽰例的Octave写法 -
pkg load symbolic symbols x=sym("x");t=sym("t");f = (x + 2)*(x^2 + 3) der1 = differentiate(f,x) f = (t^2 + 3)*(t^(1/2) + t^3) der2 = differentiate(f,t) f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) der3 = differentiate(f,x) f = (2*x^2 + 3*x)/(x^3 + 1) der4 = differentiate(f,x) f = (x^2 + 1)^17 der5 = differentiate(f,x) f = (t^3 + 3* t^2 + 5*t -9)^(-6) der6 = differentiate(f,t)
MATLAB
指数,对数和三⾓函数的导数
下表提供了常⽤指数,对数和三⾓函数的导数,
例⼦
创建脚本⽂件并在其中键⼊以下代码 -
syms x y = exp(x)diff(y)y = x^9diff(y)y = sin(x)diff(y)y = tan(x)diff(y)y = cos(x)diff(y)y = log(x)diff(y)y = log10(x)diff(y)y = sin(x)^2diff(y)y = cos(3*x^2 + 2*x + 1)diff(y)y = exp(x)/sin(x)diff(y)
MATLAB
执⾏上⾯⽰例代码,得到以下结果 -
y = exp(x) ans = exp(x) y = x^9 ans = 9*x^8 y = sin(x) ans = cos(x) y = tan(x) ans = tan(x)^2 + 1 y = cos(x) ans = -sin(x) y = log(x) ans = 1/x y = log(x)/log(10) ans = 1/(x*log(10)) y = sin(x)^2 ans = 2*cos(x)*sin(x) y = cos(3*x^2 + 2*x + 1) ans = -sin(3*x^2 + 2*x + 1)*(6*x + 2) y = exp(x)/sin(x) ans = exp(x)/sin(x) - (exp(x)*cos(x))/sin(x)^2
Shell
以下代码是上⾯代码的Octave写法 -
pkg load symbolic symbols x = sym("x"); y = Exp(x) differentiate(y,x) y = x^9 differentiate(y,x) y = Sin(x) differentiate(y,x) y = Tan(x) differentiate(y,x) y = Cos(x) differentiate(y,x) y = Log(x) differentiate(y,x) % symbolic packages does not have this support %y = Log10(x) %differentiate(y,x) y = Sin(x)^2 differentiate(y,x) y = Cos(3*x^2 + 2*x + 1) differentiate(y,x) y =
Exp(x)/Sin(x) differentiate(y,x)
Shell

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。