a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 99|回复: 0

[C语言] 2011年计算机等级考试二级C辅导实例编程(9)

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
 二分法求方程近似解  二分法求方程近似解:求方程f(x) = x^3 + x^2 - 1 = 0在[0,1]上的近似解,精确度为0.01。' u. O9 q8 M* p  s0 d6 e" ^
  算法分析:二分法求方程近似解的基本思想是将方程的有解区间平分为两个小区间,然后判断解在哪个小区间;继续把有解的区间一分为二进行判断,如此周而复始,直到求出满足精确要求的近似解。
6 m( ]* h8 V' X3 y$ D  二分法求方程近似解的算法步骤:
0 k! n: I5 a; }& O0 g  ⑴确定区间[a,b],验证f(a).f(b) < 0,给定精确度e3 q$ I! |) A5 @, `  B
  ⑵求区间(a, b)的中点mid
2 g+ W4 _9 M1 f/ J9 @3 \  ⑶计算f(mid)
: R$ r7 ~( q9 j/ \" \# @6 F  若f(mid) = 0,则mid就是函数的零点
2 w  l. V2 e5 v  若f(a).f(mid) < 0,则令b = mid(此时零点a < x0 < mid)
  k3 h4 b3 L4 N' g  若f(mid).f(b) < 0,则令a = mid(此时零点mid < x0 < b)
$ u( p" u  A4 H8 `3 _& m) E2 g2 m  ⑷判断是否达到精确度e:即若|a-b| < e,则得到零点近似值a(或b);否则重复⑵-⑷。# u% o: g' s  q6 S, y, V+ G! }
  代码如下:
4 q% w5 f( E# \- |: \7 T: x- O1 a/ }: q  double F(double a, double b, double c, double d, double x)//函数表达式0 E( M( {2 j4 Y2 y( [
  {
) t& d" l+ c' Q. W5 B' {, r3 t8 [  return (((a * x + b) * x) * x + d) / c;
, G1 K9 t% A  q5 i7 ]! _! |  }
' W1 Q/ [/ U0 V4 j& N  double Function(double a, double b, double c, double d, double low, double high, double e)
# s5 q2 E3 c3 V# ~: n# s4 y  {
/ C7 f! M% U9 S  double mid = (low + high) / 2;
" _# k5 m8 G4 y4 F. v) ]3 A  if (F(a, b, c, d, mid) == 0)
& g1 C4 O' d- `5 W  return mid;. L" k9 `9 ~4 i
  while ((high-low) >= e)
/ U: D' ]4 w6 [) _  {" [6 U* B2 j# s5 X6 K; W8 c
  mid = (low + high) / 2;+ T6 n3 |+ D' J* T9 H* z, _, q
  if (F(a, b, c, d, mid) == 0)7 V- |9 J% g+ ~. M$ ?  ]
  return mid;
" u- T6 V) Z  m0 T  if (F(a, b, c, d, low)*F(a, b, c, d, mid) < 0)2 H: n/ p/ `2 Z, t0 ^
  high = mid;  x, B' d1 T; C$ }) [0 P' {
  else
) w" S3 j2 S! h  l9 j  low = mid;
( G. E% t- v. {8 A5 ?9 ]- q  }, r( o: }5 |/ K' \
  return low;
* \# K! A" T) n. y/ F2 j7 `  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 05:52 , Processed in 0.452151 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表