C++中的二分法
Bisection method in C++
我正在尝试用C++创建一个程序,该程序将对三次函数使用平分方法来查找该三次函数的根。现在我有了这个:
#include <iostream>
#include <cmath>
using namespace std;
int functie(double a,double b,double c,double d,double x){
double y;
y = (a*x*x*x + b*x*x + c*x + d);
return y;
}
int main(){
int a,b,c,d;//no comment
cout << "enter of form: ax^3 + bx^2 + cx + d (integers)" << endl << "a: ";
cin >> a;
cout << endl << "b: ";
cin >> b;
cout << endl << "c: ";
cin >> c;
cout << endl << "d: ";
cin >> d;
double min, max, temp;
min = -100;
max = 108.54267542;
while(functie(a,b,c,d,max) == 0 ||functie(a,b,c,d,min) == 0 ){
temp = (max + min)/2;
if(functie(a,b,c,d,min) < 0 && functie(a,b,c,d,temp) < 0 || functie(a,b,c,d,min) > 0 && functie(a,b,c,d,temp) > 0){
min = temp;
} else {max = temp;}
}
cout << min << endl;
cout << max << endl;
cout << temp << endl;
system("pause");
return 0;
}
但它不起作用;程序末尾的cout只输出输入值。(如果你想知道为什么我的最大值如此奇怪,是为了防止当最大值为+100,根值为0时,程序会崩溃…)
所以,如果你有时间,想检查一下,谢谢。
当然是错的。在线:
while(functie(a,b,c,d,max) == 0 ||functie(a,b,c,d,min) == 0 )
只有当functie
返回的值为零时,才会执行循环。CCD_ 2和CCD_。
您已经这样声明functie
:
int functie(double a,double b,double c,double d,double x)
您正在从functie
返回(并且应该返回)double
值,但由于定义的原因,它被强制转换为int
。
对您的程序的几点评论:
您应该在functie
函数中返回double:
double functie(double a,double b,double c,double d,double x){
return (a*x*x*x + b*x*x + c*x + d);
}
正如FlopCode所指出的,该检查不正确:
while(functie(a,b,c,d,max) == 0 ||functie(a,b,c,d,min) == 0 )
你需要检查它们是否都不在根点,而不是两者中的任何一个都在。然而,我会进一步修改它,因为与替身相比有一个小的特定值。
double epsilon = 1e-10;
while(fabs(functie(a,b,c,d,max)) > epsilon
&& fabs(functie(a,b,c,d,min)) > epsilon){
请注意,我与一个非常小的,仍然不是零的常数进行比较。Doubles永远不会等于零(我得到绝对值,因为我们需要检查两边是否足够接近零。
相关文章:
- 使用不变量来确定二分搜索中的边界条件
- 基于函数而不是集合的二分搜索或迭代器?
- UVA 10077 - 为什么是二分搜索?
- 简单的二分搜索对我不起作用。我正在尝试从文本文件中搜索单词
- 我在 c++ 中的二分法
- 使用二分法查找数的平方根时出现问题
- 递归除法和二分搜索中的错误
- 用于二分搜索的错误简单功能(C++)
- 二分法程序的错误答案(C++)
- 按字母顺序对数组进行二分搜索和排序 C++.
- 我应该用什么来实现c++中的加权二分匹配算法
- 是否可以使用 lower_bound() 对结构的普通数组进行二分搜索
- 函数作为函数的参数,使用二分法C++
- 计算二分图中的路径数(长度 n)
- 编写代码以在 C++ 中使用二分法查找平方根
- 如何从 9 和 90 中提取 2.9 和 2.09,即获取数字等于最大编号的小数部分.二分位数之后的数字
- C++中的二分法
- 对带/不带提升的函数参数进行二分搜索
- 在 c++ 中对向量<结构 S> 进行二分搜索?
- 检查图是否为二分图