|
#include<iostream.h># y6 Q& ^& h8 r
#include<math.h> C* C* V7 U. x* @
double fx(int n,double p[],double x)
& o/ \) X" O# K& w, i# u0 m& K/ Q{$ Z6 R7 d7 b4 K- M
double z=0,y=1;
) J7 i8 C9 T% X int i=0,j=0;- ^+ t. `8 l& D; z! c
for(;i<n+1;i++) ?: u3 L5 T! Z9 J/ V0 y4 H
{ ! g' v: p7 b8 W; ]
for(;j<i;j++)
& |! _/ E3 F0 G7 |1 q2 U4 P y*=x; B1 m3 k2 b# l
z+=*(p+i)*y;
e# C8 r- Y9 t* z }7 `6 u6 \5 J0 B' Y. u
return z;( n" V; p) |1 D# b
}
" B" j) R* n1 Fint fi(int k)
$ ~) T% f0 o& ?5 P0 {, A. H{
x0 k5 ^4 }+ e3 x3 f0 M% X if(k==0)
3 L, \# Y2 |! P$ X/ Z( A return 1;
* r( g: O; A+ W+ ]9 b- f else
1 D- }* T& u+ @5 [ {
9 _4 [* Y# A7 ]5 f6 w' Q if(k==1)8 e8 r" r6 P! u7 C
return 1;
/ R1 _7 X7 s; s1 `" u$ E' \" ^ else
3 h* f' |/ } K; q: Y {, w1 e/ u- |8 I* T c f V
int i=0,i1=1,i2=1,w=0;
' P8 Z: u, w3 [! O for(;i<k-1;i++)% T; N& {. q! k7 c5 B
{
" ~, t) N5 I9 X w=i1+i2;
" o! n. M% L1 K1 d& d* q9 p4 y( E/ F i1=i2;; p2 y) P' e8 Z
i2=w;
! U6 b9 p( F% @- P1 t$ m2 j }
1 p8 v8 F7 m3 ~ return w;
# z/ {0 `! I( Y9 v. W }
( \3 A; u/ d8 q+ u}( [/ f% x6 b8 O7 h+ r" }) D
}
9 Y/ C9 V! k) d- ]% k" P0 y2 d2 Qint r(double w,double a,double b); \. @$ K2 a$ P2 j2 C; X2 r$ z9 Y4 @7 E
{, d8 r: h, ?/ t# E
int i=0;& ], D8 s+ u; k$ e p- g2 O8 k( W3 w$ a6 W
for(;fi(i)<=(b-a)/w;i++)
k3 {' V/ J* ~ {}; O* g j" O1 ?; K) F# ]
return i;
( e' k$ c2 V' t6 C$ b/ h}
9 g x* X. X0 rvoid main()) U9 H' F7 L8 {& ]! W
{2 X2 P0 t5 `% K* g0 d+ K% m
cout<<"输入函数的最高次幂";7 }9 |2 ?, i) ]1 a: L
int n;
8 H# n" f; y$ |: U cin>>n;3 L& u4 s8 ?- Y) K
double *p=new double[n+1];
6 e6 I8 O, Z2 W double a,b,g=0,j=0,c=0;
. G+ w- Y4 w: H& V cout<<"依升降幂输入x项的系数"<<endl;
& i" \8 s: _4 p3 B, ?; B* A7 l for(int i=0;i<n+1;i++)/ F2 f1 d. {+ r# m2 S- g8 Z- T/ N
cin>>*(p+i);3 F9 k R1 y- ^& `* k& q' @; v
cout<<"输入误差值"<<endl;
, p+ A/ b' H$ m! ~; s) X double w;# E/ c2 O4 c# P8 H! N
cin>>w;
) Z" F( c2 }, [( S: t h5 j' o cout<<"输入初始区间"<<endl;
$ I" t7 U' f w& Y. Y/ Q- T7 `# f cin>>a>>b;
6 @, M, b4 c, i6 C# G cout<<"输入辨别常数"<<endl;6 u( {+ G8 W) O
cin>>c;
K6 G. G4 O* M& K, g0 V6 @5 D n=r(w,a,b);
4 i" |8 r1 y* Z- @% I u) Y i=0;8 J' z% P8 p2 G/ B' b
cout<<fi(n-i-2)<<endl;
1 p: f! s$ u/ A& K8 E cout<<a<<" "<<b;) T1 K w- I* [, f+ } u
g=a+fi(n-2-i)*(b-a)/fi(n-i);
. }% q) `" N/ ?6 P8 G5 o4 q j=a+fi(n-1-i)*(b-a)/fi(n-i); Y" d' N6 w, n4 p- U+ h
cout<<g<<" "<<j;5 y6 [" g" v; o6 R
for(i=1;i<n-1;i++)9 u, d7 A0 u% H
{+ ~6 `# i1 w/ I8 x2 h: a
) O. {4 w5 m3 R- Z# ` 5 B0 s5 P+ A( k$ n* R
if(fx(n,p,g)>fx(n,p,j))
/ K$ \& Z, c* |; @% Z& E% G {
. l6 L+ [/ ^3 p# y. Y a=g;
3 T+ O+ B9 B4 \4 v+ q2 k9 x g=j;
4 i' w% m2 }8 L4 n$ a- t T) A j=a+fi(n-1-i)*(b-a)/fi(n-i);9 ^7 F* n" r1 n
}# t9 [4 r! a+ q. K. @
else
2 V9 r0 I( t K {
5 |$ e9 F3 p5 L- `4 b- N b=j;
4 R- Q. `( M3 p# V( W, f7 f: L- w2 A j=g;- j9 X: {5 y) f' K4 f B
g=a+fi(n-2-i)*(b-a)/fi(n-i);# J- D: |; r. ^' O! p' C
}- ^4 L. M( v$ N* R, I
0 {) k1 b3 s3 d. j }0 u3 X- t, I) t9 O( r/ T
j=g+c;
J; W4 r5 B F' [# a( t+ T if(fx(n,p,g)>fx(n,p,j)), f) e( I; \. u, n8 `9 k* ?' F
a=g;
1 y! H/ ]2 N: r! {+ g else b=g;' z9 x/ {9 l8 ^- J2 j
cout<<"函数值在 ("<<g<<","<<j<<")之间;";
5 ^& n' `1 i) E* ~( m4 h5 i4 r4 c ! ]5 h& M% l l7 b& c' l4 n+ \
}% h. Y+ v5 {+ f
|