多项式乘法
C++ Polynomial Multplication
本文关键字:多项式 更新时间:2023-10-16
我正在尝试用c++将两个多项式相乘。如果可能的话,我希望保持这段代码的总体结构不变。我知道可能有个"更快的办法"下面是我的多项式加法代码:
Polynomial Add(Polynomial &poly1, Polynomial &poly2)
{
vector<int> temp1;
if( poly1.Degree() > poly2.Degree() )
{
for( int i = 0 ; i<poly2.Degree() ; i++ )
{
temp1[i]=poly1.Coefficient(i)+poly2.Coefficient(i);
}
Polynomial temp0(temp1);
return temp0;
}
else if ( poly1.Degree() < poly2.Degree() )
{
for( int i = 0 ; i<poly1.Degree() ; i++ )
{
temp1[i]=poly1.Coefficient(i)+poly2.Coefficient(i);
}
Polynomial temp0(temp1);
return temp0;
}
}
下面是Degree()成员函数的定义:
int Polynomial::Degree() const
{
for(int i = 0; i < coefficient.size(); i++)
{
int last=0;
if(coefficient[i] != 0)
{
last = i;
}
return last;
}
}
下面是我的多项式类声明:
class Polynomial {
public:
Polynomial();
Polynomial(vector<int> &coeffs);
int Degree() const;
int Coefficient(int k) const;
void print() const;
void constantMultiply(int x);
void Transform();
int nonzero() const;
private:
vector<int> coefficient;
};
现在,我要做的是用这个加法函数把两个输入多项式相乘,我觉得我可以用科恩的经典代数中的以下文献来做这个戏法,经过一些充分的思考。
COHN经典代数参考
我认为这应该做你正在寻找的。如果poly1有i度系数,那么我们迭代poly2的系数。poly2的每个系数相乘,结果将是i+j度,如x^1*x^2=x^(1+2)=x^3。
Polynomial Mul(Polynomial &poly1, Polynomial &poly2)
{
vector<int> temp1;
for( int i = 0; i<poly1.Degree() ; i++ ){
if(poly1.Coefficient[i] != 0){
for( int j = 0; j<poly2.Degree() ; j++ ){
if(poly2.Coefficient[j] != 0){
temp1[i+j] = poly1.Coefficient(i)*poly2.Coefficient(j);
}
}
}
}
Polynomial temp0(temp1);
return temp0;
}
如果我遗漏了问题,或者如果这不能解决你的问题,请让我知道!
你的temp[i]
不能工作。我检查过了。你需要做push_back
或其他类似的操作来填充它。如果你已经知道更大的多项式的大小,它将工作。
像这样:
int how_big;
if(poly1.Degree()>poly2.Degree())
{
how_big = poly1.Degree()+1;
}
else
{
how_big = poly2.Degree()+1;
}
相关文章:
- c++模板来表示多项式
- 使用链表数据结构打印多项式
- 需要帮助重载多项式类运算符C++
- 如何修复此教科书程序以在C++中添加多项式?
- 如何对两个 4 位数字进行乘法,将它们视为 C++ 中的多项式
- 实现伪多项式DP子集和
- 递归程序获得勒让德多项式
- 在 NTL 中构造多项式的标准方法是什么?
- 最小二乘多项式拟合仅适用于偶数个坐标
- 多项式系数代码始终提供相同的答案
- 进入第二个多项式后如何修复分割错误?
- 用霍纳方法进行多项式求值的C++ constexpr
- 卡拉苏巴 - 多项式乘以 CUDA
- 使用链表添加多项式?援助
- 用Isringstream C 提取多项式的系数
- 用于多项式乘法的卡拉苏巴算法
- C :多项式矩阵的输出
- 多项式链接列表中的过载 运算符
- NTRUEncrypt:使用开源标准算法中的描述无法正确找到两个多项式的GCD,无法定义是否存在多边形的逆
- 二阶多项式计算器的输出不一致