首页 > 编程知识 正文

多多项式除法,多项式分解除项法

时间:2023-05-04 05:29:46 阅读:228497 作者:2220

最近的一项工作就是用vector实现多项式类,这个类需要完成多项式的数据结构的定义以及基本运算,包括加减乘除,前三个还比较容易,对于多项式的除法,因为有除不尽的情况,比如:

计算

其结果是:

明显是除不尽的,但是按照普通的除法去做,余数就会被舍弃,当涉及到求值或者求导时,就会产生极大的误差,尤其是在实现axdmht法求解高次多项式的数值解时,需要计算迭代点的函数值以及导数值,余数的舍弃必然使函数值产生偏差,其导数值也必然不准,也就使最后产生不靠谱的结果。

解决方案有两种思路,也是我自己的思考过程,第一种,我想通过指针的形式将多项式除法的结果和傻傻的白昼返回,然后在计算函数值和导数值的时候,需要将余数和除数再次相除,这样做确实可以解决问题,但是,前提是需要将被除数,除数区分开,在单次除法的计算中问题不大,但是涉及到复杂函数构成时,就显得困难了。

所以产生了第二种解决方案,就是遇到除法,不去计算结果,而是构造一个结构体,这个结构体有两部分构成,一部分是被除数,一部分是除数,也就是变成分子分母的形式

template<typename T>struct Div_Poly{Poly<T> Numer_Poly; //分子--被除数Poly<T> Denom_Poly;//分母--除数}

在涉及除法时,就直接传值操作,而不进行实际的除法运算,求函数值时直接将函数值代入,求导数值时,利用导数的定义

 

进行计算。

delta_x可以设置为double类型的极小值,比如可以取 0.00000001,自己把握精度。

这部分代码我将传到的github上

Poly_class_based_on_vector

文件为demo_4.1.zip

其他为早期版本。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。