|
#include<iostream.h>
4 M* L+ A5 }. f# C* o% G. s#include<math.h>, u3 k, w6 }0 |6 q
double fx(int n,double p[],double x)9 m# ]/ h& j4 g+ a
{7 x; [; j( h1 v: f1 X0 i$ y7 E
double z=0,y=1;
3 r3 K. M4 l- I int i=0,j=0;
. ^; R" [$ z0 D! \, R: g5 x4 A for(;i<n+1;i++)5 F( e4 ^' N$ M9 w3 j$ T. `' O
{
- T( g% |/ ], v: f C2 c' d0 }) K+ Q for(;j<i;j++)2 d' e/ |6 z8 x- A' `
y*=x;3 t2 R3 J; P* n* ^/ ~, H7 [ F* p
z+=*(p+i)*y;
3 C/ L5 d" C5 X6 x0 o. H+ k5 n; D }
& @4 K1 [) s7 k- {: V, L return z;
# L6 o7 M n4 ~6 z} 7 e6 W% _( p6 P8 t% L+ ^
int fi(int k). b- |% v0 L" ^# O$ s
{* v# _- j# z' [0 `$ ?7 f/ o
if(k==0)1 m# D: H; O5 C, \
return 1;6 i0 O8 F/ d6 x6 S3 }! g
else 7 B6 O, C; W% B3 Y) `
{
) B$ ?- G5 m# h- o( w' f if(k==1)
+ h8 V/ Y, m9 b+ l return 1;
/ X u9 d1 f- _8 {* `# j else
. H: `( a8 C. M5 ? Y {
! q G+ f) r# N# O int i=0,i1=1,i2=1,w=0;
- A& O0 D. H: |9 R& Y9 T+ l for(;i<k-1;i++)
/ U1 S3 l" c8 G+ p6 w {* t. T4 G2 ^& D8 ^" |6 ?3 z
w=i1+i2;9 c" b) q9 }/ [8 `! s9 r M5 X
i1=i2;
/ U v4 [! }' a i2=w;
" N6 J# }# C4 p2 y5 N }
1 L7 n6 p: [6 n% h' ^6 H$ P- S1 G return w;
" k: t0 I E: ]0 I% @! {6 z }
) P2 o& V2 P9 j& H2 T. m: x) g}
7 a8 F; ^+ K4 a$ Q} 4 l) \" R; u5 L' x5 k. [
int r(double w,double a,double b)
% ~& l8 w7 {, z8 Q. F{% i. {. z6 c, r% q
int i=0;
+ @, [! L/ G7 {0 g8 U, v W7 B3 U for(;fi(i)<=(b-a)/w;i++)
8 G0 ~3 R x* q/ n' Z {}
2 B5 P9 A1 K8 y" Q3 I v2 v a return i;
X" ?: N! F3 o, G a" F$ b- g}
; _; R, \7 D6 D) i) Y& I; Nvoid main()6 t* h4 ^4 R& Q" z+ Z
{
& T4 `9 R v; b+ u( L5 ^ cout<<"输入函数的最高次幂";
9 l2 k a8 ^6 n* [+ R int n;
/ F7 d5 v, j+ k, Z$ W% m cin>>n;
7 @/ u. K, g" v% i double *p=new double[n+1];) ^1 N' q( Z/ E' T$ C
double a,b,g=0,j=0,c=0;2 [/ S' x$ R; Y" t
cout<<"依升降幂输入x项的系数"<<endl;4 K7 ?; f4 ?" A$ e q# n5 Z
for(int i=0;i<n+1;i++). F: @. n/ n# c5 T9 z
cin>>*(p+i);
( L' U3 C9 H- r" g8 h cout<<"输入误差值"<<endl;' l# @' P/ h. K7 w K/ ~
double w;
% K: a1 W/ {7 q L cin>>w;
$ n- z/ O0 T( p# c3 {$ Z% c$ X$ u cout<<"输入初始区间"<<endl;
# l$ g5 |' ]8 J% m j+ V0 P cin>>a>>b;
6 G9 ~9 q- a. O; o- [ cout<<"输入辨别常数"<<endl;7 k; ]! ^, z* M5 |
cin>>c;2 q' a( l/ P5 S4 E7 _' ~
n=r(w,a,b);
( i. d8 k3 N2 c6 F0 J* L i=0;
$ ?- Y. P/ t) B) u& Y, o4 E( j cout<<fi(n-i-2)<<endl;2 ^ s- D: m5 e5 V( _# D+ h }' K
cout<<a<<" "<<b;
+ Z7 Z/ E; J# x' x) ? E4 f4 { g=a+fi(n-2-i)*(b-a)/fi(n-i);
9 Q- X3 S2 ^/ k) V! \ j=a+fi(n-1-i)*(b-a)/fi(n-i);# b: m$ P/ d% e
cout<<g<<" "<<j;
8 S8 [/ z9 z0 ]- {9 O* E for(i=1;i<n-1;i++)
" E. v- z+ ^( n1 C# b. _. ] {
+ I+ {4 V \$ M; H7 A ( M, g, O" f" ?( ~
4 [( H v, }, m& L
if(fx(n,p,g)>fx(n,p,j)): Q* W! o8 _" `) d8 j2 r5 D
{
1 Y# {7 \0 l5 e4 o- ^% ^) s a=g;3 p7 R: D0 J& r$ j* J; t( u
g=j;' S3 b$ F. W W, G7 O9 ?
j=a+fi(n-1-i)*(b-a)/fi(n-i);1 I0 v$ S+ Y9 u' M
} z) m5 e7 z1 [$ ?
else + k9 q; h4 U; [9 P& @
{
! L/ |: [- b! z b=j;4 v: D- X) t" n
j=g;6 V5 s% k" y, p3 J+ v
g=a+fi(n-2-i)*(b-a)/fi(n-i);3 X6 C$ y1 {, j3 k
}& M# `) F+ i# ]4 B4 k
- J% B# Y9 ?0 d3 r! y/ C4 j
}: m3 j- j3 P. l& B0 U7 N1 m
j=g+c;
3 T3 I4 A: z! Q' q6 I& I" Q; y if(fx(n,p,g)>fx(n,p,j)) d* T5 o- k. I5 F( n
a=g;( A! Z6 L6 H: C$ }' a+ h
else b=g;6 u* h8 w" m* {0 _
cout<<"函数值在 ("<<g<<","<<j<<")之间;";# R* d+ k3 F" s6 i3 N# b5 B- o" ^
5 H- n& Q8 l( t, O: T, Q}, C# p \5 r1 h+ A% M( R$ l* w
|