C语言二分法计算非线性方程的解
Posted Z.Q.Feng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言二分法计算非线性方程的解相关的知识,希望对你有一定的参考价值。
输入
输入为给定的 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
。
代码
#include <iostream>
using 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;
以上是关于C语言二分法计算非线性方程的解的主要内容,如果未能解决你的问题,请参考以下文章