求和两个多项式

问题描述 投票:1回答:4

我正在寻找一个内置的Matlab函数,它将两个多项式相加。

例:

p1(x)和p2(x)用代码标准Matlab向量表示:

p1 = [500 400 300 200 100 50];
p2 = [3 2 1 5];

如何使用内置的Matlab函数将这两个多项式求和得到ps(x);没有编写明确的m文件功能?

matlab sum polynomial-math built-in
4个回答
3
投票

我当然希望有一种更好的方法(我可能会把它放到辅助函数中),但这似乎工作得很好:

[zeros(1, size(p1,2)-size(p2,2)) p2] + [zeros(1, size(p2,2)-size(p1,2)) p1]

ans =

   500   400   303   202   101    55

3
投票

简单。写一点功能,称之为leftpadz。

leftpadz = @(p1,p2) [zeros(1,max(0,numel(p2) - numel(p1)))),p1];

所以,如果我们......

p1 = [500 400 300 200 100 50];
p2 = [3 2 1 5];
p3 = leftpadz(p1,p2) + leftpadz(p2,p1)
p3 =
   500   400   303   202   101    55

1
投票
function c = polyadd( a, b)
assert( isrow(a))
assert( isrow(b))

maxL = max( [length(a), length(b)]);
a = [ zeros( 1, maxL - length(a)), a];
b = [ zeros( 1, maxL - length(b)), b];

c = a +b ;
end

0
投票

你试过这个:

p1 = [500 400 300 200 100 50];
p2 = [0 0 3 2 1 5]; # refilling with 0

ps = p1 + p2;
© www.soinside.com 2019 - 2024. All rights reserved.