C++求解多项式

来源:百度知道 编辑:UC知道 时间:2024/05/05 02:53:47
求(x-2)(x+3)(x-5)的结果 x是未知数

结果满意,我追加20分
注意X是未知数,结果是含X的多项式。

我明白了,你要实现的是多项式的符号计算。但不应该把那个叫“求解多项式”,x也不是未知数;事实上你是要实现一元多项式的展开(expand)与合并同类项这样的功能,其中x是形式变元。

这个东西的完整实现会比较长,即使只实现一些比较基本的功能也要几百行左右,虽然我手头确有一个很早做的类似的成品,但还是建议你自己做一下,恕不贴出大段的代码。

大致方法是用表实现,表的每节表示多项式的一项,存储指数(index)和系数(coefficient)。指数可以就用普通的int型,也可以自己实现一个大整数类;系数根据需要用int型或double型,如果是整系数最好还是自己实现一个大整数类,或利用现成的支持大整数的类库(如开源的NTL库)。

一个可行的基本结构如下:
struct PolyNode {
number_type coefficient;
int index;
};

class Polynomial {
public:
// ......
private:
list < PolyNode > Poly;
number_type xvalue; // x的值,多项式求值时用。可选
// ......
};

需要实现的函数至少要有:
重载+、-、*、+=、-=、*=、=、一元负号运算符。
对iostream的<<、>>操作。
无参数的构造函数和复制构造函数。

可选的实现如:
重载/、/=、%、%=运算(因高精度除法较难,故不作为基本实现),GCD、LCM函数(最大公因子和最小公倍),expandGCD函数。
乘方、逐项求导和积分运算。
代值运算。
<、>、<=、>=运算(字典序)。
等等。

模拟多项式的计算可以用链表,每个结点的结构包括了系数和x的几次幂。
然后就很容易了:)

我觉得milksea的程序已经很好了,chenhaooo就不用搞麻烦的了,呵呵