How can I expand polynomials with matlab?
92 ビュー (過去 30 日間)
古いコメントを表示
Can matlab expand something like the following and represent it in terms of powers of 'x'?
x(x-7)(x-6) + (x+4)(x-9)(x-2) + x(x-8)(x+1) ----> k_1 x^3 + k_2 x^2 + k_3 x + k_4
採用された回答
John D'Errico
2015 年 1 月 14 日
Trivial. With or without the symbolic toolbox. First, with...
syms x
P = expand(x*(x - 7)*(x - 6) + (x + 4)*(x - 9)*(x - 2) + x*(x - 8)*(x + 1))
P =
3*x^3 - 27*x^2 + 8*x + 72
Without the symbolic toobox, but with my sympoly toolbox , as found on the file exchange. Its free, but less capable than the symbolic one.
sympoly x
P = x*(x - 7)*(x - 6) + (x + 4)*(x - 9)*(x - 2) + x*(x - 8)*(x + 1)
P =
72 + 8*x - 27*x^2 + 3*x^3
In either case, it is easy enough to extract the numeric coefficients alone, if that is what you wanted.
And if you have neither toolbox and you like to do your own work (hey the sympoly toolbox is FREE after all)
coef = conv(conv([1 0],[1 -7]),[1 -6]) + ...
conv(conv([1 4],[1 -9]),[1 -2]) + ...
conv(conv([1 0],[1 -8]),[1 1])
coef =
3 -27 8 72
0 件のコメント
その他の回答 (1 件)
Star Strider
2015 年 1 月 14 日
An alternative using poly (assuming I got the maths correct) is:
% f(x) = x(x-7)(x-6) + (x+4)(x-9)(x-2) + x(x-8)(x+1)
rts1 = [ 0 7 6];
rts2 = [-4 9 2];
rts3 = [ 0 8 -1];
trm1 = poly(rts1);
trm2 = poly(rts2);
trm3 = poly(rts3);
ply = trm1 + trm2 + trm3;
produces:
ply =
3 -27 8 72
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Number Theory についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!