有大神来看看吗?我是想用二分法同时得到两个解,但是到最后我都不知道自己编的啥了,但是能得到正确答案!

AAugust 2017-02-28 10:01:23
#include<iostream>
using namespace std;
double fx(double x)
{
return x*x - x - 2;
}
const double esp = 1.e-5;
double L, R, M, a;
double fL, fM;
double root(double);
int main()
{
cout << "单调区间左端点L="; cin >> L;
cout << "单调区间右端点R="; cin >> R;
cout << "请输入求解步长:";
cin >> a;
while (1)
{
if (fx(L)*fx(L + a) > 0)
L = L + a;
else
{
L = L - a;
cout << "①解为:" << root(L)<<endl; break;
}
if (L > R)
{
cout << "非有解区间!";
break;
}
}
L = L + 3*a;
while (1)
{
if (fx(L)*fx(L + a) > 0)
L = L + a;
else
{
L = L - a;
cout << "②解为:" << root(L)<<endl; break;
}
if (L > R)
{
cout << "非有解区间!";
break;
}
}

system("pause");
return 0;
}
double root(double L)
{
while (fabs(R - L) > esp)
{
M = (2 * L + a) / 2;
fL = fx(L);
fM = fx(M);
if (fL*fM < 0)R = M;
else if (fL*fM>0)L = M;
else break;
}
return M;
}
...全文
95 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2017-03-01
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧