octave符号计算及注意事项(和MATLAB还是有些区别的)(下)

octave中符号计算需要额外安装symbolic库,下面是安装方法,不安装无法使用
https://blog.csdn.net/weixin_39956356/article/details/106732134

octave符号计算及注意事项(和MATLAB还是有些区别的)(上)
https://blog.csdn.net/weixin_39956356/article/details/106756047
上节内容介绍了符号计算的基础内容,如创建,基本运算,化简,因式分解等内容,目录如下,这节更进一步,主要介绍下极限,积分,微分,级数,符号方程的求解

在这里插入图片描述
1 .我写了注意的是octave和MATLAB有差别的地方
2. 调用方式有多种,我会分享通用的那种,具体形式可以看看文档或相关书籍
3. 注意:帮助文档在@sym/xxx里面.

1 极限-limit

limit(f, x, a, 'right''left')
f: 符号函数f(x)
x:求解符号变量,还记得上节内容的C位变量?默认是x
a: 趋近a,无穷大inf(前面写上+-), 默认是0
'right''left':右,左极限

例如: f = ( x ( 1 / m ) − a ( 1 / m ) ) / ( x − a ) f = (x^{(1/m)}-a^{(1/m)})/(x-a) f=(x(1/m)a(1/m))/(xa)

>> f = (x^(1/m)-a^(1/m))/(x-a)
f = (sym)

    m ___   m ___
  - \/ a  + \/ x
  ---------------
       -a + x

>> limit(f, x, a)
ans = (sym)

  m ___
  \/ a
  -----
   a*m

2 求导-diff

diff(f, x, n)
f: 符号函数f(x)
x:求解符号变量,还记得上节内容的C位变量?默认是x(求导)
n: 表示求几阶导数

例如: f = x c o s x f = xcosx f=xcosx,求二阶导数

f = x*cos(x);
diff(f, x, 2)   % 对f求二阶导数
ans = (sym)
	ans = (sym) -(x*cos(x) + 2*sin(x))

3 (不定/定)积分-int

int(f, x, a, b)
f: 符号函数f(x)
x:求解符号变量,还记得上节内容的C位变量?默认是x(积分)
a, b: 表示定积分的上下限,不给是不定积分

例如: ∫ 5 x t 1 + x 2 d t \int\frac{5xt}{1+x^2}dt 1+x25xtdt,

>> f = 5*x*t/(x^2+1)
ླྀf = (sym)

  5*t*x
  ------
   2
  x  + 1
>> int(f, t)   % 默认是对x求积分,但是这里是t,单独指定
ans = (sym)

      2
   5*t *x
  --------
     2
  2*x  + 2

例如: ∫ 1 2 ∣ 1 − x ∣ d x \int_{1}^{2}|1-x|dx 121xdx,

>> int(abs(1-x), 1, 2)
ans = (sym) 1/2

4 级数-symsum

symsum(f, x, m, n)
f: 符号函数f(x),指级数的通项公式
x:求解符号变量,还记得上节内容的C位变量?默认是x(积分)
m, n: 表示级数的开始和结尾项(数字)

例如: s = 1 + 1 4 + 1 9 + 1 16 + ⋯ + 1 n 2 + … s = 1+\frac{1}{4}+\frac{1}{9}+\frac{1}{16}+\dots+\frac{1}{n^2}+ \dots s=1+41+91+161++n21+

>> f = 1/n^2;
>> s1 = symsum(f, n, 1, inf) % 从第一项到无穷项
s1 = (sym)

    2
  pi
  ---
   6

5 泰勒展开-taylor

注意:这个用法和matlab有些不一样

symsum(f, x, a)
f: 符号函数f(x)
x:求解符号变量,还记得上节内容的C位变量?默认是x(积分)
a: 表示在x=a处展开

例如: f = c o s ( x ) f=cos(x) f=cos(x)

>> f = cos(x)
f = (sym) cos(x)
>> taylor(f, x) 
ans = (sym)

   4    2
  x    x
  -- - -- + 1
  24   2

6 符号方程求解-solve

注意:这个用法和matlab有些不一样,不要用单引号,用==
solve解不出来的,不一定原方程无解,可以换其他函数试试
下面介绍可行的方案,

solve(方程, x(未知数))
[x,y,z,...] = solve(方程1,方程2,...)

例如解方程 1 x + 2 + 4 x x 2 − 4 = 1 + 2 x − 2 \frac{1}{x+2}+\frac{4x}{x^2-4} = 1+ \frac{2}{x-2} x+21+x244x=1+x22

>> solve(1/(x+2) + 4*x/(x^2-4) == 1 + 2/(x-2), x)
ans = (sym) 1

例如,求解方程组
{ 1 x 3 + 1 y 3 = 28 1 x + 1 y = 4 \begin{cases} \frac{1}{x^3}+\frac{1}{y^3}=28 \\ \frac{1}{x}+\frac{1}{y}= 4 \\ \end{cases} {x31+y31=28x1+y1=4

>> [x y] = solve(1/x^3+1/y^3==28, 1/x+1/y==4)
x = (sym 2x1 matrix)

  [1/3]
  [   ]
  [ 1 ]

y = (sym 2x1 matrix)

  [ 1 ]
  [   ]
  [1/3]

7 符号微分方程求解-dsolve

例如求解微分方程 d y d x = x 2 + y 2 2 x 2 \frac{d_y}{d_x}=\frac{x^2+y^2}{2x^2} dxdy=2x2x2+y2

>> syms y(x) x
>> dsolve(diff(y ,x) - (x^2+y^2)/(2*x^2) == 0)
ans = (sym)

         x*(C1 - log(x))
  y(x) = ---------------
         C1 - log(x) - 2

在上面的条件下,求解在y(2)=1的特解

>> syms y(x) x
>> dsolve(diff(y ,x) - (x^2+y^2)/(2*x^2) == 0, y(2)==1)
ans = (sym)

         x*(-log(x) - 2 + log(2))
  y(x) = ------------------------
           -log(x) - 4 + log(2)

8 有误请指出

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值