matlab 獲取多項式的係數,表示式的係數

2021-09-24 19:59:26 字數 1789 閱讀 2879

clc;clear all;close all;

%% matlab 提取多項式各冪次的係數;使用sym2poly函式 (多項式,一元高階) 通過a的length 可以確定階數

%% e1:

syms x

f=3*x^5 + 2*x^2;% f(x)

a=sym2poly(f)% a =3 0 0 2 0 0 --> f(x)=3*x^5+0*x^4+0*x^3+2*x^2+0*x^1+0*x^0

%% e2

syms x

sym2poly(x^3 - 2*x - 5)

% ans =1 0 -2 -5

%% matlab 表示式變數係數,方程裡未知數的係數. 使用coeffs(y)可以提取符號表示式的係數,但是所得的係數矩陣是按照表示式的逆向順序排列的(多元一階)

clc;clear all;close all;

%% e1

syms x1 x2 x3 y1 y2 y3

z=2*x1+4*x2+x3+5*y1+2*y2+6*y3

b=coeffs(z) %所得係數矩陣為逆向順序 [ 6, 2, 5, 1, 4, 2]

%% e2 matlab 提取多元齊次多項式係數 p的 x1^2*x2^2的係數

syms x1 x2

p=x1^4 + 2*x1^3*x2 + x1^2*x2^2 + 3*x1*x2^3 - x2^4; % p= 2*x1^3*x2 + 3*x1*x2^3 - x2^4+x1^4+ x1^2*x2^2;

a=sym2poly(subs(p,x2,1)); %[1,2,1,3,-1] % 自動從低到高階順序

b=a(length(a)-2) %x1^2*x2^2的係數b=a(length(a)-2)

% 當變數和項數增多 sym2poly(subs(subs(p,x1^2*x2^2,sym('h')),[x1 x2 x3 ... xn],[0

% 0])); ???????????

%% e3

syms x y z n

expr = x*y*z;%如何將y*z作為乙個整體,然後求出其的係數x

% coeffs(expr,y*z);% 結果 error ,貌似是不能輸入表示式做為第二個引數

subs(expr,y*z,n);% 將 y*z這個表示式替換成乙個變數比如n .ans =n*x

coeffs(subs(expr,y*z,n),n) % ans =x

% subs(expr,y,n); 以及 subs(expr,x*y*z,n);

% subs(expr,y,n) -->n*x*z ; coeffs(subs(expr,y,n))-->coeffs(n*x*z)-->1;

% coeffs(subs(expr,y,n),x)-->n*z

% 1.將expr轉換為str,然後提取各項,匹配

% 2.具體分析這個問題,取巧 e2

% 3.利用表示式除法

%% e4 連用兩個coeff 提取expr = x^5*y+x*5 的係數

syms x y

expr = x^5*y+x*5;

% coeffs(expr) % [ 5, 1]

% 先用一次[c,t]=coeffs(expr,x)

[c,t]=coeffs(expr,x)% 時可以得到的c是有兩個個元素 c =[ y, 5] t =[ x^5, x]

% 還需要判斷哪乙個是x^5*y那一項,賦給expr

% coeffs(expr,y)

python 多項式求係數 多項式係數的計算

def evalpoly lst,x total 0 for power,coeff in enumerate lst starts at 0 by default total x power coeff return total 或者,可以使用列表,然後使用sum def evalpoly lst...

計算多項式係數

題目描述 給定乙個多項式 ax by k ax by k ax by k,求a nb ma nb m anbm 係數輸入格式 共一行,包含5個整數,分別為a,b,k,n,m每兩個整數之間用乙個空格隔開.輸出格式 出共1行,包含乙個整數,表示所求的係數,這個係數可能很大,輸出對1000000007取模...

計算多項式的係數

給定乙個多項式 a x by k ax by k,計算多項式展開後 xn ymx ny m項的係數。input 第 1 行 乙個整數 t 1 t 100000 為問題數。接下來共 t 行。每行 5 個整數,分別為 a,b,k,n,m,整數之間由乙個空格分隔。0 k 1,000,000,0 n,m k...