|
#include<iostream.h>
" A$ S6 l+ e% N1 v#include<math.h># G- L. b! X3 b( \4 U' y" H5 m
double fx(int n,double p[],double x)' `1 S6 v2 p% |$ E6 u: t) [& G
{5 Y' _4 e$ i0 H Z8 m, L" ]6 D
double z=0,y=1;
* h% d* U' M" `9 t' H! I* J, X4 }3 { int i=0,j=0;
& i: I4 L4 b" e: R, t( t for(;i<n+1;i++)
/ e- R: o5 `! y1 K0 Y$ L {
. o- u9 ^0 L# }6 Y/ |; T for(;j<i;j++) r- `, t1 ~* I& a
y*=x;
2 P/ ^9 S: {" V1 }8 W* t5 b( M' u: S z+=*(p+i)*y;$ h, c! @$ @4 S# T
}
8 k* ]$ L9 k" C2 Z4 g7 ~3 m. U7 h return z;) F) f* @* X4 J+ t# j6 o
}
3 K5 d5 T4 ? _+ vint fi(int k) g/ u" w7 k S, h6 n! {. }
{
4 j2 m! r6 ]- r s3 x$ L if(k==0)4 {# ?; x; |4 Y$ v
return 1;
2 V* @! m/ i, Z, S$ X else . n$ n+ U& K# H8 k" ~6 u% h
{
; X" n* c- w' d if(k==1)
0 u+ E5 ?/ s( f# ~$ {3 r4 Y+ H return 1;) `. V/ N( J2 H; ?0 r
else
" d X: m6 }8 K6 P5 ~. C' c f: j {
1 i# \1 V' |' z1 ^ int i=0,i1=1,i2=1,w=0;6 u4 n. i! E4 [' K
for(;i<k-1;i++)
% i2 L1 W, `8 w2 V0 x' ? {
5 v* ~7 F+ e$ p. p w=i1+i2;
! l5 Q/ p4 E! h6 D' x, k* a; @ i1=i2;
3 F" M1 m5 Z) P( a% O w# @: p i2=w;
+ g" u9 g* S4 K }
' p: `- {0 }# ]. {" u/ s+ ?5 R, } return w;4 v. O7 c3 M# Y( k4 e& S/ H$ |
}0 a* z- I0 |% j0 Y. a% N, W
}
! l! z. }5 E, D7 Z- D- R S2 Y}
3 D+ G' ~ @& e# f: h3 M3 mint r(double w,double a,double b)
6 _; H" D7 w/ F; c6 V{$ c8 U2 i7 m* s6 i
int i=0;$ v7 c( l6 F& Y C# ]/ X
for(;fi(i)<=(b-a)/w;i++) I5 c. R1 p9 M# ~8 L
{}$ ?: i; Y, T' g- X/ J! L! S% N
return i;! f$ Y# `! D4 \6 a$ U
}8 q+ g& ?7 F( d8 S. X
void main()
{ Q. ] I4 o& U{7 G/ p4 ?+ V* M/ y
cout<<"输入函数的最高次幂";
% ]! T) \$ @, ?- ~& D2 J1 H# u" `) F int n;
1 t0 l$ C$ p/ ^5 e/ b cin>>n;
0 u- l6 {/ s, T0 ^. f double *p=new double[n+1];: [* s; B# K8 V# L" |
double a,b,g=0,j=0,c=0;# {- Y" a- _. B1 m
cout<<"依升降幂输入x项的系数"<<endl;
# i' _# g9 d, G9 W for(int i=0;i<n+1;i++)6 `& B% C7 g& Y' g. D( i
cin>>*(p+i);
& @" O r2 Q e7 z, |, t cout<<"输入误差值"<<endl;
! \7 a" i$ u0 e3 {" O" N( S' f' S double w;/ q; x# D: F4 o4 @$ m N) W5 K/ N
cin>>w;* x3 f+ D; r; g
cout<<"输入初始区间"<<endl;9 ^5 z. U4 V2 y
cin>>a>>b;! }8 X! F5 T9 L8 i7 _- [
cout<<"输入辨别常数"<<endl;, ~* P) _, ^8 l
cin>>c;
5 d8 N- z6 Z7 o$ } m n=r(w,a,b);( K$ T* _% F- ^5 V. C" W5 d: C
i=0;# u# n/ |6 Y5 Q( _
cout<<fi(n-i-2)<<endl;
" k7 K3 M5 i1 N cout<<a<<" "<<b;
# \/ d" R# G0 ^8 a; d4 e g=a+fi(n-2-i)*(b-a)/fi(n-i);6 p8 S! H- ~% u# V) t9 d- L
j=a+fi(n-1-i)*(b-a)/fi(n-i);8 D# `4 q- [+ U
cout<<g<<" "<<j;
2 x* E6 a, T' N9 W for(i=1;i<n-1;i++)' E7 a) V( L. K* c2 N6 z2 L
{9 _" p% W5 a# F e% u7 I
5 o( Q1 j! i9 b) E- N3 y
) e4 U+ W; R* ]# n. G1 K
if(fx(n,p,g)>fx(n,p,j))$ E8 y2 ~' {7 h3 b
{. |/ h) Q X2 x2 ~! p
a=g;- v" L h2 t6 U
g=j;& ]3 G3 {! f2 ]$ }2 Y
j=a+fi(n-1-i)*(b-a)/fi(n-i);
! f$ j5 z" F9 w }5 D/ _$ W# O; R! N) m7 V/ ]
else
* ]5 }* N, I) p; y {
3 J9 ~$ F. `1 s+ j! j b=j;
" x/ T6 B3 V! l0 F$ e7 }; L: z) a( L j=g;5 c. o$ ~! E3 L- Q1 m
g=a+fi(n-2-i)*(b-a)/fi(n-i);6 O7 t/ H. \# @9 T# w6 H
}/ c7 Y) X; e4 k" F
% ]" q2 F$ Z7 L, J$ Z% k }( H9 t" v% U/ T- A
j=g+c;# Z* e5 @( j. U1 O8 K
if(fx(n,p,g)>fx(n,p,j))' r9 J+ L Z- m4 O
a=g;
1 q5 g) S# ~, q& h* X else b=g;
: e# [5 p6 ?( A( e' e `9 t' w9 F cout<<"函数值在 ("<<g<<","<<j<<")之间;";8 [* \3 l4 S! I5 l
$ R) O0 m6 K4 a% l0 ^
}
# \. i; ^. u% O- G- ? |