MATLAB學習筆記(二):符號計算_-_1,matlab_-_1
2.1 符號對象和符號運算式
建立一個基本符號對象
syms a
建立一個基本的符號數字
sym('num')sc=sym('num')
符號類數字與數值類數位差別
>> clear>> a=5+pi,b=sym('5+pi'),ca=class(a),cb=class(b),vpa(a-b)a = 8.1416 b = pi + 5 ca =doublecb =sym ans = -0.00000000000000012246467991473531772260691423833符號運算式
由符號變數構成的運算式叫符號運算式
如求方程 uz^2+vz+w=0的解
>> clear>> syms u v w z>> Eq=u*z^2+v*z+w;>> solve(Eq) ans = - u*z^2 - v*z >> findsym(Eq),findsym(Eq,1)ans =u,v,w,zans =w
兩個好玩的指令:solve() 解方程函數,預設離x絕對值最小的字母為未知數,也可以對指定變數解方程,如 solve(Eq,z);
findsym(Eq) 確認運算式Eq中所有的自由符號變數(運算式也可以是符號矩陣)
findsym(Eq,N) 從運算式中確認出距離x最近的N個自由符號變數
2.2 符號數字及運算式的操作
數值數字與符號數字之間的強制轉換
>> clear>> a=88;b=sym('88');>> class(sym(a)),class(double(b))ans =symans =double補:class(變數名) 返回該變數的資料類型
符號數字任意精度的計算
>> clear>> a=88;>> x=vpa(a) x = 88.0 >> class(x)ans =sym
一個指令: vpa(x) 將運算式x轉換為32位(預設 可以改變,用 vpa(x,n))精度下的符號數字
符號運算中有許多操作指令,如collect(合并同類項) ,expand(對指定項展開),factor(進行因子分解) ,numden(提取公因式) ,pretty(習慣方式顯示) 但其中最常用的是
simple(Eq) 把Eq化簡成最簡形式
如 簡化 f=(1/x^3+6/x^2+12/x+8)^(1/3)
>> clear>> syms x>> f=(1/x^3+6/x^2+12/x+8)^(1/3);>> Eq=simple(f) Eq = ((2*x + 1)^3/x^3)^(1/3)
fuck 。。。其實還是能繼續化簡成 2+1/x 的,不知道怎麼回事多次化簡也沒能解決這個問題,難道是版本問題?
先到這。。第二章還有很多看來今天寫不完了。。QAQ