|
#include<iostream.h>. l- q4 C# C! m* v
#include<math.h>
4 K. S' S. G% I% T; u; G5 qdouble fx(int n,double p[],double x)& I$ c2 H$ ^' t
{
6 d: q4 [' Y0 W0 e& T- q double z=0,y=1;
' Q- X9 Z% H' g7 a! h int i=0,j=0;! y- X) g6 m1 I/ p6 A' {, R2 O8 V
for(;i<n+1;i++); {; b# k2 ~3 b: H
{ . o* v* @/ } \2 i
for(;j<i;j++)
" d8 X/ ]. D% S7 `' G, e y*=x;& F3 Q8 g/ F) ^3 _) D! D% }6 Z5 ~
z+=*(p+i)*y;
+ i4 @0 b$ h4 P5 o* ?% V9 ^9 H, B }
: O& ^$ ~$ I9 _! k$ z& [/ j return z;4 e1 K# C/ ~) F, {" ]
} 2 p- y4 |# K. w, o6 L
int fi(int k)4 D( `9 n+ ?$ v' A5 S( K
{
# d! v8 F; m! U if(k==0)
/ _5 O/ I9 J. i [" G4 u) X return 1;: q. n0 q# Q, y, H( U
else 8 }6 E: B- X% `! I
{. V% T( m) r4 A8 j6 F
if(k==1)
: n( d. [: y) R; v: Q {% Q! H return 1;
# x) o! c! F7 {$ { else
" B; J S) \% ~4 u/ y {, b' g6 Q8 O0 {3 b6 g; e
int i=0,i1=1,i2=1,w=0;
; L( g' F! k# ~3 Y9 \ V% V" B for(;i<k-1;i++)
' l t: M+ D D/ h) I7 i! W! i {
8 w, b2 c! n( ] w=i1+i2;8 z) R6 R, J. B7 H( e2 y/ @
i1=i2;
T2 `. r K1 ?' Z- R i2=w;
" r* Q1 c' ~0 W5 i% p }: s& A5 ~- |- `0 U' _4 ]9 c* L' A
return w;
) c( B: B% u* f2 Z- o }
6 P0 V4 s( [( G7 M# E+ F/ ?}, c0 Q0 U" |# U7 }# F4 S2 i: p
} ; D& u) {( B0 d7 b3 ~ R
int r(double w,double a,double b)
+ J8 s$ K9 ~8 \+ ^{
6 [3 |: z7 f) K+ L int i=0;0 c6 ~7 h( w$ w/ P
for(;fi(i)<=(b-a)/w;i++)
- E, N# P7 F2 d' ]$ e6 G {}
3 I, E9 d9 R1 G- i: P: J return i;; m; K/ b( Y7 x; d" d2 ]
}1 e* z# F9 z; S& m7 x+ W" c
void main()5 C9 h5 e! [6 L* J5 t5 N& q/ T
{0 H9 w9 ~& B2 G& E: @ C# Y8 q
cout<<"输入函数的最高次幂";6 F& o% Y8 ?+ S2 j
int n;4 d; @( e6 R) K' |8 s6 B; K6 T
cin>>n;
, e% I: X, S1 F double *p=new double[n+1];& H1 J, D1 |; E) s+ @$ L+ I
double a,b,g=0,j=0,c=0;3 @1 ^7 e O% v& B9 G( R+ ^
cout<<"依升降幂输入x项的系数"<<endl;8 y. a5 Q& R7 @7 B
for(int i=0;i<n+1;i++), R0 d5 p: C: Q, w- _
cin>>*(p+i);% o" j$ v x6 d( I4 E
cout<<"输入误差值"<<endl;
# y" M5 r) S) O8 A% s' c' N double w;+ J ]' B; L+ V0 O
cin>>w;% c' X `5 l/ a" Z1 ?# I* j3 {
cout<<"输入初始区间"<<endl;
6 t o* J0 K+ R. }0 t* H cin>>a>>b;
9 L1 a; y) U( l cout<<"输入辨别常数"<<endl;: d S2 {' ?1 F* h# N$ D
cin>>c;/ o5 Q+ J7 a, l5 T U6 H% f" J
n=r(w,a,b); K7 t& N8 f8 L
i=0;
: D3 _: |1 }( {- g# ]% Q1 q( ? cout<<fi(n-i-2)<<endl;
5 U2 B1 V, ^* I9 J: d$ ] cout<<a<<" "<<b;
! r- X$ f" X% n) V! J g=a+fi(n-2-i)*(b-a)/fi(n-i);* |% F4 A8 G" m) m, y: U
j=a+fi(n-1-i)*(b-a)/fi(n-i);" p z* c( Q( l4 ]
cout<<g<<" "<<j;. t; j3 V" P0 a+ {
for(i=1;i<n-1;i++); u9 P: |$ ^# v' n4 B1 d0 Z3 Y
{
- `/ W+ ?2 i. Y" o! H3 u4 j/ X ' r; z9 f1 s- L1 l* R
4 r7 E. O6 m' A5 [! M( q3 } if(fx(n,p,g)>fx(n,p,j))* @* E) U- ]) T0 C9 c
{' V& a7 e! ^( [! l H8 A7 j$ U, R
a=g;
, _6 d' {* { E' K; `) L, u g=j;
9 P" q# E; U3 v: Q j=a+fi(n-1-i)*(b-a)/fi(n-i);2 r) V5 Q7 M) G2 ] \3 h
}1 T# t1 p- e+ b" M0 |
else
0 V2 X' f, h1 T( t3 H {! |) G$ R/ j2 t2 ]; ]5 n
b=j; O- g' S0 [5 |) M- X
j=g;, o+ R. Q2 b. c B$ u+ i
g=a+fi(n-2-i)*(b-a)/fi(n-i);8 {! a: c% w0 M3 k7 }& W5 q+ R3 b( n' o
}" Q, M$ l6 {" i% y d
5 ]0 ~" m# P7 A: `0 H }
. Z% e2 |5 |( ^. o/ |' a1 S j=g+c;
$ R+ B4 p8 V9 J4 G. s ~1 a" p4 J if(fx(n,p,g)>fx(n,p,j))3 @3 ~& }$ L$ }( {# f$ J' Y5 ^, f. ?
a=g;
R% x8 ]0 v5 v# n* I else b=g;
/ b- n+ E7 O; t! y, g& V cout<<"函数值在 ("<<g<<","<<j<<")之间;";/ \6 S, L2 [) G2 J5 E: V5 t
: u- d4 m3 w+ U! Q
}
2 _: B8 p* a7 J. }% b |