// 根号2的近似值.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
/*
解题:
1、f(x) = x平方,在[1,2]范围内,fx是递增函数,这就给二分创造了条件
(根号二是无理数,只能采用近似值)
2、浮点型left和right为1和2,根据left和right的重点mid除f(x)的值与2的大小来选择子区间进行逼近
*/
learn && wrong:
1、科学计算法的写法1e+xx
2、二分法与for,与函数嵌套多的是
#include <iostream>
const double eps = 1e-5; //精度为10的-5次方(!!!)
double f(double x) { //计算f(x)
return x * x;
}
double calsqrt() {
double left = 1, right = 2, mid; //[left,right] = [1,2]
while (right - left > eps) {
mid = (right - left) / 2;
if (f(mid) > 2) {
right = mid;
}
else if(f(mid) < 2) {
left = mid;
}
}
return mid;
}
网友评论