|
#include<iostream.h>
3 x0 R$ P$ Z) b; Z#include<math.h>: _' n5 v2 {- m# ^4 e, b
double fx(int n,double p[],double x)& t) ?, F1 q& r# A- n
{
* x$ r5 G: r2 Z; H9 Z double z=0,y=1;
' R4 h; v; E# Q int i=0,j=0;
% a- b* z5 M! O& q0 y% A for(;i<n+1;i++)4 T* G0 [! g" e: Z
{ # s( j1 B+ l, [. X/ e- t
for(;j<i;j++)
) M: ?# J. x$ s y*=x;
5 Y" t$ o2 E* U- s z+=*(p+i)*y;
8 K$ \- b @3 b4 i" d* J# j }
5 P3 w" C4 h; L1 R# w return z;% s- e/ w& V0 b# R" z- u$ v7 @! {; }
} 9 Z5 g) S* k6 x2 u9 W# L2 {6 r
int fi(int k)
5 s" V9 I: V5 b$ F! }. Y& z% z5 Z{9 L( x) f# s9 }4 e( O
if(k==0)! j0 n7 f" N6 d5 G8 P: d' N8 U
return 1;
9 f& y0 \" c2 C* {; v) d else i1 b! S. b% ~7 r" M0 v. O! ^
{
4 \# j4 W+ N! `1 Z: r! t if(k==1)
' c. F- {" T6 C# [8 F, z. U+ K n return 1;
* w- Y5 o6 v9 c/ C' S1 z else U5 M5 ?- W4 z2 Z6 ]( O
{
/ p+ j" _% v/ o( N; r" h int i=0,i1=1,i2=1,w=0;
5 k7 B D) Z; u7 W- O' Y for(;i<k-1;i++)
0 d/ @) L) m% R: E {5 m; d4 M2 J9 _) W! i; T
w=i1+i2;! ?# f6 q' m8 ^) j' V4 Q
i1=i2;
( L4 @# P0 m. V* `! H i2=w;
+ I! y; s0 l0 K3 u+ v { }% g# S6 C5 M; `# |! |! u
return w;
# E. ]& ?0 F# V% C }2 R( f& I# z, B
}
- O; @9 P; O6 I# [, ^} - w& g6 {+ E/ _1 A& C
int r(double w,double a,double b)
3 d9 z% G: L7 ^/ t{ `9 U% c0 ~5 p' A3 v6 c4 a# k r
int i=0;
+ i- _3 b' Y1 o, P( b) s- [ for(;fi(i)<=(b-a)/w;i++)0 F8 ]. N, R* o1 f% [( c
{}" }4 i" p# m! ` a8 o
return i;8 G1 v! j+ R9 {3 C( ]) r1 X1 G/ k/ q
}# V9 f4 ], v9 @: E3 M
void main()
3 ]( Z6 r/ c9 M" y; _1 m{% v( B# l8 P7 H1 a
cout<<"输入函数的最高次幂";. I2 j0 d3 c+ t+ [& ?
int n;0 F% R1 G7 e& U, L
cin>>n;: u0 T* U; C& s4 n* D1 B: j4 L
double *p=new double[n+1];! }+ X8 u% I! d% R9 `+ x
double a,b,g=0,j=0,c=0;( J: t* E4 q. Y5 A+ l
cout<<"依升降幂输入x项的系数"<<endl;
2 W; u5 R3 @* x. N, S for(int i=0;i<n+1;i++)
- q1 M* k# | t" G: k, I cin>>*(p+i);
# p# w! {% J' S6 t) e8 z cout<<"输入误差值"<<endl;" r z2 F, H3 p& f5 V- _2 |, D6 g
double w;
/ @& I2 N1 K4 v+ [. G: w cin>>w;+ C& r# G- i6 I+ T0 L6 V" l0 f1 y
cout<<"输入初始区间"<<endl;
1 i& s2 X' A# B0 }, Y9 ?% I cin>>a>>b;) `% r. q1 |* f c
cout<<"输入辨别常数"<<endl;! U8 b" n% u2 y) b$ _4 t
cin>>c;! ]3 s3 i0 W X _. q
n=r(w,a,b);
" r7 D; ^% {$ ^2 ^8 v2 y i=0;9 E1 o7 ^. p% r6 i- }( Z5 m
cout<<fi(n-i-2)<<endl;
; V1 K& f& A. o M cout<<a<<" "<<b;
3 l( z9 E4 L9 d5 V- X g=a+fi(n-2-i)*(b-a)/fi(n-i);
. k1 v1 \% [+ q/ F& F) `0 j j=a+fi(n-1-i)*(b-a)/fi(n-i);- y9 M; M/ F2 y
cout<<g<<" "<<j;
8 b" B9 Y' a' i0 { for(i=1;i<n-1;i++)% {, O+ D* U5 Y6 W# W% i: O
{) c1 t& I5 [. G3 Q/ g4 s
& |3 w+ F. R! c- Z5 H5 f( J
2 u- W- l2 J. T9 k* L if(fx(n,p,g)>fx(n,p,j))' y6 e( L. f" u9 h% r& [# w9 I# I
{3 W2 n5 a: [- Y! B$ U- s
a=g;5 Y2 a2 M, V" h# B ]! R$ ^
g=j;* |7 c% m+ v% Z1 K# E
j=a+fi(n-1-i)*(b-a)/fi(n-i);
) t7 ?, v$ R$ X" e8 r" `5 w( ?+ r }
( S) N! ]$ ~1 o/ t$ d else
4 Q9 h. w4 [- h$ Z {/ Q k3 t& J3 H
b=j;4 c4 o$ F0 Q/ a3 Y. K: D# O( m
j=g;
% H4 v9 @, I$ [% O0 ` g=a+fi(n-2-i)*(b-a)/fi(n-i);
4 y _; ]5 K$ X4 {0 N }
" C! }) s7 U5 i6 S. l% D5 v1 A; ?8 Z ; K& x% U M' W
}
8 c. |: a( }2 X( U0 R% j4 j4 F; ^, q j=g+c;
; K" H/ Q i, u( r! }! t if(fx(n,p,g)>fx(n,p,j))
9 z9 V9 F) K" n& }2 z5 a3 Z' V a=g;0 u( I4 U$ Z1 x0 |7 M% Q
else b=g;" _1 v+ B; b# w% H0 O
cout<<"函数值在 ("<<g<<","<<j<<")之间;";# v6 `) x, i! b& L V
" M$ X2 n5 \) v$ D% p}
% S' ?1 x) @% Q7 T; N, U c3 U |