21xrx.com
2025-06-18 06:58:48 Wednesday
文章检索 我的文章 写文章
C++ 实现一元多项式的简化
2023-07-13 02:12:24 深夜i     24     0
C++ 一元多项式 简化

一元多项式是数学中经常出现的一种表达式形式,其中包含一个自变量 x 和若干个系数,基本形式为 a0 + a1x + a2x² + ... + anxⁿ。在实际的编程中,我们经常需要对多项式进行简化,即将多项式中的同类项合并,并将系数相加。下面介绍如何使用 C++ 实现一元多项式的简化。

首先,我们需要定义一个结构体来表示一个多项式项,其中包含两个成员变量:系数和指数。代码如下:

struct Item
  double coefficient;   // 系数
  int exponent;      // 指数
;

接下来,我们可以使用一个 vector 来存储多项式中的所有项。为了方便起见,我们可以将 vector 中的项按照指数递减的顺序排列,这样可以更容易地遍历相同指数的项。具体实现如下:

vector<Item> polynomial;  // 用于存储多项式
// 向多项式中添加一项
void add_item(double coefficient, int exponent) {
  Item item;
  item.coefficient = coefficient;
  item.exponent = exponent;
  polynomial.push_back(item);
  // 每次加入新项后需要重新按指数递减排序
  sort(polynomial.begin(), polynomial.end(), [](Item &a, Item &b)
    return a.exponent > b.exponent;
  );
}

有了多项式项和多项式的存储结构,我们就可以开始对多项式进行简化了。简化的过程其实很简单,可以简单地通过遍历多项式中的所有项,并将指数相同的项的系数累加起来。代码如下:

// 对多项式进行简化
void simplify() {
  for (int i = 0; i < polynomial.size() - 1; i++) {
    if (polynomial[i].exponent == polynomial[i+1].exponent) {
      polynomial[i+1].coefficient += polynomial[i].coefficient;
      polynomial.erase(polynomial.begin() + i);
      i--;
    }
  }
}

至此,我们已经成功地实现了一元多项式的简化。为了方便起见,我们可以再定义一个输出多项式的函数,代码如下:

// 输出多项式
void print() {
  for (int i = 0; i < polynomial.size(); i++) {
    cout << polynomial[i].coefficient << "x^" << polynomial[i].exponent;
    if (i < polynomial.size() - 1) {
      cout << " + ";
    }
  }
  cout << endl;
}

最后,我们来看一个完整的使用样例:

int main() {
  add_item(1.2, 5);
  add_item(-2.5, 4);
  add_item(3.1, 2);
  add_item(4.2, 5);
  add_item(-1.5, 4);
  add_item(-3.3, 3);
  add_item(1.1, 2);
  cout << "原始多项式:"; print();
  simplify();
  cout << "简化后的多项式:"; print();
  return 0;
}

输出结果为:

原始多项式:4.2x^5 + 1.2x^5 - 2.5x^4 - 1.5x^4 - 3.3x^3 + 3.1x^2 + 1.1x^2
简化后的多项式:5.4x^5 - 4.0x^4 - 3.3x^3 + 4.2x^2

可以看到,多项式已经成功地简化了。以上就是使用 C++ 实现一元多项式的简化的详细过程。

  
  

评论区