1. 程式人生 > >使用octave符號運算求解不定積分、微分方程等(兼容matlab)

使用octave符號運算求解不定積分、微分方程等(兼容matlab)

藝術 tlab 要求 cos ans 解析 == oct diff

1.求解1/(1+cos(x))^2的不定積分。

在和學生討論一道物理競賽題的時候,出現了這個函數的積分求解需求。查積分表也可寫出答案。但是可以使用octave的符號運算工具箱來做。

syms x;
y = 1/(1+cos(x))^2;
int(y)

  既可以得到結果:

ans = (sym)

     3/x\      /x  tan |-|   tan|-|
      \2/      \2/
  ------- + ------
     6        2

  octave中的符號工具箱實際上是調用了sympy的核心庫。所以看自來結果有符號藝術的感覺。

2.求解微分方程

在一些場合,需要求解微分方程的解析解。

舉個例子,求解諧振子的微分方程。hamonic.m

syms x(t)
DE = diff(x,2) + w^2*x == 0
dsolve(DE)

  得到的結果是:

>> hamonic

DE = (sym)

              2
   2         d
  w *x(t) + ---(x(t)) = 0
              2
            dt

ans = (sym)

             -I*t*w       I*t*w
  x(t) = C1*e       + C2*e

  這裏面octave的微分方程表達方法和matlab不大一樣,二階導函數不是寫作D2(x),而是使用 diff(x,2)來表達。

使用octave符號運算求解不定積分、微分方程等(兼容matlab)