|
#include<iostream.h>2 ^/ }5 E$ S. t3 E- ^+ H
#include<math.h>) ]% _" ~6 k: M3 [
double fx(int n,double p[],double x)) ~( X9 h P# G4 p# P
{
' t# t9 s, x4 T' O6 \: i' b3 K double z=0,y=1;
4 N- f" @! n" Y A int i=0,j=0;
$ i3 C# y0 K( G/ m for(;i<n+1;i++)
6 a2 P; L" b2 M. s; {! F; e { : I1 a t) H# {; q
for(;j<i;j++)" I+ A3 s. R7 z7 w% a. X+ {
y*=x;3 e+ O; J3 q: E
z+=*(p+i)*y;
. T7 @' ^, b9 l4 `5 _0 g) U }
% u# s5 |& v" ]; y return z;
2 ` ]% O# k8 A9 P2 z) B} + F6 e6 Z1 N& B1 y7 M, E! R- s S
int fi(int k)
8 C$ F' b) J$ t* A6 L{
2 U, q) K; L1 P/ x if(k==0)0 H5 c f& N$ x+ n
return 1;" S" @# O+ X' m0 B- Z# L
else 9 O7 @0 G' |$ O, T( ~0 i) z' U
{2 \$ r& O" T( Y# ^" s+ u7 }
if(k==1)' V: v# F/ D- B4 N$ u/ ~& o
return 1;
7 s& S0 o2 Z) |4 R! } else
: A- m# S2 d6 {! T/ n* E) a1 t {
$ }% [) N8 i/ x int i=0,i1=1,i2=1,w=0;# E8 S% |1 D- V1 N
for(;i<k-1;i++)
3 K! y* z/ Y6 S" u1 l8 S {
; A' c }5 f. Q1 c% n0 ~ w=i1+i2;
3 T# o2 Y* P' V. N- h: Y i1=i2;
! j9 c8 Q5 u8 G( N7 ] i2=w;/ [/ E7 b+ s3 Y+ G
}
( B. [: M! |3 C' [( B7 A. y return w;1 G. v! k4 D9 B) \4 ~
}
: r5 D- F- ~, U! p}
# K0 J5 a( I. Z- c1 T1 n+ e* r} 0 }1 k" l- e& P3 z6 Y
int r(double w,double a,double b)- `1 n' p7 G; G7 r2 d
{
! l: R' i& `5 t- I6 t5 i4 W int i=0;
) k8 i( R7 `4 E2 |3 ^ for(;fi(i)<=(b-a)/w;i++): _, q4 }$ Q" Y1 e+ X9 z, u
{}9 i/ }+ e% J) G2 P
return i;
, a q! V/ b W1 q- `) _1 v5 v}& U6 j' _5 }7 Z8 x
void main()
4 M( o) U4 s# y$ W4 q1 E& M{& Q6 K0 s% Q2 Q7 {6 n
cout<<"输入函数的最高次幂";
# j3 j ~+ A9 P# K4 I7 Y int n;
* L3 I/ ?2 m' I: N$ U2 J! Z$ W cin>>n;
4 l) J f& F9 [4 w double *p=new double[n+1];; C3 H( c% h8 n/ \% N4 Y+ L7 y
double a,b,g=0,j=0,c=0;4 e2 U. u: C4 G# a4 x
cout<<"依升降幂输入x项的系数"<<endl;5 O9 s$ k+ @6 e% f% U" u5 H
for(int i=0;i<n+1;i++): I$ ]) Y0 j/ c* R( g8 T' N
cin>>*(p+i);
6 O# z0 @% Z, G" z& Z" L6 _' o0 ~ cout<<"输入误差值"<<endl;( V" G6 j, R f9 i
double w;& G7 X1 Z7 H5 O- i
cin>>w;5 T7 Q" q n. N4 l- a
cout<<"输入初始区间"<<endl;
6 }/ E$ Z5 z; [ cin>>a>>b;
8 l* C( w: i- P& ?, @, s7 s: E& i8 O cout<<"输入辨别常数"<<endl;8 X- X/ h8 I ^4 G4 t7 J
cin>>c;+ W! V: i4 w& _/ Y v
n=r(w,a,b);
8 S l1 j/ {0 k i=0;% K# b+ r+ T y' m
cout<<fi(n-i-2)<<endl;
- o2 K6 h! O( [( _# [ cout<<a<<" "<<b;
X F% h+ z. n' ~ g=a+fi(n-2-i)*(b-a)/fi(n-i);
6 C) ~6 k1 v; X- P4 B j=a+fi(n-1-i)*(b-a)/fi(n-i);* b' \( p* T ]5 D7 E' n" O
cout<<g<<" "<<j; d5 N" f) D# c. A
for(i=1;i<n-1;i++)/ v7 K: r S6 }! a' N% p v
{3 f* E& R# ]4 ~1 l, o c
: U/ N+ E. N5 E: l4 L+ n$ Q. p
2 F5 Z, j4 X/ \2 {4 i if(fx(n,p,g)>fx(n,p,j))6 j7 ~4 {! I+ u- \' K" k: y
{# J, l3 s. f/ b6 p# r( j) d
a=g;
( m# F2 e; ^* [ g=j;, K9 m7 r7 d3 O( m
j=a+fi(n-1-i)*(b-a)/fi(n-i);" j5 }7 _6 w6 e2 n; k* X4 m
}
9 D+ r/ q6 o. R7 ^% s else
; A5 _8 @, u+ e9 c6 } {
9 |* o8 s: \% F b=j;
# n" y1 H2 p3 N" A- f j=g;
+ }4 [) w. v# y g=a+fi(n-2-i)*(b-a)/fi(n-i);
e& i6 ^: `, h3 Z }8 l8 I9 F9 Y+ g9 Y% G
# S: n2 s5 b! a: o+ ^+ n# ] }
$ V c" k c" Z( f* P- A9 ]$ C, y j=g+c;
) I1 s. O! H3 ~. F8 @ if(fx(n,p,g)>fx(n,p,j))) H: e# r6 q' Q5 X
a=g;* Q5 f( m( n& c' R+ W4 f/ o1 M
else b=g;
4 i) {7 @9 R2 K) J ^) y$ |4 i cout<<"函数值在 ("<<g<<","<<j<<")之间;";
/ y1 T; Y# y) W+ @ $ n0 f0 {) S: N: w# z$ N% m2 Y
}
7 ?1 S3 K7 k/ R! i3 s) D2 ^( x |