问一个非C++的问题,是数值分析的,有人解答吗?用二分法求方程x^2-x-1=0的正根,要求误差小于0.05。

yiezi0919 2007-06-24 02:03:57
问一个非C++的问题,是数值分析的,有人解答吗?用二分法求方程x^2-x-1=0的正根,要求误差小于0.05。
...全文
1525 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜雨_倚琴 2007-06-26
  • 打赏
  • 举报
回复
前几天一大一学弟问过我,很简单的说
activateMan 2007-06-26
  • 打赏
  • 举报
回复
以上给出的是用二分法求解。还有一个收敛根快的方法是牛顿迭代。求解这个数值问题还有别的方法,就不多说了。
yiezi0919 2007-06-25
  • 打赏
  • 举报
回复
F1为正解??
石雕 2007-06-25
  • 打赏
  • 举报
回复
F1 为正解, 你看了吗?
yiezi0919 2007-06-24
  • 打赏
  • 举报
回复
能得出正确结果吗?


非常感谢!
laiwusheng 2007-06-24
  • 打赏
  • 举报
回复
namespace solve
{
//////////////////////////////////////////////////////////////////////////
/// 二分法
double EPS_Bisection =5e-6; //根容许的误差
double DELTA_Bisection =1e-6; //|f(x)|容许的误差
float Bisection( float a,float b,float (*f)(float) )
{
float c,fc,fa=f(a),fb=f(b);
int n=1;
cout<<"二分次数\tc\tf(c)\n";
while(1)
{
if( fa*fb>0 )
return 0;
c =(a+b)/2,fc =f(c);
if( fabs(fc) < DELTA_Bisection )
break;
else if (fa*fc<0)
{
b=c;
fb=fc;
}
else
{
a=c;
fa=fc;
}
if( b-a< EPS_Bisection )
break;
cout<<'\t'<<n++<<'\t'<<c<<'\t'<<fc<<endl;
}
return c;
}

float f_Bisection(float x)
{
return x^2-x-1; //求解的方程
}
摘要:牛顿迭代法是《数值分析》这门课程中一个重要的计算方法和思想。这次的课程设计是通过在学习中所学习到的牛顿迭代的方法的思想计算方程方程 x3+x2-3x-3=0 在1.5附近根。并通过VISUALC++编译程序计算出方程的根。并通过这次的课程设计对所学习的知识进行进一步的总结和完善从而对原有的知识进行深化和巩固。牛顿迭代法的主要功能:计算方程时可以比较快速方便的计算出来结果但并不影响计算出来结果的精确度,运用于多种工业设计和数学设计方面。 关键词: 牛顿 迭代 方程 根 Abstract: The Newton iteration method is "Numerical analysis" in this curriculum an important computational method and the thought.The method thought computation equation in the study which this time curriculum design is through studies Newton who iterates: Asks equation x3+x2-3x-3=0 in 1.5 neighbor roots.And calculates the equation through the VISUALC++ compiler the root.Thus and designs through this time curriculum to the knowledge which studies carries on the further summary and the consummation carries on the deepening to the original knowledge and consolidated.Newton iteration method main function: When computation equation but may the quite fast convenience computation finally not affect calculates the result the precision, utilizes in many kinds of industrial design and mathematics design aspect. Key words: Newton iterates the equation root 1 牛顿迭代法的简介 1.1 牛顿迭代法的概述 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似方程的方法。多数方程不存在根公式,因此精确根常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。 设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0) f'(x0)(x-x0),出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并该切线与x轴的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式。 解线性方程f(x)=0的牛顿法是把线性方程线性化的一种近似方法。把f(x)在x0点附近展开成泰勒级数 f(x) = f(x0)+(x-x0)f'(x0)+(x-x0)^2*f''(x0)/2! +… 取其线性部分,作为线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f'(x0)(x-x0)=f(x)=0 设f'(x0)≠0则其解为x1=x0-f(x0)/f'(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)-f(x(n))/f'(x(n))。 1.2 牛顿迭代法的优点 迭代法是方程近似根的一个重要方法,也是计算方法中的一种基本方法,它的算法简单,是用于方程方程组近似根的一种常用的算法设计方法。 牛顿迭代法是方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来方程的重

65,199

社区成员

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

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