|
#include<iostream.h>
$ P4 F7 ]4 L, i9 _$ U#include<math.h>7 [$ w# K5 D9 \8 f
double fx(int n,double p[],double x)* v$ D; X( x, S1 u1 Z
{6 c8 v7 T& U$ p3 e7 A# \( |, t Q1 \
double z=0,y=1;, d* x+ ^6 p; C
int i=0,j=0;; a4 X6 P* l9 q( L. Q8 b. D: a
for(;i<n+1;i++)
* ~9 F/ }) k6 s, N" N& ? {
: ?- M& M* ~7 e0 I2 A7 q$ y for(;j<i;j++)
% F4 K, Z/ {0 S y*=x;
, g% _; [! `7 ?0 T. ] m z+=*(p+i)*y;
+ [- }0 F0 }; _ }
3 X# }4 v4 I2 h* A" s return z;
6 M$ ]# l/ A1 Q- X$ t! R% N8 T* _}
# C* [0 u$ n7 [7 m3 g6 iint fi(int k)
( E! O( @, O' z2 Q{
. h! L% F+ } @9 W' H7 _, c if(k==0)( T" ?! ?1 B' F% U* g8 \
return 1;, W7 r% [% X5 A0 ^7 P/ Y
else
$ |* y5 @7 {! X( o {
+ m$ i/ A- }9 @" r/ n" n if(k==1)
9 f4 O* W8 b# Q! B0 l+ } return 1;* \; \. n2 [* u0 Z* Y2 h
else
! z w7 t8 |6 }& g+ z {* r" g1 U. l H
int i=0,i1=1,i2=1,w=0;/ @: _# W7 R% o' k9 Z
for(;i<k-1;i++)
' K- u8 n% U k$ }* J R {
0 o0 S) ~" ` o& ~9 J w=i1+i2;! x) P* \- s% w9 P4 @/ G+ n8 K' u. U# H
i1=i2;$ x5 g7 f" j/ @9 h7 z5 j
i2=w;
, |4 h5 _0 o5 W' S5 D) k! B3 w }
A. {7 C/ z; I# j. ]. c2 v2 z return w;# ]" `$ l0 C A/ T) f( T6 }
}" H' s' l3 Q7 x7 o- Q9 L" C v
}
, M) e7 O2 x9 G} # A9 l! q$ W) v' {/ p, Q
int r(double w,double a,double b)
7 P" \; u! M$ C! [ z% s3 R{$ K2 r n) }5 z! K K( Q
int i=0;; I5 V$ P7 Z6 d) N7 g6 ~
for(;fi(i)<=(b-a)/w;i++)/ x- z. i' e/ ?- T* |: u G
{}
0 l- F `1 D6 m. L8 Y return i;
5 k2 O4 D! y4 E4 ?1 n: z" t}
; _# a. x3 A4 v8 g @7 Q# Gvoid main()9 ~% B; U0 U3 H. n6 o9 }- A, }
{3 b5 Q# u0 e1 c) a1 E9 s
cout<<"输入函数的最高次幂";* b) ?# G0 y, c# \) E( W* s
int n;
' |7 U- M/ `( n% X. C cin>>n;+ ]) I z9 @5 W6 W+ B
double *p=new double[n+1];: _$ C- b! W# @$ B& m- x
double a,b,g=0,j=0,c=0;
2 p$ W( K* g4 z6 g( c, p" O cout<<"依升降幂输入x项的系数"<<endl;
) J2 w- e9 |$ G+ |: H) ` for(int i=0;i<n+1;i++)$ h! D& V# {1 {7 ?0 z
cin>>*(p+i);
! ^1 k$ e! c% J" E cout<<"输入误差值"<<endl;8 V/ t; @+ y7 q
double w;
l. h' v0 N0 u/ V z G: b cin>>w;
( E% v3 `" |, J5 H cout<<"输入初始区间"<<endl;) |8 x$ V8 ~4 F. ]1 R6 I* N
cin>>a>>b;
) u. t. {. K s1 q4 ~3 M cout<<"输入辨别常数"<<endl;4 A6 Z" a( Y+ m0 X! W6 o0 Z% q" w
cin>>c;0 l( {& f+ b7 u
n=r(w,a,b);) q$ e- P2 O" D& H( T4 L
i=0;
2 W# d' \% r3 j8 C, @ cout<<fi(n-i-2)<<endl;6 f3 ^$ v8 D' q/ Q
cout<<a<<" "<<b;
9 s4 ?& R* K3 I# ?6 p g=a+fi(n-2-i)*(b-a)/fi(n-i);) h5 H! q! l' l- a& Q4 k
j=a+fi(n-1-i)*(b-a)/fi(n-i);' B, d4 h7 d) J8 f* f E
cout<<g<<" "<<j;9 m7 A' v) l1 o7 g7 }6 O( m5 Y
for(i=1;i<n-1;i++)
' ^/ V) s) J/ Y+ S0 s' t {) E6 X+ t; ~0 d! Y2 g# ~2 y
( m/ [$ D* |) W
( n3 N3 J5 e$ ?7 C/ Y
if(fx(n,p,g)>fx(n,p,j))
* ]! ^4 A& J" p, }/ N) ? { g" t( v; n8 k0 u- {
a=g;; V U# D" B) |& W: ?$ z
g=j;
- t! S5 x8 {' B( i* ]& z% N$ l5 @ j=a+fi(n-1-i)*(b-a)/fi(n-i);
0 P4 F- V; @1 f5 q }
( u* v |2 t4 ~. F3 T else 6 d7 T9 w" ^$ g# b
{: u$ o$ Y" c q8 c) Z2 T
b=j;$ Z5 p% |$ s4 d9 D# n4 O
j=g;5 ]. x' t3 ], b4 d, l
g=a+fi(n-2-i)*(b-a)/fi(n-i);5 n& O. O$ j+ e# {3 k. k. B# O
}
v, w3 `9 \' P/ D; t) _
% b7 @ K" `' r. i }
5 m2 D F$ g' Z$ {! y( } j=g+c;0 T: Z0 y# G4 ]+ |! ]
if(fx(n,p,g)>fx(n,p,j))4 j, \6 c" H4 f T3 R. J
a=g;
; {2 {6 W5 D4 m# o, v$ w/ @$ x3 f else b=g;( b9 ~! x; L- m$ u: t, c
cout<<"函数值在 ("<<g<<","<<j<<")之间;";4 w6 I/ G/ C, T2 {, i# f3 B
2 t2 |2 b; s' H6 n) K) g}9 N: y4 @; u8 i* G% V
|