输入输出代码
输入
输入为给定的 x 的范围以及要求精度,例如求解非线性方程 x 3 − x − 1 = 0 x^3 - x - 1 = 0 x3−x−1=0 在 [ 1 , 2 ] [1, 2] [1,2] 区间内的解,其中精度取 1 0 − 5 10^{-5} 10−5。
注:这里初始给的区间范围不能太宽,并且应当保证方程的根就在区间内。
输出
方程在给定精度下的近似解 1.32472。
代码
#includeusing namespace std; double function(double x){ return x * x * x - x - 1.0; } bool judge(double x, double exp){ if (function(x) <= exp && function(x) >= -1 * exp) return true; else return false; } double solve(double x, double y, double exp){ double k; k = (x + y) / 2.0; if (judge(k, exp)){ return k; } else{ if (function(k) > 0){ if (function(x) > 0) solve(k, y, exp); else solve(x, k, exp); } else{ if (function(x) > 0) solve(x, k, exp); else solve(k, y, exp); } } } int main(int argc, char const *argv[]) { double x, y, exp = 0.00001, r; cin >> x >> y; r = solve(x, y, exp); cout << r << endl; return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)