1.5 MATLAB符号计算

一、符号变量与符号表达式

M A T L A B MATLAB MATLAB符号运算处理的主要对象

符号变量

一种新的数据类型

符号表达式

创建符号表达式的方法:

  1. 符号 ′ ′ ''

    >> f = 'sin(x)'
    
    f =
    sin(x)
    
  2. s y m sym sym​函数

    • s y m sym sym函数

      一次只能创建一个符号

      >> g = sym('cos(x) + exp(x)')
      
      g = 
      cos(x) + exp(x)
      
    • s y m s syms syms​函数

      一次能够创建多个符号

      >> syms a b x y t
      >> f = a * sin(x) + b * cos(x)
      
      f = 
      a * sin(x) + b * cos(x)
      

为了了解符号函数引用过程中使用的符号变量个数及变量名

可使用 f i n d s y m findsym findsym函数 查询

f i n d s y m findsym findsym函数:

  • 使用格式:

    findsym(f,n)
    

    其中,

    ## 初始定义
    >> syms a b x y
    >> f = sin(a * x + t) + b * log(y) + c
    
    f = 
    sin(a * x + t) + b * log(y) + c
    
    • f f f :用户定义的符号函数

    • n n n​ :正整数,表示查询变量的个数

      >> findsym(f)
      
      ans = 
      a,b,c,t,x,y
      
    • n n n值省略时表示查询符号函数中全是系统默认变量

      >>findsym(f,1)
      
      ans =
      x
      

得到精确的数值解

对得到的解析解进行数值转化

>> syms x y
>> y = 2*x^2-exp(x)
>> s = solve(y,0)

s =
-2*lambertw(0, -2^(1/2)/4)
-2*lambertw(0, 2^(1/2)/4)

转换函数

  • d i g i t s ( D ) digits(D) digits(D)

    表示函数设置有效数字个数为D的近似解精度

  • v p a ( S , D ) vpa(S,D) vpa(S,D)

    表示符号表达式S在 d i g i t s ( D ) digits(D) digits(D)​精度下的数值解

    >> vpa(s)
    
    ans =
    1.4879620654981771562543701209326
    -0.53983527690282004921180390836334
    
    >> vpa(s,8)
    
    ans =
    1.4879621
    -0.53983528
    
  • s u b s ( S , x , a ) subs(S,x,a) subs(S,x,a)

    表示将变量 a a a替换符号表达式 S S S中的 x x x变量, x x x a a a可互换位置

    >> syms x y a
    >> f = sin(a*x + y)-x;
    >> subs(f,x,pi)
    
    ans =
    sin(y + pi*a) - pi
    
    >> subs(f,x,-5)
    
    ans =
    5 - sin(5*a - y)
    
二、符号微积分
1、导数
  • d i f f diff diff函数

    d i f f ( S , v , n ) diff(S,v,n) diff(S,v,n)

    • S S S 表达式

      若只有S,表示系统对默认变量求一阶导数

    • v v v 变量

      若v省略,表示对默认变量求n阶导数

    • n n n n阶导数

      若n省略,表示求1阶导数

    例 1 — 23 : 使 用 d i f f 函 数 计 算 z = 2 y s i n x 2 关 于 x 的 一 阶 、 二 阶 偏 导 数 。 例1—23:使用diff函数计算z=2ysinx^2关于x的一阶、二阶偏导数。 123使diffz=2ysinx2x

    >> syms x y
    >> s = y*sin(x^2);
    >> diff(s)
    
    ans =
    2*x*y*cos(x^2)
    
    >> diff(s,2)
    
    ans =
    2*y*cos(x^2) - 4*x^2*y*sin(x^2)
    

    当导数运算作用于符号矩阵时

    >> syms a b x
    >> A=[sin(a*x),cos(a*x);-cos(b*x),-sin(b*x)]
    
    A =
    [  sin(a*x),  cos(a*x)]
    [ -cos(b*x), -sin(b*x)]
    
2、积分
  • i n t 函 数 int函数 int
    • i n t ( S ) int(S) int(S):对符号表达式S关于默认变量求不积分
    • i n t ( S , v ) int(S,v) int(S,v):对符号表达式S关于指定变量v求不积分
    • i n t ( S , a , b ) int(S,a,b) int(S,a,b):对符号表达式S关于默认变量在区间[a,b]求不积分
    • i n t ( S , v , a , b ) int(S,v,a,b) int(S,v,a,b):对符号表达式S关于指定变量v在区间[a,b]求不积分

    无穷区间 i n f inf inf

例 1-24 使用int函数计算以下积分:

( 1 ) ∫ d x x 2 1 + x 2 ; ( 2 ) ∫ e x cos ⁡ 3 x d x ; ( 3 ) ∫ 0 π 2 x sin ⁡ 3 x d x ; ( 4 ) ∫ − ∞ + ∞ 1 1 + 9 x 2 d x . (1)\int{\frac{dx}{x^2\sqrt{1+x^2}}}; (2)\int{e^x\cos{3x}}dx; (3)\int_{0}^{\frac{\pi}{2}}{x\sin{3x}dx}; (4)\int_{-\infty}^{+\infty}{\frac{1}{1+9x^2}dx}. (1)x21+x2 dx;(2)excos3xdx;(3)02πxsin3xdx;(4)+1+9x21dx.

第一题:

>> syms x y
>> s1 = 1/(x^2*sqrt(1+x^2));
>> int(s1,x)

ans = 
-(x^2 + 1)^(1/2)/x

第二题:

>> s2 = exp(x)*cos(3*x);
>> int(s2,x)
 
ans =
(exp(x)*(cos(3*x) + 3*sin(3*x)))/10

第三题:

>> s3 = x*sin(x)^2;
>> int(s3,x,0,pi/2)

ans =
pi^2/16 + 1/4

第四题:

>> s4 = 1/(1+9*x^2);
>> int(s4,x,-inf,inf)
 
ans =
pi/3

当不定积分无解析表达式时

可用 d o u b l e double double函数或 e v a l eval eval函数计算其数值

例如:

>> s = exp(-x^2);
>> z = int(s,0,1)
z =
(pi^(1/2)*erf(1))/2
 
>> eval(z)
ans =
    0.7468
3、极限
  • l i m i t limit limit函数
    • l i m i t ( S , x , a ) : limit(S,x,a): limit(S,x,a):计算符号表达式 S S S x → a x\rightarrow a xa时的极限
    • l i m i t ( S , a ) : limit(S,a): limit(S,a):计算符号表达式 S S S在默认变量趋向于 a a a时的极限
    • l i m i t ( S ) : limit(S): limit(S):计算符号表达式 S S S在默认变量趋向于 0 0 0时的极限
    • l i m i t ( S , x , a , ′ r i g h t ′ ) : limit(S,x,a,'right'): limit(S,x,a,right):计算符号表达式 S S S x → a x\rightarrow a xa时的右极限
    • l i m i t ( S , x , a , ′ l e f t ′ ) : limit(S,x,a,'left'): limit(S,x,a,left):计算符号表达式 S S S x → a x\rightarrow a xa时的左极限

例1-25 计算下列问题的极限:

( 1 ) lim ⁡ x → 2 x 2 − 4 x − 2 ; ( 2 ) lim ⁡ x → 0 sin ⁡ x x ; ( 3 ) lim ⁡ x → + ∞ ( 1 + a x ) x ; ( 4 ) lim ⁡ x → π 2 + tan ⁡ x . (1)\lim_{x\rightarrow2}{\frac{x^2-4}{x-2}};(2)\lim_{x\rightarrow0}{\frac{\sin{x}}{x}};(3)\lim_{x\rightarrow+\infty}{(1+\frac{a}{x})^x};(4)\lim_{x\rightarrow{\frac{\pi}{2}^+}}{\tan{x}}. (1)x2limx2x24;(2)x0limxsinx;(3)x+lim(1+xa)x;(4)x2π+limtanx.

第一题:

>> syms x a
>> f1 = (x^2-4)/(x-2);
>> limit(f1,x,2)
 
ans =
4

第二题:

>> f2 = sin(x)/x;
>> limit(f2)
 
ans =
1

第三题:

>> f3 = (1 + a/x)^x;
>> limit(f3,x,inf)
 
ans =
exp(a)

第四题:

>> f4 = tan(x);
>> limit(f4,x,pi/2,'right')
 
ans =
-Inf
4、级数求和
  • s y m s u m symsum symsum函数
    • s y m s u m ( S ) : symsum(S): symsum(S):对符号表达式S关于默认变量 k k k从0到 k − 1 k-1 k1求和

    • s y m s u m ( S , v ) : symsum(S,v): symsum(S,v):对符号表达式S关于指定变量 v v v从0到 k − 1 k-1 k1求和

    • s y m s u m ( S , v , a , b ) : symsum(S,v,a,b): symsum(S,v,a,b):对符号表达式S关于指定变量 v v v a a a b b b求和

    • s y m s u m ( S , a , b ) : symsum(S,a,b): symsum(S,a,b):对符号表达式S关于默认变量 k k k a a a b b b求和

例 1-26 求下列级数的和:

( 1 ) ∑ k = 0 k − 1 k ; ( 2 ) ∑ n = 0 n − 1 1 2 n ; ( 3 ) ∑ n = 1 ∞ ( − 1 ) n − 1 n x n ; ( 4 ) ∑ k = 1 ∞ 1 k 2 . (1)\sum_{k=0}^{k-1}{k};(2)\sum_{n=0}^{n-1}{\frac{1}{2^n}};(3)\sum_{n=1}^{\infty}{\frac{(-1)^{n-1}}{n}{x^n}};(4)\sum_{k=1}^{\infty}{\frac{1}{k^2}}. (1)k=0k1k;(2)n=0n12n1;(3)n=1n(1)n1xn;(4)k=1k21.

第一题:

>> syms k n x
>> f1 = k;
>> symsum(f1)
 
ans =
k^2/2 - k/2

第二题:

>> f2 = 1/2^n;
>> symsum(f2,n,0,n-1)
 
ans =
2 - 2*(1/2)^n

第三题:

>> f3 = (-1)^(n-1)*x^n/n;
>> symsum(f3,n,1,inf)
 
ans =
piecewise(x == -1, -Inf, abs(x) <= 1 & x ~= -1, log(x + 1))

第四题:

>> f4 = 1/k^2;
>> symsum(f4,k,1,inf)
 
ans =
pi^2/6
5、幂级数展开
  • t a y l o r taylor taylor函数:
  • t a y l o r ( S ) : taylor(S): taylor(S):对符号函数S关于默认变量的6次麦克劳林展开式,这里6次指余项次数大于等于6,以下同;
  • t a y l o r ( S , n ) : taylor(S,n): taylor(S,n):对符号函数S关于默认变量的 n n n次麦克劳林展开式
  • t a y l o r ( S , n , x , a ) : taylor(S,n,x,a): taylor(S,n,x,a):对符号函数S关于指定变量 x x x a a a n n n次泰勒展开式

具体使用方法可以有所出入

例 1-27 对下列函数经行幂级数展开:

( 1 ) y = sin ⁡ x 的 6 次 与 15 次 麦 克 劳 林 展 开 式 ; (1)y = \sin{x}的6次与15次麦克劳林展开式; (1)y=sinx615;

( 2 ) y = cos ⁡ x 在 x = π 3 处 展 开 成 幂 级 数 ( 次 数 为 7 ) (2)y = \cos{x}在x=\frac{\pi}{3}处展开成幂级数(次数为7) (2)y=cosxx=3π7

( 3 ) y = x l n ( 2 + 3 x ) 展 开 成 x − 2 的 幂 级 数 ( 次 数 为 8 ) (3)y =xln(2+3x)展开成x-2的幂级数(次数为8) (3)y=xln(2+3x)x2(8)

第一题:

>> syms x
>> taylor(sin(x))
ans =
x^5/120 - x^3/6 + x

>> taylor(sin(x),'Order',15) 
ans =
x^13/6227020800 - x^11/39916800 + x^9/362880 - x^7/5040 + x^5/120 - x^3/6 + x

第二题:

>> taylor(cos(x),x,pi/3,'Order',7)
 
ans =
(3^(1/2)*(x - pi/3)^3)/12 - (3^(1/2)*(x - pi/3))/2 - (3^(1/2)*(x - pi/3)^5)/240 - (x - pi/3)^2/4 + (x - pi/3)^4/48 - (x - pi/3)^6/1440 + 1/2

第三题:

>> f3 = x*log(2+3*x);
>> taylor(f3,x,2,'Order',8)
 
ans =
2*log(8) + (log(8) + 3/4)*(x - 2) + (15*(x - 2)^2)/64 - (9*(x - 2)^3)/256 + (63*(x - 2)^4)/8192 - (81*(x - 2)^5)/40960 + (729*(x - 2)^6)/1310720 - (1215*(x - 2)^7)/7340032
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值