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 = (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*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: 表示定積分的上下限,不給是不定積分
例如:,
>> 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
例如:,
>> 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: 表示級數的開始和結尾項(數字)
例如:
>> 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 = 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,...)
例如解方程
>> solve(1/(x+2) + 4*x/(x^2-4) == 1 + 2/(x-2), x)
ans = (sym) 1
例如,求解方程組
>> [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
例如求解微分方程
>> 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)