|
#include<iostream.h>
- e9 W( T5 [( x& o. z* j$ A4 j. P#include<math.h>
3 w$ }( w& H5 [# B- @) R7 Sdouble fx(int n,double p[],double x) z4 Q/ _8 W5 Q, i2 t2 c% W
{
7 }7 I" t! \2 T8 p8 {% t double z=0,y=1;+ ^6 w9 X) l {2 ]
int i=0,j=0;1 a6 e+ F: [- [- Q% M
for(;i<n+1;i++)% z* T2 [$ M7 E& [
{
. l, [! ?' w! D4 L for(;j<i;j++)7 U- y# L' W) D
y*=x;' ]" o" A, l; s( v
z+=*(p+i)*y;- H, _+ |; k+ `$ o- |$ z3 n4 p
}
* L4 ]6 |2 m% j return z;
" I/ ?+ Z7 W) U2 _: ^8 L}
* o8 ? ]3 Y# m6 }" Gint fi(int k)
: c" X- ~4 u4 K* j{: x$ z! } e3 ?9 u6 u7 V% Y4 v# |
if(k==0)2 C: K# w. J3 `8 C/ E' X9 e
return 1;
: j) F3 p2 r6 F! C' ?' ] else
) J0 B' m5 V, l: p1 P {! p5 ]) p1 k1 y p3 m
if(k==1)
2 c& V/ J% a; J) v& Z return 1;6 s. z4 B O D$ d4 ^7 c! S+ F
else
) k6 X Y( |8 Y1 x5 G7 A {
; ]4 T* Z E8 }) _$ Z$ P6 A( o# {. m int i=0,i1=1,i2=1,w=0;
0 b t1 F1 L# a: U t+ i/ n for(;i<k-1;i++)
& b+ j4 J0 n Z# w {9 F7 ?" l8 u* ?
w=i1+i2;( X; e8 a9 @$ S1 S9 T% M3 ?
i1=i2;7 o/ x# H- i. F' c: f' S) @
i2=w;
8 I! x! ]3 Y; E1 s) Y1 G/ [. C6 A }$ M9 W( |1 Q( Z$ Y
return w;
! }. F; d. @* ~+ U% Q# \( x6 `3 D1 y+ g }
& W. Y' ^1 k! o% C7 ^}9 a& @2 f O# ~" `- J
} ! X1 F& [8 u+ {6 a- G. g
int r(double w,double a,double b)
" u2 n" x0 g9 i# b D{1 G& o6 G+ r3 w: G- H! |
int i=0;
, _8 V. d+ j1 R" w% q2 n' e for(;fi(i)<=(b-a)/w;i++)
/ Y% m% f' x( x6 N {}
/ E. p9 \8 C: C$ b& N6 O return i;. S& w% \0 \( j1 T& d7 P) l1 N
}$ O6 j2 k$ i: J% D6 c
void main()
1 c7 Y9 x6 u! ~0 l" X{* P. o0 x5 t( H5 Z! S
cout<<"输入函数的最高次幂";( ?* T; `' \' N3 f; z+ B8 p
int n;- R/ W( r- S5 t- }- r
cin>>n;
/ E# F% u$ E2 t# G, g, h. _ double *p=new double[n+1];3 {# c1 I& c& Z! E
double a,b,g=0,j=0,c=0;. Y; L1 |4 w& F% F7 M
cout<<"依升降幂输入x项的系数"<<endl;% E2 q5 b7 i) w
for(int i=0;i<n+1;i++)
+ @. `" x$ K1 E' F# r- ]& ? cin>>*(p+i);
) X( B- S1 D, v1 i) b cout<<"输入误差值"<<endl;
4 v4 L6 z( ?* K( m double w;
- u" e" B8 ?$ m# l0 K cin>>w;
/ K& x, \% ^7 |5 I cout<<"输入初始区间"<<endl;
. x5 E2 [5 u" e" \# Y! V cin>>a>>b;
0 K& v8 Y! l5 j6 |( b cout<<"输入辨别常数"<<endl;7 c8 N9 {9 V5 R) f
cin>>c;
7 d3 t' a& G3 L( Q, ]7 x n=r(w,a,b);
" i/ J- C# e& a0 V: u* j" m# [. c i=0;/ q( Z4 {* k8 B7 k) R* S4 ^
cout<<fi(n-i-2)<<endl;7 m$ L. H2 k7 F% K. N2 D/ o$ f8 C
cout<<a<<" "<<b;' O* [5 b, [1 v% K( X
g=a+fi(n-2-i)*(b-a)/fi(n-i);& m2 }% s& q" N
j=a+fi(n-1-i)*(b-a)/fi(n-i);
2 t3 X- v& w2 K+ H) b cout<<g<<" "<<j;9 ~8 S) ~+ S8 f# Z. s* B+ c
for(i=1;i<n-1;i++)# p1 f& C6 |6 K: G9 G4 |! t
{
4 E: A4 {' b8 N: { + S+ p' Q$ M: {5 M' j
: M; [* g( o3 u# ~ if(fx(n,p,g)>fx(n,p,j))
$ T( C& Z" u! P1 K! t& ]) e* m {
" b* P+ S% O% W1 ^8 E a=g;4 p- D; O& l. ?+ k; Q
g=j;
. R+ e% k3 b7 ] j=a+fi(n-1-i)*(b-a)/fi(n-i);
6 I8 O0 W! ^0 e; f4 I7 O, @ }" [+ Q2 F* b! \# S$ C" k7 [
else 3 e. Q6 q9 o Y% H" g& {
{
. F# j3 u0 v9 r b=j;
1 s, u+ E0 `' X! F' @' m6 T, y j=g;
% P# T0 d- ~$ L, I, E4 R. X g=a+fi(n-2-i)*(b-a)/fi(n-i);
. Q6 Q/ f A# k0 w }
8 b% P2 j; d+ E$ }+ H 3 C4 {, @1 d% Q- S3 O
}9 a- [5 s2 @3 _7 b: g. K
j=g+c;4 E1 l+ R: N3 Y- V; X
if(fx(n,p,g)>fx(n,p,j))
! c+ U& R0 ]+ g* u2 p( G a=g;7 E( P' C3 O C3 d2 F& B8 g
else b=g;
/ M" K5 t9 s. C cout<<"函数值在 ("<<g<<","<<j<<")之间;";
4 C$ I, h$ Z$ l& G* v2 I 1 n8 `$ g U3 \3 F
}- z$ T' T1 d- g' _$ z* j2 Q# }! `. d
|