14 化簡
matlab符號表達式的化簡常用命令函數
pretty(f) 將符號表達式化簡成與高等數學課本上顯示符號表達式形式類似
collect(f) 合並符號表達式的同類項
horner(f) 將一般的符號表達式轉換成嵌套形式的符號表達式
factor(f) 對符號表達式進行因式分解
expand(f) 對符號表達式進行展開
simplify(f) 對符號表達式進行化簡,它利用各種類型的代數恆等式,包括求和、
積分、三角函數、指數函數以及 Bessel 函數等來化簡符號表達式
simple(f) 對符號表達式嘗試多種不同的算法進行化簡,以顯示長度最短的符號
表達式簡化形式
[r,how]=simple(f) 返回的 r為符號表達式進行化簡后的形式, how為所采用的簡化方法
function y=fun(x1,x2) syms x1 x2; y=sin(x1).*cos(x2)+cos(x1).*sin(x2); simplify(y) end ------------------------------------- ans = sin(x1 + x2)
function y=fun(x) syms x; y=(4*x^2+8*x+3)/(2*x+1); simplify(y) end ------------------------------------ fun ans = 2*x + 3
15、MATLAB之極限、積分、微分
1、極限:用函數limit(f,x,x0,‘left’or'right'); 其中f 是定義的函數,x 是極限變量,x0是求極限的點,lift代表左極限,right代表右極限,如果省略代表求雙邊極限。
一般的單極限問題:
syms x;%這個一般是定義一個變量x;
f=sin(x)/x;%定義要求的函數;
limit(f,x,0);%sin(x)/x在0這一點處的極限。
另外,在計算極限時候會出現piecewise()這個函數,他代表分段函數。
2、微分
微分函數diff(f,n)函數,n代表對f求的階數,這里的f既可以是個函數也可以是個矩陣。如果是個矩陣的話他就是對矩陣的元素求導。
(1)、只有一個變量x
syms x;%先定義一個變量x;
f=sin(x);%定義要求導的函數;
diff(f);%這就是對f求導函數
在進行微分時候,結果有時候需要化簡可以用simplify()函數,若果式子里邊含有分子和分母可以用numden這個函數, [a,b]=umden(f);這個式子返回a為f 的分子,b返回f的分母。
3、積分
(1)、積分運算函數int(f,x),這代表對f里的變量x求不定積分,
int(f,x,a,b),這代表對f里的變量x求定積分。
int(int(f,x),y),這樣可以求二重積分,多層嵌套可以求多重積分。
注:int()函數可以計算解析解。
(2)、integral()函數
integral(f,a,b,'RelTol',1e-20,'Arrayvalued',true);
函數f可以設置為函數句柄的形式(f一定是單變量的函數),a,b是對應的積分上下限,RelTol這個選項對應的就是設置誤差限,在這里就相當於1e-20,ArrayValued的選項就是相當於允許向量化輸入,比如f里面有a,x兩個變量,對x進行積分,但是設置a=[1 2 3 ]這個向量時就必須設置這個選項否則結果報錯!
這里需要注意一點就是,
integral2()函數
他針對於二重積分的數值求解。
syms x y=(x.*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(sin(x)).^3 limit(y,x,0) ----------------------------------------------- ans = -1/2 注用function無法實現
-------------------------------------------------
syms x
y=(sqrt(pi)-sqrt(acos(x)))/sqrt(x+1);
limit(y,x,-1,'right')
-----------------------------
ans =
-Inf
15.4微分
syms a x t; A=[a^x t^3;t*cos(x) log(x)]; y1=diff(A,x) y2=diff(A,x,2) y3=diff(A,x,t) ------------------------------------- y1 = [ a^x*log(a), 0] [ -t*sin(x), 1/x] y2 = [ a^x*log(a)^2, 0] [ -t*cos(x), -1/x^2] y3 = [ 0, 0] [ -sin(x), 0]
15.5 偏導
syms x y; f(x,y)=(x^2-2*x)*exp(-x^2-y^2-x*y) y1(x,y)=diff(f,x)/diff(f,y) y2(x,y)=diff(f,x,y) y2(0,1) ------------------------------ y1(x, y) = (exp(x^2 + x*y + y^2)*(exp(- x^2 - x*y - y^2)*(2*x - 2) + exp(- x^2 - x*y - y^2)*(- x^2 + 2*x)*(2*x + y)))/((- x^2 + 2*x)*(x + 2*y)) y2(x, y) = exp(- x^2 - x*y - y^2)*(- x^2 + 2*x) - exp(- x^2 - x*y - y^2)*(2*x - 2)*(x + 2*y) - exp(- x^2 - x*y - y^2)*(- x^2 + 2*x)*(x + 2*y)*(2*x + y) ans = 4*exp(-1)
16 積分
syms x ; f1=1/(1+x^4+x^8); f2=1/((asin(x))^2*sqrt(1-x^2)); f3=(x^2+1)/(x^4+1); f4=exp(x)*(1+exp(x))^2; y1=int(f1,x) y2=int(f2,x) y3=int(f3,x,0 +inf) y4=int(f4,x,0 ,log(2)) -------------------------------- y1 = -(3^(1/2)*(atan((2*3^(1/2)*x)/(3*((2*x^2)/3 - 2/3))) - atanh((2*3^(1/2)*x)/(3*((2*x^2)/3 + 2/3)))))/6 y2 = -1/asin(x) y3 = (pi*2^(1/2))/2 - (2^(1/2)*(atan(2^(1/2)*x*(1/2 - i/2)) + atan(2^(1/2)*x*(1/2 + i/2))))/2 y4 = (exp(6243314768165359/9007199254740992)*(3*exp(6243314768165359/9007199254740992) + exp(6243314768165359/4503599627370496) + 3))/3 - 7/3