MATLAB MATLAB
符號運算功能 符號運算功能
• Symbolic Math Toolbox
符號功能 符號功能 符號功能 符號功能 符號功能 符號功能 符號功能
符號功能 - - sym sym
>> sin(2) ans =
0.9093
>> a = sin(sym(2)) a =
sin(2)
>> double(a) ans =
0.9093
>> sym(1)/sym(2) ans =
1/2
欲將變數定義為符號,可用 syms 指令
>> syms x y
>> x^2+y^2 ans =
x^2+y^2
可用 simple 指令將符號運算結果簡化
>> a = sqrt(x^4) a =
(x^4)^(1/2)
將數值代入符號函數中,可用 subs 指令
>> f = x+2*y f =
x+2*y
>> subs(f, x, 1)
>> simple(a) ans =
x^2
>> subs(f, y, 1) >> subs(f, [x y], [1 2])
微分運算 微分運算 微分運算 微分運算 微分運算 微分運算 微分運算
微分運算 - - diff diff
diff(f,x,n)
Ex1: 求 求 求 求 之微分式 之微分式 之微分式 之微分式
>> syms x
>> f = 3*x^3+2*x^2+x+1
>> diff(f) ans =
9*x^2+4*x+1
二次微分 二次微分 二次微分 二次微分 diff(f,2)
>> syms a x
>> f = sin(a*x^2)
>> diff(f, 2)
>> diff(f, a, 2) % differentiate with respect to a (對對對對a作偏微分作偏微分作偏微分作偏微分)
3 2
3 x + 2 x + + x 1
) sin( x
2• Ex2: 求 求 求 求 之微分式 之微分式 之微分式 之微分式
>> syms x
>> f = sin(x^2)
>> diff(f) ans=
2*cos(x^2)*x
n n
d f
d x ⇒
積分運算 積分運算 積分運算 積分運算 積分運算 積分運算 積分運算
積分運算 - - int int
int(f,x,a,b)
Ex1: 求 求 求 求 之積分式 之積分式 之積分式 之積分式, , , ,即 即 即 即
>> syms x
>> f = -2*x/(1+x^2)^2
>> int(f) ans=
1/(1+x^2)
Ex2: 求 求 求 求 之值 之值 之值 之值
>> syms x
>> f = x*log(1+x)
>> int(f, 0, 1)
2 2) 1
(
2 x
x +
−
2 2
2 ?
(1 ) x dx x
− =
∫
+1
0 xln(1+ x dx)
∫
b
( )
a
f x dx ⇒
∫
(不定積分不定積分不定積分)不定積分
(定積分定積分定積分定積分)
求極限值 求極限值 求極限值 求極限值 求極限值 求極限值 求極限值
求極限值 - - limit limit
limit(f,x,a)
Ex1:
>> syms x
>> limit(sin(x)/x, x, 0) ans=
1
Ex2:
>> syms x h
>> limit((sin(x+h)-sin(x))/h, h, 0) ans=
cos(x)
0
sin( )
lim ?
x
x
→
x =
0
sin( ) sin( )
lim ?
x
x h x
→
h
+ − =
lim ( )
x a
f x
→
⇒
求級數之和 求級數之和 求級數之和 求級數之和 求級數之和 求級數之和 求級數之和
求級數之和 - - symsum symsum
symsum(f,n,a,b)
Ex1: 求 求 求 求
>> syms n k
>> symsum(n, 0, k) ans=
1/2*(k+1)^2-1/2*k-1/2
Ex2: 求 求 求 求 之值 之值 之值 之值
>> syms n
>> symsum(1/(n*(n+1)*(n+2)), 1, inf) ans=
? ...
3 2 1 0
0
= +
+ + + +
∑
==
k n
k
n
? 10 ...
3 2 1 0
10
0
= +
+ + +
∑
== n
n
>> symsum(n, 0, 10) ans=
∑
∞ 55=1
( + 1 )( + 2 ) 1
n
n n n
( )
b
n a
f n
=
∑
⇒展開多項式 展開多項式 展開多項式 展開多項式 展開多項式 展開多項式 展開多項式
展開多項式 - - expand expand
Ex1:
>> syms x
>> expand((x-2)*(x-4)) ans=
x^2-6*x+8
Ex2:
>> syms x y
>> expand(cos(x+y)) ans=
cos(x)*cos(y)-sin(x)*sin(y)
8 6
) 4 )(
2
( x − x − = x
2− x +
) sin(
) sin(
) cos(
) cos(
)
cos( x + y = x y − x y
簡化多項式 簡化多項式 簡化多項式 簡化多項式 簡化多項式 簡化多項式 簡化多項式
簡化多項式 - - simple simple
Ex1:
>> syms x
>> simple(x^3+3*x^2+3*x+1) ans=
(x+1)^3
Ex2:
>> syms x
>> simple(2*cos(x)^2-sin(x)^2) ans=
3*cos(x)^2-1
3 2
3
+ 3 x + 3 x + 1 = ( x + 1 ) x
2 2
2 cos ( ) sin ( ) x − x = ?
求多項式和聯立方程之解 求多項式和聯立方程之解 求多項式和聯立方程之解 求多項式和聯立方程之解 求多項式和聯立方程之解 求多項式和聯立方程之解 求多項式和聯立方程之解
求多項式和聯立方程之解 - - solve solve
solve(' 方程式 方程式 方程式 方程式 1 ',' 方程式 方程式 方程式 方程式 2 ',…,' 方程式 方程式 方程式 方程式 n ')
Ex1:
>> syms a b c x
>> y = solve('a*x^2+b*x+c') y=
1/2/a*(-b+(b^2-4*a*c)^(1/2)) 1/2/a*(-b-(b^2-4*a*c)^(1/2))
% pretty 漂亮的表示式 pretty(y)
2
0, ?
ax + + = bx c x =
a
ac b
x b
2
2
− 4
±
= −
Ex2: 求解 求解 求解 求解
>> syms x y
>> S = solve('x+y-1', 'x-11*y-5') S =
x: [1x1 sym]
y: [1x1 sym]
S.x = 4/3 S.y = -1/3
=
−
= +
5 11
1 y x
y
x
Ex3: 求解 求解 求解 求解
>> syms x y z
>> S = solve('x+y+z=1', 'x-y+z=2', 'x+y-z=-1') S =
x: [1x1 sym]
y: [1x1 sym]
z: [1x1 sym]
S.x=1/2 S.y=-1/2 S.z=1
註:請比較 [x,y,z] = solve('x+y+z=1', 'x-y+z=2', 'x+y-z=-1') 之指令
−
=
− +
= +
−
= +
+
1 2 1
z y
x
z y
x
z y
x
Ex4: 求解 求解 求解 求解
>> syms x y alpha
>> [x, y] = solve('x^2*y^2', 'x-y/2-alpha')
Ex5: 求解 求解 求解 求解
>> syms u v a
>> [a, u, v] = solve('u^2-v^2=a^2', 'u+v=1', 'a^2-2*a=3')
=
−
=
α y
x y x
2 1
2
0
2
=
−
= +
=
−
3 2
1
2
2 2
2
a a
v u
a v
u
數值積分 數值積分 數值積分 數值積分 數值積分 數值積分 數值積分 數值積分
等於由界限範圍 x = a 到 x = b 之間 曲線 f(x) 底下的面積
b
( )
a
f x dx
∫
數值積分的圖解說明 數值積分的圖解說明 數值積分的圖解說明 數值積分的圖解說明 (a) 矩形矩形矩形矩形 (b) 梯形梯形梯形梯形
數值積分 數值積分 數值積分 數值積分 數值積分 數值積分 數值積分 數值積分
已知數據點的積分 已知數據點的積分 已知數據點的積分 已知數據點的積分, , , ,不知函數 不知函數 不知函數 不知函數 f (x): : : : trapz
Ex:
>> x = [0 10 20 30 40];
>> y = [0.5 0.7 0.9 0.6 0.4];
>> area = trapz(x, y) % 梯形法梯形法梯形法梯形法 area =
26.5000
I = trapz(x,y)
x : 數據點之 x 值所構成的向量 y : 數據點之 f(x) 值所構成的向量
(梯形積分法梯形積分法梯形積分法梯形積分法)
數值積分 數值積分 數值積分 數值積分 數值積分 數值積分 數值積分 數值積分
已知函數 已知函數 已知函數 已知函數 f (x)之形式 之形式 之形式 之形式: : : : quad, quadl I = quad(@fun,a,b)
I = quadl(@fun,a,b)
(適應性辛普森法)
(羅伯特二次式)
fun:定義函數的 function m-file 檔名 a :積分下限
b :積分上限
數值積分 數值積分 數值積分 數值積分 數值積分 數值積分 數值積分 數值積分
Ex:
1. edit fun.m
function y = fun(x) y=exp(-x).*cos(x);
2. 求積分求積分求積分求積分 (回到回到回到Matlab Command Window)回到 area = quadl(@fun, 0, 1)
亦可使用 亦可使用 亦可使用 亦可使用
area = quadl(‘exp(-x).*cos(x)’, 0, 1)
NOTE: 函數內之數學運算必須使用向量個別元素之運算函數內之數學運算必須使用向量個別元素之運算函數內之數學運算必須使用向量個別元素之運算 (.* ./ .^)函數內之數學運算必須使用向量個別元素之運算
1
0
e
−xcos( ) x dx
∫
解方程式的根 解方程式的根 解方程式的根 解方程式的根 解方程式的根 解方程式的根 解方程式的根
解方程式的根 - - - - - - - - 牛頓法 牛頓法 牛頓法 牛頓法 牛頓法 牛頓法 牛頓法 牛頓法
如果起始猜測值為x
i,則可以從點[x
i, f(x
i)] 建立一條切 線。切線與x軸的交會點代表了修改的根之估計值。
1
1
( ) 0 ( )
( ) ( )
i i
i i
i
i i
i
f x f x
x x
x x f x
f x
+
+
′ = −
−
= − ′
•近似相對誤差可當作一個 終止準則
1 1 i i 100%
a
i
x x
ε
+x+
= − ×
a s
ε
<=ε
牛頓法 牛頓法 牛頓法 牛頓法 牛頓法 牛頓法 牛頓法
牛頓法 的流程 的流程 的流程 的流程 的流程 的流程 的流程 的流程
輸入方程式 f (x),起始猜值 x0,相對誤差停止準則停止準則 ,最大迭 代次數 N
微分 f (x) 得到 ,設定迭代次數 n = 0,開始進行迭代
計算 f (x0) 與
計算新的根之估計值
n = n + 1
若 ,則計算
若 或 ,停,終止
設定 x0 = x1
ε
s( 0) f x′
0
1 0
0
( ) ( ) x x f x
= − f x
′ ( )
f x′
1 0
1 a 100%
x x
ε
= x− ×a s
ε
≤ε
1 0
x ≠
n ≥ N