在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)分析&挖掘/ Matlab微分和導數(shù)
Matlab代數(shù)(方程求解)
Matlab開發(fā)環(huán)境設置
Matlab GNU Octave
Matlab字符串
Matlab矩陣
Matlab微分和導數(shù)
Matlab數(shù)字
Matlab數(shù)據(jù)導入
Matlab整合集成
Matlab冒號符號
Matlab變量
Matlab數(shù)組
Matlab運算符
Matlab數(shù)據(jù)導出
Matlab向量
Matlab命令
Matlab決策
Matlab微積分
Matlab圖形
Matlab教程
Matlab繪圖
Matlab多項式
Matlab .m腳本文件
Matlab循環(huán)
Matlab基礎語法
Matlab函數(shù)
Matlab轉換
Matlab概述
Matlab數(shù)據(jù)類型

Matlab微分和導數(shù)

MATLAB提供用于計算符號導數(shù)的diff命令。 以最簡單的形式,將要微分的功能傳遞給diff命令作為參數(shù)。

例如,計算函數(shù)的導數(shù)的方程式 -

例子

創(chuàng)建腳本文件并在其中鍵入以下代碼 -

syms t
f = 3*t^2 + 2*t^(-2);
diff(f)

執(zhí)行上面示例代碼,得到以下結果 -

Trial>> syms t
f = 3*t^2 + 2*t^(-2);
diff(f)

ans =

6*t - 4/t^3

以下是使用Octave 計算的寫法 -

pkg load symbolic
symbols

t = sym("t");
f = 3*t^2 + 2*t^(-2);
differentiate(f,t)

執(zhí)行上面示例代碼,得到以下結果 -

ans =

6*t - 4/t^3

基本微分規(guī)則的驗證

下面簡要說明微分規(guī)則的各種方程或規(guī)則,并驗證這些規(guī)則。 為此,我們將寫一個第一階導數(shù)f'(x)和二階導數(shù)f“(x)

以下是微分的規(guī)則 -

規(guī)則 - 1

對于任何函數(shù)fg,任何實數(shù)ab是函數(shù)的導數(shù):

h(x) = af(x) + bg(x)相對于x,由h’(x) = af’(x) + bg’(x)給出。

規(guī)則 - 2

sumsubtraction規(guī)則表述為:如果fg是兩個函數(shù),則f'g'分別是它們的導數(shù),如下 -

(f + g)' = f' + g'

(f - g)' = f' - g'

規(guī)則 - 3

product規(guī)則表述為:如果fg是兩個函數(shù),則f'g'分別是它們的導數(shù),如下 -

(f.g)' = f'.g + g'.f

規(guī)則 - 4

quotient規(guī)則表明,如果fg是兩個函數(shù),則f'g'分別是它們的導數(shù),那么 -

規(guī)則 - 5

多項式或基本次冪規(guī)則表述為:如果y = f(x)= x^n,則 -

這個規(guī)則的直接結果是任何常數(shù)的導數(shù)為零,即如果y = k,那么為任何常數(shù) -

f' = 0

規(guī)則 - 5

chain規(guī)則表述為 - 相對于x的函數(shù)h(x)= f(g(x))的函數(shù)的導數(shù)是 -

h'(x)= f'(g(x)).g'(x)

例子
創(chuàng)建腳本文件并在其中鍵入以下代碼 -

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)^17
der5 = diff(f)
f = (t^3 + 3* t^2 + 5*t -9)^(-6)
der6 = diff(f)

執(zhí)行上面示例代碼,得到 以下結果 -

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

以下是對上面示例的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)

指數(shù),對數(shù)和三角函數(shù)的導數(shù)

下表提供了常用指數(shù),對數(shù)和三角函數(shù)的導數(shù),

例子
創(chuàng)建腳本文件并在其中鍵入以下代碼 -

syms x
y = exp(x)
diff(y)
y = x^9
diff(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)^2
diff(y)
y = cos(3*x^2 + 2*x + 1)
diff(y)
y = exp(x)/sin(x)
diff(y)

執(zhí)行上面示例代碼,得到以下結果 -

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

以下代碼是上面代碼的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)

計算高階導數(shù)

要計算函數(shù)f的較高導數(shù),可使用diff(f,n)

計算函數(shù)的二階導數(shù)公式為 -

f = x*exp(-3*x);
diff(f, 2)

MATLAB執(zhí)行上面代碼將返回以下結果 -

ans =
9*x*exp(-3*x) - 6*exp(-3*x)

以下是使用Octave重寫上面示例,代碼如下 -

pkg load symbolic
symbols

x = sym("x");
f = x*Exp(-3*x);

differentiate(f, x, 2)

例子
在這個例子中,要解決一個問題。由給定函數(shù)y = f(x)= 3sin(x)+ 7cos(5x),來找出方程f“+ f = -5cos(2x)是否成立。

創(chuàng)建腳本文件并在其中鍵入以下代碼 -

syms x
y = 3*sin(x)+7*cos(5*x);  % defining the function
lhs = diff(y,2)+y;        %evaluting the lhs of the equation
rhs = -5*cos(2*x);        %rhs of the equation
if(isequal(lhs,rhs))
    disp('Yes, the equation holds true');
else
    disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);

運行文件時,會顯示以下結果 -

No, the equation does not hold true
Value of LHS is: 
-168*cos(5*x)

以上是上面示例的Octave寫法 -

pkg load symbolic
symbols

x = sym("x");
y = 3*Sin(x)+7*Cos(5*x);           % defining the function
lhs = differentiate(y, x, 2) + y;  %evaluting the lhs of the equation
rhs = -5*Cos(2*x);                 %rhs of the equation

if(lhs == rhs)
    disp('Yes, the equation holds true');
else
    disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);

查找曲線的最大和最小值

如果正在搜索圖形的局部最大值和最小值,基本上是在特定地點的函數(shù)圖上或符號變量的特定值范圍內查找最高點或最低點。

對于函數(shù)y = f(x),圖形具有零斜率的圖上的點稱為固定點。 換句話說,固定點是f'(x)= 0。

要找到微分的函數(shù)的固定點,需要將導數(shù)設置為零并求解方程。

示例

要找到函數(shù)f(x)= 2x3 + 3x2 - 12x + 17的固定點

可參考以下步驟 -

首先輸入函數(shù)并繪制圖,代碼如下 -

syms x
y = 2*x^3 + 3*x^2 - 12*x + 17;  % defining the function
ezplot(y)

執(zhí)行上面示例代碼,得到以下結果 -

以上是上面示例的Octave寫法 -

pkg load symbolic
symbols

x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");

ezplot(y)
print -deps graph.eps

我們的目標是在圖上找到一些局部最大值和最小值,假設要找到圖中間隔在[-2,2]的局部最大值和最小值。參考以下示例代碼 -

syms x
y = 2*x^3 + 3*x^2 - 12*x + 17;  % defining the function
ezplot(y, [-2, 2])

執(zhí)行上面示例代碼,得到以下結果 -

以下是上面示例的Octave寫法 -

pkg load symbolic
symbols

x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");

ezplot(y, [-2, 2])
print -deps graph.eps

接下來,需要計算導數(shù)。

g = diff(y)

MATLAB執(zhí)行代碼并返回以下結果 -

g =

6*x^2 + 6*x - 12

以下是上面示例的Octave寫法 -

pkg load symbolic
symbols

x = sym("x");

y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)

接下來求解導數(shù)函數(shù)g,得到它變?yōu)榱愕闹怠?/p>

s = solve(g)

MATLAB執(zhí)行代碼并返回以下結果 -

s = 
     1
    -2

以下是上面示例的Octave寫法 -

pkg load symbolic
symbols

x = sym("x");

y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)
roots([6, 6, -12])

這與我們設想情節(jié)一致。 因此,要評估臨界點x = 1,-2處的函數(shù)f??梢允褂?code>subs命令替換符號函數(shù)中的值。

subs(y, 1), subs(y, -2)

MATLAB執(zhí)行代碼并返回以下結果 -

ans =
 10
ans =
 37

以下是上面示例的Octave寫法 -

pkg load symbolic
symbols

x = sym("x");

y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)

roots([6, 6, -12])

subs(y, x, 1), subs(y, x, -2)

因此,在間隔[-2,2]中函數(shù)f(x)= 2x^3 + 3x^2 - 12x + 17的最小值和最大值分別為1037

求解微分方程

MATLAB提供了用于求解微分方程的dsolve命令。

找到單個方程的解的最基本的dsolve命令形式是 -

dsolve('eqn')

其中eqn是用于輸入方程式的文本串。

它返回一個符號解,其中包含一組任意常量,MATLAB標記C1,C2等等。
還可以為問題指定初始和邊界條件,以逗號分隔的列表遵循以下公式:

dsolve('eqn','cond1', 'cond2',…)

為了使用dsolve命令,導數(shù)用D表示。例如,像f'(t)= -2 * f + cost(t)這樣的等式輸入為 -

'Df = -2*f + cos(t)'

較高階導數(shù)由D導數(shù)的順序表示。

例如,方程f"(x) + 2f'(x) = 5sin3x應輸入為 -

'D2y + 2Dy = 5*sin(3*x)'

下面來看一個一階微分方程的簡單例子:y'= 5y。

s = dsolve('Dy = 5*y')

MATLAB執(zhí)行代碼并返回以下結果 -

s =
 C2*exp(5*t)

再來一個二階微分方程的例子:y“-y = 0,y(0)= -1,y'(0)= 2。

dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2')

MATLAB執(zhí)行代碼并返回以下結果 -

ans =
 exp(t)/2 - (3*exp(-t))/2

上一篇:Matlab教程下一篇:Matlab多項式