matlab計算多項式的泰勒級數展開的各項係數
clear;clc;
syms x a;
m=5;%自己改
y=(11/6-3*x+3/2*x^2-1/3*x^3)^a
f=taylor(y,m+1,x);
w=sym(zeros(m+1,1));
w(1)=subs(f,x,0);
f=f-w(1);
for n=m:-1:2
w(n+1)=subs(f-subs(f,x^n,0),x^n,1);
f=f-w(n+1)*x^n;
end
w(2)=subs(f,x,1)
注意,因爲matlab數組下標從1開始,因此我這裏w(1)是常數項,w(2)是一次項,以此類推,即
y=w(1)+w(2)*x+w(3)*x^2+....+w(m+1)*x^m
matlab如何解待定係數的問題
【1】把函數變形
>>f=sym('2*x^3+3*x^2+21*x+4-(3*a*x^3+b*x^2+c*x+d)=0')
f =
2*x^3+3*x^2+21*x+4-(3*a*x^3+b*x^2+c*x+d)=0
【2】用collect合併同類項
>>ff=collect(f):
(2-3*a)*x^3+(3-b)*x^2+(21-c)*x+4-d = 0
【3】用maple提取多項式係數,如果很多,可以用循環語句。
>>c3=maple('coeff',ff,x,3)
c3 =2-3*a
>>c1=maple('coeff',ff,x,1)
c1 =21-c
>>c2=maple('coeff',ff,x,2)
c2 =3-b
>>c0=maple('coeff',ff,x,0)
c0 =4-d
補充:
這次變成這樣,程序倒是通了,我不是很滿意,咱們共同把它整理好,如何?
syms a b c d x
%【1】把函數變形
f=sym('2*x^3+3*x^2+21*x+4-(3*a*x^3+b*x^2+c*x+d)')
N=3;
for i=0:N
temp=maple('coeff',f,x,N-i);
cp(1,i+1)={temp};
end
celldisp(cp);
再補充:這次總算是解決了,就是看起來很笨,不是很理想,湊合着用,當然我相信可以修改的很漂亮。
syms a b c d x
f=sym('2*x^3+3*x^2+21*x+4-(3*a*x^3+b*x^2+c*x+d)')
N=3;
for i=0:N
temp=maple('coeff',f,x,N-i);
temp1(i+1)=temp;
end
cp=temp1
a=solve(cp(1)), b=solve(cp(2)), c=solve(cp(3)), d=solve(cp(4))
運行結果:
a =2/3
b =3
c =21
d =4
多項式Px anxn an1xn1 a1x a0的值的函數式M文件用
首先,多項式是動態的,所以這必須是matlab的輸入項;
其次,多項式的matlab表達要清楚,是將多項式降冪排列後提取其係數來表示該多項式的-n次多項式用n+1維向量表示;比如多項式 3*x^2 + 5 在matlab中的表示爲 [3 0 5];
最後,多項式函數值的matlab法要明白,就是命令polyval。
綜合上述,M文件如下:
function val = fpolyval(p,x)
% 函數 fpolyval 功能:多項式 p 在 x 處的函數值 val.
% 輸入項 p 是多項式按降冪排列後的係數;
val = polyval(p,x);
比如:3*x^2 + 5在x=1,2處的值
>>p=[3 0 5];
>>x=[1 2];
>>val=fpolyval(p,x)
val =
8 17
以上就是使用MATLAB計算多項式的泰勒級數展開係數的詳細內容,更多請關注本站其它相關文章!