21xrx.com
2024-12-22 14:56:40 Sunday
登录
文章检索 我的文章 写文章
C++ 实现一元多项式的简化
2023-07-13 02:12:24 深夜i     --     --
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++ 实现一元多项式的简化的详细过程。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复