我正在寻找对两个多项式求和的内置 Matlab 函数。
例子:
p1(x) 和 p2(x) 用代码标准 Matlab 向量表示:
p1 = [500 400 300 200 100 50];
p2 = [3 2 1 5];
如何使用内置的 Matlab 函数对这两个多项式求和以获得 ps(x);不写一个显式的 m 文件函数?
我正在寻找对两个多项式求和的内置 Matlab 函数。
例子:
p1(x) 和 p2(x) 用代码标准 Matlab 向量表示:
p1 = [500 400 300 200 100 50];
p2 = [3 2 1 5];
如何使用内置的 Matlab 函数对这两个多项式求和以获得 ps(x);不写一个显式的 m 文件函数?
简单的。写一个小函数,叫它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
我当然希望有更好的方法(我可能会将其放入辅助函数中),但这似乎工作得很好:
[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
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
你有没有试过这个:
p1 = [500 400 300 200 100 50];
p2 = [0 0 3 2 1 5]; # refilling with 0
ps = p1 + p2;