|
#include<iostream.h>; F7 U, E1 _; s3 s6 r
#include<math.h>% R6 m* G/ I3 e
double fx(int n,double p[],double x)
1 G( g+ I! G# g+ [4 ?% |{
8 i0 C1 w0 [3 m( ]4 h double z=0,y=1;; R$ n4 @$ p- r5 F/ I& u- a2 |: t/ G
int i=0,j=0;6 T5 X0 ] \/ [! Z, G
for(;i<n+1;i++)0 O$ H8 R! A" i1 v5 h( K6 ]1 y
{
9 n }" p- J1 K6 _- O for(;j<i;j++)" m9 r# \9 L+ }
y*=x;: {9 l$ `% \4 g# Q% e2 G0 F
z+=*(p+i)*y;
0 G1 q5 A, F/ ~) H0 u }
+ U& j& n) E1 u" N! A return z;
7 G4 D1 C8 W! v$ w5 e}
+ P, R6 g$ p; rint fi(int k)0 W3 |. f1 X. {- a
{, B2 T6 |- u# j9 X; X. }- m
if(k==0)2 u# D9 p, Z! p/ B8 ?
return 1;$ m( ^, f' M! O7 s; q9 ~0 ~% a
else 4 M- W! N7 e. E7 x! j1 {" c
{9 s( [ \; K* s7 H* e! [
if(k==1)
8 Q% h% j; `# M) ]" ]" l return 1;4 o9 f6 p1 g0 p' d/ D# {/ j0 U
else 2 g6 [2 H/ k1 s* j# f0 A# c. @
{/ x" x5 c, ~% ^
int i=0,i1=1,i2=1,w=0;
4 U+ t( ?+ g7 K* f for(;i<k-1;i++)
. i+ |. m& ~% H# r+ O1 t6 u& A {; E8 ~) b" K% S1 ^: I
w=i1+i2;
% v" s7 ?# u7 K) A- p3 _8 t( r/ b i1=i2;
! l" a* d# y% B6 z' U2 D+ X$ y' a i2=w;; R. n- E9 b: {% k
}. q T$ c- t- g: p# W2 o
return w;( A% b1 U- w) d$ r6 X
}8 d! R% k+ u4 X( @/ X2 X- {* A
}
3 r& |! a u+ g# B \! W}
% q5 S0 f9 D! c7 a# l. @% p# }int r(double w,double a,double b)1 ?) V$ L" r- V
{) ~" O$ q5 q1 r% _% X0 Z; R0 ^
int i=0;+ b" k& [8 Q: Q9 @8 c; A! _
for(;fi(i)<=(b-a)/w;i++)2 k% z9 Q* y" f4 i" [
{}* Q/ M/ n; W3 K) }6 i
return i;
9 v; ~+ w* {5 U x9 H1 B}
1 E# M) T+ i: K# wvoid main()4 w, Y+ z. A6 | t' N! X
{. @& B( Z. e7 y7 A6 }# V
cout<<"输入函数的最高次幂";
* D8 k9 ^4 Q/ [7 [6 h- Y: @ int n;
: N; n" y" B: d5 Z cin>>n;
) \- j: R) g5 ~. k O: q, h double *p=new double[n+1];
2 c' w( Z @, ^5 [ double a,b,g=0,j=0,c=0;. v, K! { F1 q7 b) i
cout<<"依升降幂输入x项的系数"<<endl;
O; p4 w2 I& p8 W# `1 Y6 A for(int i=0;i<n+1;i++)
0 D0 w+ u7 `3 ]& @1 {0 D cin>>*(p+i);( N8 w; Z) C, N) f4 ~
cout<<"输入误差值"<<endl;3 }# l/ C" X, X' D
double w;
/ X( w5 F- S' C% u9 Q) C! i cin>>w; C2 J2 d$ q- e
cout<<"输入初始区间"<<endl;+ `$ D7 g$ f/ N# a H! A- |$ k
cin>>a>>b;
3 ?/ Z7 |/ }/ e: z0 K: h cout<<"输入辨别常数"<<endl;
! u# K& f, p( x cin>>c;8 J$ h, Y) ?) D, q: R/ ~ I
n=r(w,a,b);
) W4 U1 S! w4 q i=0;) l& [# E4 X- h" |* D8 y( I5 S
cout<<fi(n-i-2)<<endl;
9 ~6 V! i0 e$ g/ Z, n& c6 t cout<<a<<" "<<b;0 V& t6 g. A9 P0 q' K1 C" @1 ?
g=a+fi(n-2-i)*(b-a)/fi(n-i);
0 f0 S! ^/ |& _6 x% o! ] j=a+fi(n-1-i)*(b-a)/fi(n-i);6 n3 F- _+ U2 E1 s& {
cout<<g<<" "<<j;( P+ b, o" \" A8 Y3 h6 w" P7 U4 u
for(i=1;i<n-1;i++)
, d1 l* N$ n8 M: E* v+ _8 x {
7 b2 x2 f/ Y' g' Y6 q : [5 T' l( O2 Z# ]. a: w$ Y
% Y8 X% i6 w/ R0 ^+ `1 l, s
if(fx(n,p,g)>fx(n,p,j))
) `1 t* x# b" P {
9 d$ q* R4 W5 z. A9 f# k+ \9 W a=g;* l( M$ z' Y: {- Q4 Z2 ~0 Q
g=j;
* g5 R# R. Y6 x; }; P! \3 |- o j=a+fi(n-1-i)*(b-a)/fi(n-i);
- Z- V( Q* c5 d) w5 ^ }' {/ H6 ]& P: O3 S
else
( J1 O0 m- A, F9 h4 ^3 M {8 F( @& k. }. }) E6 ~( `
b=j;
/ h) J; ?9 Z4 e: _' G j=g;
8 R2 |9 ?/ ]8 e7 f; s: f* Q g=a+fi(n-2-i)*(b-a)/fi(n-i);
7 {. \! p" R3 O" E, \ }) I$ O; L6 q! g1 ^
4 b) M/ S# B8 A7 L% J; M }) u( {4 }! a& M7 h5 Q
j=g+c;
$ g% U" z# @# R" r- `* [2 V$ | if(fx(n,p,g)>fx(n,p,j))9 V4 V0 V& V1 Q0 r+ z, {
a=g;
1 E6 J" a. Z" W- q k else b=g;* n( d3 h/ k# z2 |
cout<<"函数值在 ("<<g<<","<<j<<")之间;";
% w" E% d" p% K* ~% E6 T A 3 R3 G: X* o! r# a# O
}
. ~& T+ p4 R; U2 I6 v- u |