一.實驗目的
掌握符號變數和符號表示式的建立,掌握matlab的symbol工具箱的一些基本應用。
二.實驗內容
(1)符號變數、表示式、方程及函式的表示。
(2)符號為積分運算。
(3)符號表示式的操作和轉換。
(4)符號微分方程求解。
三.實驗步驟
1.符號運算的引入
在數值運算中如果求lim(sin(pi*x)/x(x-0),則可以不斷讓x趨近0,一球的表示式趨近什麼數,但是終究不能令x=0,在數值運算中0不能做除數。matlab的符號運算能解決這類問題。輸入如下命令:
>> f=sym('sin(pi*x)/x')
f =sin(pi*x)/x
>> limit(f,'x',0)
ans = pi
2.符號常量、符號變數、符號表示式的建立
1)使用sym()建立
輸入以下命令,觀察workspace中a,b,f是什麼型別的資料,占用多少位元組的記憶體空間。
>> a=sym('1')
a = 1
>> b=sym('x')
b = x
>> f=sym('2*x^2+3*y-1')
f =2*x^2+3*y-1
>> clear
>> f1=sym('1+2'),f2=sym(1+2),f3=sym('2*x+3'),f4=sym(2*x+3)
f1 =
1+2f2 =3
f3 =
2*x+3
??? undefined function or variable 'x'.
>> x=2,f4=sym(2*x+3)
x = 2
f4 = 7
sym()的引數可以是字串或數值型別,無論你是哪種型別都會生成符號型別資料。
2)使用syms建立
>> clear
>> syms x y z
>> x,y,z
x =x
y =y
z =z
>> f1=x^2+2*x+1
f1 =
x^2+2*x+1
>> f2=exp(y)+exp(z)^2
f2 =
exp(y)+exp(z)^2
>> f3=f1+f2
f3 =
x^2+2*x+1+exp(y)+exp(z)^2
用符號型別的變數經過運算(加減乘除)得到。又如:
>> f1=sym('x^2+y+siin(2)')
f1 =
x^2+y+siin(2)
>> syms x y
>> f2=x^2+y+sin(2)
f2 =
x^2+y+4095111552621091/4503599627370496
>> x=sym('2'),y=sym('1')
x =2
y =1
>> f3=x^2+y+sin(2)
f3 =
26613109689473571/4503599627370496
>> y=sym('w'),f4=x^2+y+sin(2)
y =w
f4 =
22109510062103075/4503599627370496+w
思考題:syms x是不是相當於x=sym(『x』)? 答:不等於,前者是符號x作用於整個工作空間,除非clear,後者只作用於變數x。
3.符號矩陣建立
>> syms a1 a2 a3 a4
>> a=[a1 a2;a3 a4]
a =[ a1, a2]
[ a3, a4]
>> a(1),a(3)
ans =
a1ans =
a2>> b=sym('[b1 b2;b3 b5]')
b =[ b1, b2]
[ b3, b5]
>> c1=sym('sin(x)'),c2=sym('x^2'),c3=sym('3*y+z'),c4=sym('3'),c=[c1 c2;c3 c4]
c1 =
sin(x)
c2 =
x^2c3 =
3*y+z
c4 =
3c =
[ sin(x), x^2]
[ 3*y+z, 3]
思考題:分別用sym和syms建立符號表示式:f1=cosx+(-(sin(x))^2)^(1/2),f2=y/exp(-2*t)。
答:>> sym('f1=cos(x)+(-(sin(x))^2)^(1/2)'),sym('f2=y/exp(-2*t)')
ans =
f1=cos(x)+(-(sin(x))^2)^(1/2)
ans =
f2=y/exp(-2*t)
>> syms x y t
>> f1=cos(x)+(-(sin(x))^2)^(1/2),f2=y/exp(-2*t)
f1 =
cos(x)+(-sin(x)^2)^(1/2)
f2 =
y/exp(-2*t)
4.符號算術運算
1)符號量相乘、相除(分成矩陣乘和陣列乘)。
>> a=sym(5);b=sym(7);
>> c1=a*b,c2=a/b
c1 =
35c2 =
5/7>> a=sym(5);b=sym([3 4 5]);
>> c1=a*b,c2=a\b
c1 =
[ 15, 20, 25]
c2 =
[ 3/5, 4/5, 1]
>> syms a b
>> a=[5 a;b 3];b=[2*a b;2*b a]
b =[ 2*a, b]
[ 2*b, a]
>> c1=a*b,c2=a.*b,c3=a\b,c4=a./b
c1 =
[ 10*a+2*a*b, 5*b+a^2]
[ 2*a*b+6*b, b^2+3*a]
c2 =
[ 10*a, a*b]
[ 2*b^2, 3*a]
c3 =
[ 2*a*(b-3)/(-15+a*b), (a^2-3*b)/(-15+a*b)]
[ 2*b*(a-5)/(-15+a*b), -(5*a-b^2)/(-15+a*b)]
c4 =
[ 5/2/a, a/b]
[ 1/2, 3/a]
2)符號數值任意精度控制和運算
任意精度的vpa運算可以使用命令digits(設定預設的精度)和vpa(對指定物件以新的精度進行計算)來實現。
>> a=sym('2*sqrt(5)+pi'),b=sym(2*sqrt(5)+pi)
a =2*sqrt(5)+pi
b =8572296331135796*2^(-50)
>> digits
digits = 32
>> vpa(a),c1=vpa(a,56),c2=vpa(b,56)
ans =
7.6137286085893726312809907207421
c1 =
7.c2 =
7.3)符號型別與數值型別的轉換
使用double,numeric函式可以將有理數型和vpa型符號物件轉換成數值物件。
>> clear
>> a1=sym('2*sqrt(5)+pi'),b1=double(a1),b2=isnumeric(b1),a2=vpa(a1,70)
a1 =
2*sqrt(5)+pi
b1 =
7.6137
b2 =
1a2 =
7.5.符號表示式的操作和轉換
1)獨立變數的確定原則
獨立變數的確定原則:在符號表示式中預設變數是唯一的。matlab會對單個英文小寫字母(除i,j)進行搜尋,且以為首選獨立變數。
如果表示式中字幕唯一,且無x,就選在字母表順序中最接近x的字母。如果有相連的字母,則選擇在字母表中較後的那乙個;
輸入以下命令:
>> clear
>> f=sym('a+b+i+j+x+y+xz')
f =a+b+i+j+x+y+xz
>> findsym(f)
ans =
a, b, j, x, xz, y
>> findsym(f,1),findsym(f,2),findsym(f,3),findsym(f,4),findsym(f,5),findsym(f,6)
ans =
xans =
x,xz
ans =
x,xz,y
ans =
x,xz,y,j
ans =
x,xz,y,j,b
ans =
x,xz,y,j,b,a
2)符號表示式的化簡
(1)合併同類項collect
>> syms x t;f=(x^2+x*exp(-t)+1)*(x+exp(-t));
>> f1=collect(f),f2=collect(f,'exp(-t)')
f1 =
x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t)
f2 =
x*exp(-t)^2+(2*x^2+1)*exp(-t)+(x^2+1)*x
(2)顯示格式美化pretty
>> pretty(f1),pretty(f2)
322x + 2 exp(-t) x + (1 + exp(-t) ) x + exp(-t)
2 22
x exp(-t) + (2 x + 1) exp(-t) + (x + 1) x
(3)多項式展開expand函式。展開(x-1)^12。
>> syms x;
>> f=(x-1)^12;
>> pretty(expand(f))
12 11 10 9 8 7 6 5
1 + x - 12 x + 66 x - 220 x + 495 x - 792 x + 924 x - 792 x
4 3 2
495 x - 220 x + 66 x - 12 x
(4)因式分解fator函式,分解x^12-1。
運算符號由來
500多年以前,德國有一位數學家叫威德曼。他在橫線上加一豎 用來表示增加的意思,在 上去掉一豎 用來表示減少 去掉的意思。於是,加號 和減號 就產生了。但是它們被大家公認,作為運算符號,是從1514年被荷蘭數學家荷伊克正式應用開始。是1557年英國劍橋大學的列科爾德引入的。後來德國數學家萊布尼茲倡議...
實驗一MATLAB基本操作及運算
一 實驗目的 1 理解matlab資料物件的特點 2 掌握基本matlab運算規則 3 掌握matlab幫助的使用方法 二 實驗的裝置及條件 計算機一台 帶有matlab7.0以上的軟體環境 三 實驗內容 要求建立乙個名為的,把與實驗內容1 7相關的實驗命令都放入該檔案中,題與題之間用相應注釋分割。...
四則混合運算和簡便運算
龔山完小吳玲 在小學的時候我們主要學習的就是一些的計算很簡便的運算方法,這些的知識點都是繼續學習數學的基礎,只有打好基礎才能夠更好的學習。下面給大家的是小學六年級數學教案 運算定律與簡便演算法四則混合運算,大家可以在實際的基礎上借鑑。一.教學目的 1.使學生掌握加法和乘法的運算定律,能夠比較熟練地運...