f(x) = a0xn + a1xn-1 + a2xn-2 + ... + an-1x + an
= ((...(( a0x + a1 )x + a2)x + ...)x + an-1)x + an
掛け算の回数
| 式 | 回数(乗算) | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [1] |
|
|
|||||||||||
| [2] |
|
|
|||||||||||
| [3] |
|
|
| 式 | 掛け算の回数 |
|---|---|
| an | 0 |
| an-1x | 1 |
| an-2x2=an-2x× x | 2 |
| an-3x3=an-3x× x× x | 3 |
| ... | ... |
| akxn-k=ak× x × ... × x | k |
| y←a0xn | y=a0xn |
| y←y+a1xn-1 | y=a0xn+a1xn-1 |
| y←y+a2xn-2 | y=a0xn+a1xn-1 +a2xn-2 |
| ... | ... |
| y←y+an-1x | y=a0xn+a1xn-1 +a2xn-2+... +an-1x |
| y←y+an | y=a0xn+a1xn-1 +a2xn-2+... +an-1x +an |
| y=0 | ||||
| k=0 | ||||
|
| t←x, y←an+an-1*t | t=x, y=an+an-1x |
| t←t*x, y←y+an-2*t | t=x2, y=an+an-1x+an-2x2 |
| t←t*x, y←y+an-3*t | t=x3, y=an+an-1x+an-2x2 +an-3x3 |
| ... | ... |
| t←t*x, y←y+a0*t | t=xn, y=an+an-1x +an-2x2 +an-3x3 +... +a0xn |
| t=x | |||||
| y=an+an-1*t | |||||
| k=n-1 | |||||
|
| y←a0 | y=a0 |
| y←y*x+a1 | y=(a0)*y+a1 =a0y+a1 |
| y←y*x+a2 | y=(a0x+a1)y+a2 =a0x2+a1x+a2 |
| ... | ... |
| y←y*x+an-1 | y=(a0xn-2+a1xn-3
+...+an-2)*x+an-1 =a0xn-1 +a1xn-2 +a2xn-3 +... +an-2x+an-1 |
| y←y*x+an | y=(a0xn-1+a1xn-2
+...+an-1)*x+an =a0xn +a1xn-1 +a2xn-2 +... +an-2x2 +an-1x+an |
|
y=a[0];
k=1;
while(k<=n) {
y=y*x+a[k];
k=k+1;
}
|
|||||||
|
y=a[0]; for(k=1; k<=n; k++) y=y*x+a[k]; |
プログラム例
ただし、次数n、係数ak, (k=0,1,2,...,n) および x の 値はキーボード(標準入力装置)より読み込む。
|
|