欢迎来到天天文库
浏览记录
ID:60977446
大小:1.50 MB
页数:4页
时间:2021-01-16
《实验一 方程求根.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、山西大学计算机与信息技术学院实验报告姓名学号专业班级2011级计算机科学与技术课程名称计算方法实验日期2013-10-22成绩指导教师批改日期实验名称实验一方程求根一、实验目的: 用不同方法求任意实函数方程在自变量区间[a,b]内或某一点附近的实根。并比较方法的优劣。二、实验方法: (1)二分法:对方程在[a,b]内求根。将所给区间二分,在分点x=处判断是否。若是,则有根x=。否则继续判断是否。若是,则令b=x=,否则令b=x,否则令a=x。重复此过程直至求出方程在[a,b]中的近似根为止。(2)迭代法:
2、将方程等价变换为形式,并建立相应的迭代公。(3)牛顿法:若已知方程的一个近似根,则函数在点在点附近可用一阶泰勒多项式来近似,因此方程可近似表示为。设,则,取作为原方程新的近似根,然后将作为代入上式。迭代公式为:。三、实验内容:(1)在区间[0,1]内用二分法求方程的近似根,要求误差不超过0.5X。(2)取初值,用迭代公式求方程的近似根,要求误差不超过0.5X。(3)取初值,用牛顿迭代法求方程的近似根,要求误差不超过0.5X。四、实验程序:(1)二分法#include#include3、.h>//#defineM0.0001#defineE2.7183//二分法doublebinary_calculate(doublex01){doubleresult1;returnresult1=exp(x01)+10*x01-2;}intmain(){//*****************************二分法***************************************printf("二分法计算实验!");floatx;floathigh=1;floatlow=0;4、intnum=100;doubleresult_high,result_low,result_binary;doublea=0.0005;result_high=binary_calculate(high);result_low=binary_calculate(low);if(result_high*result_low>0){printf("输入信息错误!停止运算!");return0;}while(num>0&&high-low>a){x=(high+low)/2;result_binary=binar5、y_calculate(x);if(result_binary==0)printf("方程的解为:%f",x);elseif(result_binary*result_high<0){low=x;result_low=result_binary;}elseif(result_binary*result_low<0){high=x;result_high=result_binary;}else{printf("运算出现未知错误!停止!");}num--;}printf("二分法方程的解为:%f",x);6、return0;}(2)迭代法#include#include//迭代法doubleiteration_mathoid(doublex){doubleresult;returnresult=(2-exp(x))/10;}intmain(){//*******************************迭代法********************************************printf("迭代法计算实验!");floatx=0;double7、a=0.0005;doublex1,x2;x1=iteration_mathoid(x);while(fabs(x2-x1)>a)//当误差大于a2循环。{x1=x2;x2=iteration_mathoid(x1);}printf("迭代法的解:x=%f",x2);return0;//********************************************************************************}(3)牛顿法#include#incl8、ude//牛顿迭代法doubleneuton1(doublex){returnexp(x)+10*x-2;}doubleneuton2(doublex){returnexp(x)+10;}intmain(){//***********************牛顿法************************************printf("牛顿迭代法计算实验!"
3、.h>//#defineM0.0001#defineE2.7183//二分法doublebinary_calculate(doublex01){doubleresult1;returnresult1=exp(x01)+10*x01-2;}intmain(){//*****************************二分法***************************************printf("二分法计算实验!");floatx;floathigh=1;floatlow=0;
4、intnum=100;doubleresult_high,result_low,result_binary;doublea=0.0005;result_high=binary_calculate(high);result_low=binary_calculate(low);if(result_high*result_low>0){printf("输入信息错误!停止运算!");return0;}while(num>0&&high-low>a){x=(high+low)/2;result_binary=binar
5、y_calculate(x);if(result_binary==0)printf("方程的解为:%f",x);elseif(result_binary*result_high<0){low=x;result_low=result_binary;}elseif(result_binary*result_low<0){high=x;result_high=result_binary;}else{printf("运算出现未知错误!停止!");}num--;}printf("二分法方程的解为:%f",x);
6、return0;}(2)迭代法#include#include//迭代法doubleiteration_mathoid(doublex){doubleresult;returnresult=(2-exp(x))/10;}intmain(){//*******************************迭代法********************************************printf("迭代法计算实验!");floatx=0;double
7、a=0.0005;doublex1,x2;x1=iteration_mathoid(x);while(fabs(x2-x1)>a)//当误差大于a2循环。{x1=x2;x2=iteration_mathoid(x1);}printf("迭代法的解:x=%f",x2);return0;//********************************************************************************}(3)牛顿法#include#incl
8、ude//牛顿迭代法doubleneuton1(doublex){returnexp(x)+10*x-2;}doubleneuton2(doublex){returnexp(x)+10;}intmain(){//***********************牛顿法************************************printf("牛顿迭代法计算实验!"
此文档下载收益归作者所有