首頁  >  文章  >  電腦教學  >  使用MATLAB計算多項式的泰勒級數展開係數

使用MATLAB計算多項式的泰勒級數展開係數

PHPz
PHPz轉載
2024-01-23 13:39:151528瀏覽

使用MATLAB計算多項式的泰勒級數展開係數

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計算多項式的泰勒級數展開係數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:docexcel.net。如有侵權,請聯絡admin@php.cn刪除