1. 程式人生 > 其它 >數模-符號運算(Matlab定義符號變數和簡單的運算)

數模-符號運算(Matlab定義符號變數和簡單的運算)

程式碼

%% 符號變數的建立和簡單運算
% 程式碼參考:我要自學網的龔飛老師《Matlab2016數值計算與智慧演算法》
clear;clc

% 簡單符號變數的建立
syms x  % 觀察工作區, sym是symbolic的縮寫
syms a b c

% 符號方程的建立,兩種方法
syms a x
y = a*x+x^2
% y = str2sym('a*x+x^2')  %Matlab 2017b 版本後推出

% 符號矩陣
syms alpha
M = [cos(alpha)  -sin(alpha);
       sin(alpha)  cos(alpha)]

%% 簡單運算
syms a b c d e
y = a + b
% a + b
x = c - d
% c - d
y1 = x*y
% (a + b)*(c - d)
y2 = y1/y
% c - d
y3 = y1^3
% (a + b)^3*(c - d)^3
y4 = sqrt(y3)   
% ((a + b)^3*(c - d)^3)^(1/2)
y5 = exp(y4)
% exp(((a + b)^3*(c - d)^3)^(1/2))


%% 符號表達式的整理
clear;clc

% 化簡
syms a
y=(cot(a/2)-tan(a/2))*(1+tan(a)*tan(a/2))
simplify(y)
% 2/sin(a)

%% 因式分解
factor(12) % 對常數進行因式分解 
%      2     2     3
syms m n x
y = -24*m^2*x-16*n^2*x
factor(y)
% [ -8, x, 3*m^2 + 2*n^2]
y1=m^3-n^3
factor(y1)
% [ m - n, m^2 + m*n + n^2]

%% 多項式展開
syms a x
y = a*(x^2-a)^2+(x-2)
expand(y)
% a^3 - 2*a^2*x^2 + a*x^4 + x - 2

%% 合併
syms x y
z = (x+y)^2*y+5*y*x-2*x^3
% expand(z)   - 2*x^3 + x^2*y + 2*x*y^2 + 5*x*y + y^3
collect(z,x)
% y*x^2 - 2*x^3 + (2*y^2 + 5*y)*x + y^3
collect(z,y)
% y^3 + 2*x*y^2 + (x^2 + 5*x)*y - 2*x^3

%% 計算分子與分母
% [z1,z2] = numden(2.5)  % 會報錯,因為numden的輸入變數不能是數值,只能是符號變數
% ans = sym(2.5);  % sym函式可以將數值2.5轉換為符號
[z1,z2] = numden(sym(2.5)) % 對常數計算分子與分母
% z1 = 5
% z2 = 2
syms x y
z = 1/x*y+x/(x^2-2*y)
[z1,z2] = numden(z)  %z1分子,z2分母
% z1 = - x^2*y - x^2 + 2*y^2
% z2 = x*(- x^2 + 2*y)

%% 讓結果顯示的更加自然
syms x y
M = (1/x*y+x/(x^2-2*y)-x^2/(3+y)^2)^2;
expand(M)  
% y^2/x^2 + x^4/(y^4 + 12*y^3 + 54*y^2 + 108*y + 81) + (2*x^3)/(- x^2*y^2 - 6*x^2*y - 9*x^2 + 2*y^3 + 12*y^2 + 18*y) - (2*y)/(- x^2 + 2*y) + x^2/(x^4 - 4*x^2*y + 4*y^2) - (2*x*y)/(y^2 + 6*y + 9)
mupad % 未來的版本可能會移除這個工具箱,可以點選Matlab的主頁,新建實時指令碼

matlab最新的版本已經去除了mupad工具箱

新建實時指令碼

把一連串的公式貼上進去

點選執行