matlab绘制sign函数,MATLAB的Symbolic Math Toolbox详解
MATLAB 符號數學工具箱
入門
創建符號數字,變量和表達式
創建符號數字
創建符號變量
創建符號表達式
重復使用符號對象名
創建符號函數
創建符號矩陣
使用存在的符號變量
創建矩陣的同時生成元素
創建元素為符號數字的矩陣
符號計算
符號表達式的微分
符號表達式的積分
解方程
化簡符號表達式
符號表達式中的替換
繪制符號函數
入門
創建符號數字,變量和表達式
下面將展示如何創建符號數字,變量和表達式。
創建符號數字
你可以使用sym創建符號數字。符號數字用精確的有理數表示。
通過sym創建符號數字并與相同的浮點數對比
sym(1/3)
1/3
ans =
1/3
ans =
0.333
符號結果不縮進,數值結果縮進。
符號計算的結果是精確的,而數值計算的結果是近似的。
sin(sym(pi))
sin(pi)
ans =
0
ans =
1.2246e-16
創建符號變量
你有兩種方法創建符號變量,分別是syms和sym。syms是sym的簡寫。
分別使用syms和sym創建符號變量x和y
syms x
y = sym('y')
第一條命令創建了一個值為x的符號變量x。第二條命令創建了一個值為y的符號變量y。
你可以使用syms在一條命令中創建多個變量
syms a b c
你也可以使用sym在一條命令中創建多個變量
A = sym('a', [1 20])
A =
[a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,...
a11, a12, a13, a14, a15, a16, a17, a18, a19, a20]
當你所創建的符號變量的變量名和變量值不相同時,或者要創建符號數字時,則要使用sym。
創建符號表達式
黃金比例
1 + 5 2 \frac{1+\sqrt{5}}{2}21+5??
使用下面這條命令即可用符號變量表示黃金比例
phi = (1 + sqrt(sym(5)))/2;
你可以對phi執行各種數學運算。例如
f = phi^2 - phi - 1
f =
(5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2
要創建符號表達式f = phi^2 - phi - 1,首先要創建符號變量a, b, c, 和 x:
syms a b c x
然后把表達式賦給f:
f = a*x^2 + b*x + c;
重復使用符號對象名
如果你設置了一個變量等于一個符號表達式,例如
syms a b
f = a + b
f =
a + b
接著輸入
syms f
f =
f
MATLAB則會清除符號表達式f的值a + b。
所以你可以使用syms命令清除原先賦給變量的值。
創建符號函數
使用syms創建自變量為x和y的函數f。創建符號函數f的同時會自動創建符號變量x和y
syms f(x,y)
把一個數學表達式賦給f
f(x,y) = x^2*y
f(x, y) =
x^2*y
找到函數f在點(3,2)的值
f(3,2)
ans =
18
符號函數同時也接受數組作為輸入
xVal = 1:5;
yVal = 3:7;
f(xVal,yVal)
ans =
[ 3, 16, 45, 96, 175]
你可以對符號函數進行微分,積分,化簡,用自變量本身作為輸入值,和其他數學運算。例如函數f對x求導
dfx = diff(f, x)
dfx(x,y) =
2*x*y
dfx也是一個符號函數
計算df(x,y)在點x = y + 1處的值
df(y+1,y)
ans =
2*y*(y + 1)
如果你想創建常函數,比如f(x,y) = 1,你可以首先創建f(x,y),然后再進行賦值
syms f(x,y)
f(x,y) = 1
f(x, y) =
1
如果不先創建符號函數f(x,y) 就直接進行賦值 f(x,y) = 1,則會拋出錯誤。
創建符號矩陣
使用存在的符號變量
創建一個其元素為a, b, c的循環矩陣
syms a b c
A = [a b c; c a b; b c a]
A =
[ a, b, c]
[ c, a, b]
[ b, c, a]
計算矩陣第一行元素的和
sum(A(1, : ))
ans =
a + b + c
使用isAlways函數,驗證第一行元素之和等于第二列元素之和
isAlways(sum(A(1, : )) == sum(A( : , 2)))
ans =
logical
1
創建矩陣的同時生成元素
sym函數使你在創建符號矩陣或向量時無需提前定義元素。sym函數在創建符號矩陣的元素的同時創建矩陣。創建一個元
素為A1_1, …, A2_4的2×4符號矩陣:
A = sym('A', [2 4])
A =
[ A1_1, A1_2, A1_3, A1_4]
[ A2_1, A2_2, A2_3, A2_4]
可以在第一個參數中使用%d來控制矩陣元素的名字格式:
A = sym('A%d%d', [2 4])
A =
[ A11, A12, A13, A14]
[ A21, A22, A23, A24]
創建元素為符號數字的矩陣
sym函數的一個特別有用的功能是把數值矩陣轉換為符號矩陣。
產生一個3×3希爾伯特矩陣
A = hilb(3)
A =
1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
函數sym作用于A后,可得到一個精確的3×3希爾伯特符號矩陣
A = sym(A)
A =
[ 1, 1/2, 1/3]
[ 1/2, 1/3, 1/4]
[ 1/3, 1/4, 1/5]
符號計算
符號表達式的微分
1. 單變量表達式求導
使用函數diff對符號表達式求導:
syms x
f = sin(x)^2;
diff(f)
ans =
2*cos(x)*sin(x)
2. 偏導數
對于多變量符號表達式,你可以指定對哪個變量進行求導。如果你沒有指定任何變量,MATLAB將選
擇距離字母x最近的變量進行求導:
syms x y
f = sin(x)^2 + cos(y)^2;
ans =
2*cos(x)*sin(x)
符號表達式f對變量y的偏導數:
syms x y
f = sin(x)^2 + cos(y)^2;
diff(f, y)
ans =
-2*cos(y)*sin(y)
3. 二階偏導數和混合求導
符號表達式f對變量y的二階偏導數:
syms x y
f = sin(x)^2 + cos(y)^2
diff(f, y, 2)
ans =
2*sin(y)^2 - 2*cos(y)^2
執行 diff(diff(f, y)) 可以得到相同的結果。
混合求導:
syms x y
f = sin(x)^2 + cos(y)^2;
diff(diff(f, y), x)
ans =
0
符號表達式的積分
1. 單變量符號表達式的不定積分
syms x
f = sin(x)^2;
int(f)
ans =
x/2 - sin(2*x)/4
2. 多變量符號表達式的不定積分
syms x y n
f = x^n + y^n;
int(f)
ans =
x*y^n + (x*x^n)/(n + 1)
符號表達式f也可以對變量y進行積分:
syms x y n
f = x^n + y^n;
int(f, y)
ans =
x^n*y + (y*y^n)/(n + 1)
同理,f對變量n進行積分
syms x y n
f = x^n + y^n;
int(f, n)
ans =
x^n/log(x) + y^n/log(y)
3. 定積分
函數int的最后兩個參數用于指定積分上下限(倒數第二個參數指定積分下限,最后一個參數指定積分
上限)
syms x y n
f = x^n + y^n;
int(f, 1, 10)
ans =
piecewise(n == -1, log(10) + 9/y, n ~= -1,...
(10*10^n - 1)/(n + 1) + 9*y^n)
3. 如果MATLAB無法找到積分的閉合形式
如果函數int無法計算出積分,它將返回一個未經處理的積分
syms x
int(sin(sinh(x)))
ans =
int(sin(sinh(x)), x)
解方程
1. 解一元方程
用 == 定義一個方程
syms x
solve(x^3 - 6*x^2 == 6 - 11*x)
ans =
1
2
3
如果不指定方程右半部分,函數solve將假定它為0:
syms x
solve(x^3 - 6*x^2 + 11*x - 6)
ans =
1
2
3
2. 解包含多個元的方程
syms x y
solve(6*x^2 - 6*x^2*y + x*y^2 - x*y + y^3 - y^2 == 0, y)
ans =
1
2*x
-3*x
如果你不指定任何變量,MATLAB將選擇距離字母x最近的變量。
3. 解方程組
syms x y z
[x, y, z] = solve(z == 4*x, x == y, z == x^2 + y^2)
x =
0
2
y =
0
2
z =
0
8
化簡符號表達式
符號數學工具箱提供了一套化簡函數供你去操作符號表達式。
phi = (1 + sqrt(sym(5)))/2;
f = phi^2 - phi - 1
f =
(5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2
你可以通過函數simplify化簡這個答案
simplify(f)
ans =
0
注:本小節未完待續
符號表達式中的替換
注:本小節未完待續
繪制符號函數
符號數學工具箱提供的繪圖函數:
- fplot用來在二維笛卡爾坐標系上繪制符號表達式,方程或者函數。
- fplot3用來繪制3D圖形
- fsurf用來繪制曲面圖
1. 繪制顯函數
使用fplot在二維坐標系上繪制表達式x3-6x2+11x-6
syms x
f = x^3 - 6*x^2 + 11*x - 6;
fplot(f)
給x軸和y軸添加標簽。使用texlabel(f)生成標題。使用grid on顯示網格。
xlabel('x')
ylabel('y')
title(texlabel(f))
grid on
2. 繪制隱函數
使用fimplicit繪制方程和隱函數。
繪制方程(x2+y2)4=(x2-y2)2,其中-1syms x y
eqn = (x^2 + y^2)^4 == (x^2 - y^2)^2;
fimplicit(eqn, [-1 1])
3. 3D繪制
使用fplot3繪制3D參數線。
繪制參數線
x = t2sin(10t)
y = t2cos(10t)
z = t
syms t
fplot3(t^2*sin(10*t), t^2*cos(10*t), t)
4. 繪制曲面圖
使用fsurf繪制3D曲面圖。
繪制拋物面z = x2 + y2。
syms x y
fsurf(x^2 + y^2)
總結
以上是生活随笔為你收集整理的matlab绘制sign函数,MATLAB的Symbolic Math Toolbox详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java mysql embedded,
- 下一篇: matlab图片拼接变成白的,利用mat