官术网_书友最值得收藏!

1.3 多項式運算

叢書第一冊和第三冊講過多項式(polynomial)函數;特別地泰勒展開經常使用線性函數(linear function)和二次函數(parabola)。

一元多項式函數基本形式為:

poly2sym() 函數可以構造符號多項式,比如:

syms a b c d x y t
y1 = poly2sym([1, 2, 3, 4])
% y1
% = x^3 + 2*x^2 + 3*x + 4
y2 = poly2sym([a, b, c, d])
% y2 =
%  a*x^3 + b*x^2 + c*x + d
y3 = poly2sym([a, b, c, d], t)
% y3 =
% a*t^3 + b*t^2 + c*t + d
y4 = subs(y3, t, y^2 + 1)
% y 4 =
% d + a*(y^2 + 1)^3 + b*(y^2 + 1)^2 + c*(y^2 + 1)

函數sym2poly()可以提取符號多項式各項系數,比如下例:

syms x
coeff_1 = sym2poly(x^3 + 2*x^2 + 3*x + 4)
% coeff_1 =
%      1     2     3     4

coeffs() 函數也可以提取符號多項式成分,但值得注意的是,這個函數輸出各項系數的順序和sym2poly()的結果相反,比如下例。fliplr()函數左右顛倒行向量。

syms x
coeff_1 = coeffs(x^3 + 2*x^2 + 3*x + 4)
% coeff_1 =
% [ 4, 3, 2, 1]
% Reverse the ordering of coefficients by using fliplr.
c = fliplr(coeff_1)
% c =
% [ 1, 2, 3, 4]

coeffs() 不但可以獲得系數,也能獲得對應項,比如下例。請讀者注意系數的先后順序。

syms x
[coeff_1,terms_x] = coeffs(x^3 + 2*x^2 + 3*x + 4)
% coeff_1 =
% [ 1, 2, 3, 4]
%
% terms_x =
% [ x^3, x^2, x, 1]

如果在輸入加入指令符'All',coeffs()會輸出所有項系數,哪怕該項系數為零。

syms x
c = coeffs(3*x^2)
% c =
% 3

c_all = coeffs(3*x^2, 'All')
% c_all =
% [ 3, 0, 0]

coeffs()還可以針對某一個變量,輸出它的系數。比如對下式,用coeffs()可以分別獲得它關于xy的系數。

具體代碼如下:

cx = coeffs(x^3 + 2*x^2*y + 3*x*y^2 + 4*y^3, x)
% cx =
% [ 4*y^3, 3*y^2, 2*y, 1]

cy = coeffs(x^3 + 2*x^2*y + 3*x*y^2 + 4*y^3, y)
% cy =
% [ x^3, 2*x^2, 3*x, 4]

coeffs() 還可以獲得多元函數變量,比如獲得上例中xy的系數。

syms x y
cxy = coeffs(x^3 + 2*x^2*y + 3*x*y^2 + 4*y^3, [x y])
% cxy =
% [ 4, 3, 2, 1]
cyx = coeffs(x^3 + 2*x^2*y + 3*x*y^2 + 4*y^3, [y x])
% cyx =
% [ 1, 2, 3, 4]

類似地,coeffs()可以輸出多元函數變量和對應項,如下:

syms x y
[cxy,terms_xy] = coeffs(x^3 + 2*x^2*y + 3*x*y^2 + 4*y^3, [x y])
% cxy =
% [ 1, 2, 3, 4]
%
% terms_xy =
% [ x^3, x^2*y, x*y^2, y^3]
[cyx,terms_yx] = coeffs(x^3 + 2*x^2*y + 3*x*y^2 + 4*y^3, [y x])
% cyx =
% [ 4, 3, 2, 1]
%
% terms_yx =
% [ y^3, x*y^2, x^2*y, x^3]

另外,coeffs()還能獲取符號系數,而sym2poly()函數暫時沒有這個功能。

syms a b c x
[c_x, terms_x] = coeffs(a*x^2 + b*x + c, [x], 'All')
% c_x =
% [ a, b, c]
%
% terms_x =
% [ x^2, x, 1]

對于多項式,MATLAB還提供了一系列函數來處理多項式符號表達式。感興趣的讀者可閱讀幫助文件學習如下函數:

 collect() 對符號項合并同類項,多個符號變量構成表達式,按指定某個符號合并同類項。

 expand() 將符號表達展開為多項式表達。

 factor() 對數字做質因數分解,對符號表達式做因式分解。

 polyder() 計算多項式微分。

 polyfit() 以最小二乘方式與一組數據擬合多項式系數。

 polyint() 計算多項式積分。

 polyval() 計算多項式每個點處的值。

 polyvalm() 按照矩陣預算規則計算多項式值。

 roots() 求解多項式根。

 simplify() 化簡表達式。

主站蜘蛛池模板: 祁东县| 巩义市| 彰武县| 浦县| 黑水县| 土默特右旗| 吐鲁番市| 三亚市| 荃湾区| 芮城县| 九江县| 南召县| 诸城市| 固镇县| 阜南县| 含山县| 安新县| 泾川县| 特克斯县| 永济市| 金平| 商洛市| 宁陕县| 南澳县| 保靖县| 东宁县| 巴塘县| 石门县| 休宁县| 山阳县| 新建县| 甘洛县| 淮南市| 达州市| 平泉县| 大石桥市| 江北区| 馆陶县| 东乡县| 元氏县| 尚志市|