- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 求解方程的实根
实验名称:求解方程的实根
实验目的:1.利用对分区间法、迭代法、牛顿法、弦位法的思想实现计算机编程解决方程的求根问题。
2.通过计算机语言实现对分区间法、迭代法、牛顿法、弦位法的算法进行编程,加深对这些方法的理解、应用。
3.提高利用计算机解决问题的能力。
指导教师: 实验时间:2010年3月24日
姓名: 学号:
【算法分析】
一 对分区间法
1输入方程实根所在的初始区间(a,b).
2求出f(a),f(b).若f(a)*f(b)=0,则继续进行操作运算,否则退出运行。
3对区间(a,b)进行半分,即取c=(a+b)/2,计算f(c),若f(c)*f(a)0,则b=c,即将(a,b)区间半分到(a,(a+b)/2),否则a=c,即区间半分到((a+b)/2,b)上。
4重复3,将每一次f((a+b)/2)与上一次的结果进行比较求得两者之差,如果误差在给定的四位有效数字之内,就停止运行,输出运行得到每一步的根和误差。
否则继续执行3、4步骤.
二 迭代法
1申请一个数组x[ ],输入迭代的初始值x[0].
2通过判断函数收敛的条件笔算除了关于原方程的等价方程x=g(x)的表达式,然后由x[0]
和迭代方程x[i] = ((3.0*(x[i-1])+1.0)^(1/3)逐步得到x[i]的根,然后由根之间的误差与提供的允许的误差判断终止的条件。
3输出每一步得到的根和每两步之间的误差值。
三 牛顿法
1 输入初始值x[0]
2 通过书上例题的方程的导数和方程的关系得到计算公式x[i]=x[i-1]-f(x[i-1])/ds(f(x[i-1])),其中i从1开始。
3 由x[i]-x[i-1]与提供允许的误差进行比较,即可得到终止程序的条件。
4 输出每一个计算步骤的根的值和每两步之间的误差值。
四 弦位法
1 由例题提供的区间进行弦位法求根。其中令x[1]=1,x[2]=3.
2 由公式x[i]=x[i-1]-(f(x[i-1])/(f(x[i-1]-f(x[i-2]))))*(x[i-1]-x[i-2])求得x[i],其中的i从3开始。
3 由f(x[i])-f(x[i-1])的差值即两数之间的误差与容许的误差进行比较,当两次的迭代值在允许的范围内,则结束运行。
4输出每一个计算步骤的根的值和每两步之间的误差值。
【源代码】
#includeiostream
using namespace std;
#include iomanip
#includecmath
#define f(x) ((x)*(x)*(x)-3*(x)-1)
#define max 10000
#define err 0.0001
#define d(x) 3*(x)*(x)-3
#define f1(x) (3*(x)*(x)+4*(x)+10)//函数f的导数
void tishi()
{ cout*****************************************************endl;
cout请选择操作endl;
cout 1.对分区间法,2.迭代法,3.牛顿法,4.弦位法,5.退出endl;
cout*****************************************************endl;
}
double duifen()
{
int i;
coutsetiosflags(ios::fixed);
coutsetprecision(6);
double m=0.0;
double x[max];
cout请输入x=2.0附近的一个区间作为求根区间endl;
cinx[0]x[1];
double a,b;
a=x[0];
b=x[1];
if(f(x[0])*f(x[1])0)
{
for(i=1;imax;i++)
{
if(i=9)
{
cout第i 步:;
}
else
cout第i步:;
cout在区间(x[0],x[1])的中点为 x = ;
m=(x[0]+x[1])/2;
coutm;
if(f(m)*f(x[0])0)
x[1]=m;
else
x[0]=m;
cout,误差值为:(fabs((a-b)/(pow(2.0,i+1))));
coutendl;
if(fabs(f(x[1])-f(x[0]))err)
{
coutsetiosflags(
您可能关注的文档
最近下载
- 模块二 装配式楼地面.ppt VIP
- 2021年春中国医科大学《病理学(本科)》在线作业-参考资料.doc VIP
- 2023新修订《事业单位工作人员处分规定》全文解读PPT.pptx VIP
- 2025年多重耐药菌医院感染预防与控制中国专家共识.docx VIP
- 光伏施工劳务承包合同-单施工(个人学习参考模版).pdf VIP
- 2025四川成都交子金融控股集团有限公司招聘集团本部及子公司岗位33人备考题库附答案.docx VIP
- 热处理-钢的热处理工艺.ppt VIP
- 私募基金专业投资者资格申请双录话术流程模版.docx VIP
- 【人教版数学九年级下册】全册习题含答案.pdf VIP
- 供销合作社再生资源回收利用建设项目可行性研究报告_.doc VIP
原创力文档


文档评论(0)