方程近似求解C++

来源:互联网 发布:squid正则匹配域名 编辑:程序博客网 时间:2024/04/29 05:07
 

   看数学书看到的.居然还是某年的软考程序员下午题.很轻松地写出来了,挺有意思.

//solveEquation.cpp -- 2011-07-19-01.05#include <iostream>#include <cmath>double absoluteValue (const double valA, const double valB) ;double equation (const double x) ;double solveEquation (double (* pEquation) (const double x), const double leftEndian, const double rightEndian, const double precision) ;double absoluteValue (const double vlaA, const double valB) ;int main (void){double leftEndian = 2.0, rightEndian = 3.0 ;double precision = 0.01 ;std ::cout << "Result is : " << solveEquation(equation, leftEndian, rightEndian, precision) << std ::endl ;return 0 ;}double absoluteValue (const double valA, const double valB){if (valA > valB)return valA - valB ;elsereturn valB - valA ;}double equation (const double x){return 3 - log10(x) ;}double solveEquation (double (* pEquation) (const double x), const double leftEndian, const double rightEndian, const double precision){double a = leftEndian, b = rightEndian ;double bisection ;do{bisection = (a + b) / 2 ;double tempValue = (* pEquation)(bisection) ;if ((* pEquation)(a) * tempValue < 0)b = bisection ;else if ((* pEquation)(b) * tempValue < 0)a = bisection ;elsebreak ;}while (absoluteValue(a, b) >= precision);return bisection ;}