【发布时间】:2012-05-09 12:27:53
【问题描述】:
我正在寻找对两个多项式求和的内置 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
我正在寻找对两个多项式求和的内置 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
简单。写一个小函数,叫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;
【讨论】: