pat 多项式A/B
第一次接觸多項(xiàng)式除法
?cccc L2-018. 多項(xiàng)式A除以B
2017-04-01 09:09?9人閱讀?評(píng)論(0)?收藏?舉報(bào) ?分類: ?目錄(?)[+]
點(diǎn)擊打開鏈接
【轉(zhuǎn)自 ??Daemoonn? ?】
[cpp]?view plaincopy print?
- ??
計(jì)算
- {\displaystyle {\frac {x^{3}-12x^{2}-42}{x-3}}.}
把被除式、除式按某個(gè)字母作降冪排列,并把所缺的項(xiàng)用零補(bǔ)齊,寫成以下這種形式:
- {\displaystyle {\frac {x^{3}-12x^{2}+0x-42}{x-3}}.}
然后商和余數(shù)可以這樣計(jì)算:
- 將分子的第一項(xiàng)除以分母的最高次項(xiàng)(即次數(shù)最高的項(xiàng),此處為x)。結(jié)果寫在橫線之上(x3?÷?x?=?x2).
- {\displaystyle { x2x?3)x3?12x2+0x?42ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ }}
- 將分母乘以剛得到結(jié)果(最終商的第一項(xiàng)),乘積寫在分子前兩項(xiàng)之下(同類項(xiàng)對(duì)齊) (x2?·?(x???3) =?x3???3x2).
- {\displaystyle { x2x?3)x3?12x2+0x?42ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉx3?3x2 }}
- 從分子的相應(yīng)項(xiàng)中減去剛得到的乘積(消去相等項(xiàng),把不相等的項(xiàng)結(jié)合起來),結(jié)果寫在下面。((x3???12x2)???(x3???3x2) = ?12x2?+?3x2?= ?9x2)然后,將分子的下一項(xiàng)“拿下來”。
- {\displaystyle { x2x?3)x3?12x2+0x?42ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉx3?3x2????????9x2+0x }}
- 把減得的差當(dāng)作新的被除式,重復(fù)前三步(直到余式為零或余式的次數(shù)低于除式的次數(shù)時(shí)為止.被除式=除式×商式+余式 )
- {\displaystyle { x2?9xx?3)x3?12x2+0x?42ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉx3?3x2??????????9x2+0x?9x2+27x??????????27x?42 }}
- 重復(fù)第四步。這次沒什么可以“拿下來”了。
- {\displaystyle { x2?9x?27x?3)x3?12x2+0x?42ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉx3?3x2??????????9x2+0x?9x2+27x??????????27x?42?27x+81??????????123 }}
橫線之上的多項(xiàng)式即為商,而剩下的 (?123) 就是余數(shù)。
- {\displaystyle {\frac {x^{3}-12x^{2}-42}{x-3}}=\underbrace {x^{2}-9x-27} _{q(x)}\underbrace {-{\frac {123}{x-3}}} _{r(x)/g(x)}}
算數(shù)的長除法可以看做以上算法的一個(gè)特殊情形,即所有?x?被替換為10的情形。
除法變換[編輯]
使用多項(xiàng)式長除法可以將一個(gè)多項(xiàng)式寫成 除數(shù)-商 的形式(經(jīng)常很有用)。 考慮多項(xiàng)式?P(x),?D(x) ((D)的次數(shù) < (P)的次數(shù))。 然后,對(duì)某個(gè)商多項(xiàng)式?Q(x) 和余數(shù)多項(xiàng)式?R(x) ((R)的系數(shù) < (D)的系數(shù)),
- {\displaystyle {\frac {P(x)}{D(x)}}=Q(x)+{\frac {R(x)}{D(x)}}\implies P(x)=D(x)Q(x)+R(x).}
這種變換叫做除法變換,是從算數(shù)等式?{\displaystyle {\mathrm {dividend} =\mathrm {divisor} \times \mathrm {quotient} +\mathrm {remainder} }}.[1]?得到的。
應(yīng)用[編輯]
多項(xiàng)式的因式分解[編輯]
有時(shí)某個(gè)多項(xiàng)式的一或多個(gè)根已知,可能是使用有理數(shù)根定理得到的。如果一個(gè){\displaystyle n}次多項(xiàng)式?{\displaystyle P(x)}的一個(gè)根{\displaystyle r}已知,那么{\displaystyle P(x)}?可以使用多項(xiàng)式長除法因式分解為{\displaystyle (x-r)Q(x)}的形式,其中{\displaystyle Q(x)}是一個(gè){\displaystyle n-1}次的多項(xiàng)式。簡單來說,{\displaystyle Q(x)}就是長除法的商,而又知{\displaystyle r}是{\displaystyle P(x)}的一個(gè)根、余式必定為零。
相似地,如果不止一個(gè)根是已知的,比如已知{\displaystyle r}和{\displaystyle s}這兩個(gè),那么可以先從{\displaystyle P(x)}中除掉線性因子{\displaystyle x-r}得到{\displaystyle Q(x)},再從{\displaystyle Q(x)}中除掉?{\displaystyle x-s},以此類推。或者可以一次性地除掉二次因子{\displaystyle x^{2}-(r+s)x+rs}。
使用這種方法,有時(shí)超過四次的多項(xiàng)式的所有根都可以求得,雖然這并不總是可能的。例如,如果有理數(shù)根定理可以用來求得一個(gè)五次方程的一個(gè)(比例)根,它就可以被除掉以得到一個(gè)四次商式;然后使用四次方程求根的顯式公式求得剩余的根。
尋找多項(xiàng)式的切線[編輯]
多項(xiàng)式長除法可以用來在給定點(diǎn)上查找給定多項(xiàng)式的切線方程。[2]?如果 R(x) 是 P(x)/(x-r)2?的余式——也即,除以 x2-2rx+r2——那么在 x=r 處 P(x) 的切線方程是 y=R(x),不論 r 是否是 P(x) 的根。
[cpp]?view plaincopy print?- #include<iostream>??
- #include<string>??
- #include<stdio.h>??
- #include<string.h>??
- #include<map>??
- #include<queue>??
- #include<math.h>??
- #include<algorithm>??
- using?namespace?std;??
- const?int?maxn=1e6+100;??
- int?x,lena,lenb,maxa=-1,maxb=-1,cntc,cnta;??
- double?y,a[maxn],b[maxn],c[maxn];??
- int?input(int?len,double?*arr,?int?*maxx){??
- ????for(int?i=0;i<len;++i){??
- ????????scanf("%d%lf",&x,&y);??
- ????????arr[x]=y;??
- ????????*maxx=max(*maxx,x);??
- ????}??
- ??
- }??
- void?clearzoro(int?&cnt,int?be,double?*arr){??
- ????cnt=0;??
- ????for(int?i=be;i>=0;--i){??
- ????????if(!fabs(arr[i])<1e-8)??
- ????????????fabs(arr[i])<0.05?arr[i]=0.0:cnt++;??
- ????}??
- }??
- void?output(int?cnt,int?be,double?*arr){??
- ????if(cnt==0)?puts("0?0?0.0");??
- ????else?{??
- ????????printf("%d",cnt);??
- ????????for(int?i=be;i>=0;--i){??
- ????????????if(!fabs(arr[i])<1e-8)?printf("?%d?%.1lf",i,arr[i]);??
- ????????}??
- ????????puts("");??
- ????}??
- }??
- ??
- int?main(){??
- ??
- ????scanf("%d",&lena);??
- ????input(lena,a,&maxa);??
- ????scanf("%d",&lenb);??
- ????input(lenb,b,&maxb);??
- ????for(int?i=maxa;i>=maxb;--i){??
- ????????c[i-maxb]=a[i]/b[maxb];??
- ????????for(int?j=maxb;j>=0;--j)??
- ????????????a[j+i-maxb]-=b[j]*c[i-maxb];??
- ????}??
- ????clearzoro(cntc,maxa-maxb,c);??
- ????clearzoro(cnta,maxb,a);??
- ????output(cntc,maxa-maxb,c);??
- ????output(cnta,maxb-1,a);??
- ????return?0;??
- }??
總結(jié)
以上是生活随笔為你收集整理的pat 多项式A/B的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。