gpt4 book ai didi

C++ 多项式乘法

转载 作者:行者123 更新时间:2023-11-28 07:38:05 25 4
gpt4 key购买 nike

我正在尝试用 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 的经典代数中的以下文献,通过充分的思考来完成这个技巧。

COHN'S CLASSIC ALGEBRA REFERENCE

最佳答案

我认为这应该可以满足您的需求。如果 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;
}

如果我遗漏了问题,或者这不能为您解决问题,请告诉我!

关于C++ 多项式乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16354639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com