【问题标题】:Summing two polynomials对两个多项式求和
【发布时间】: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


    【解决方案1】:

    简单。写一个小函数,叫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
    

    【讨论】:

      【解决方案2】:

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

      [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】:
        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
        

        【讨论】:

          【解决方案4】:

          你试过了吗:

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

          【讨论】:

          • p2 是在代码中动态创建的。我不能以这种方式添加零。
          • 抱歉,.+ 甚至不是一个有效的 matlab 运算符。 + 就是你所需要的。
          • 你说得对,我在 Octave 中对其进行了测试,它工作正常(我将它与 .* 混合在一起)
          猜你喜欢
          • 2023-03-27
          • 1970-01-01
          • 2021-06-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多