实验目的

(1)通过对二分法与牛顿迭代法做编程练习和上机运算,进一步体会二分法和牛顿法的不同。
(2)编写割线迭代法的程序,求非线性方程的解,并于牛顿迭代法作比较。

实验内容

1、用牛顿迭代法求下列方程的根
(1) x^2-e^x=0
(2) 〖xe〗^x-1=0
(3) lgx+x-2=0
2、编写割线法程序求解第一问的方程

/* 牛顿迭代法的代码实现* 数值分析* 计科 1604 王宇晨 10430416414*/#include<iostream>
#include<string>
#include<cmath>
using namespace std;const double e = 2.718281818284;
const double eps = 1e-6;//求导数 X = x - f(x)/f'(x)
double f1(double x){double a = pow(e,x);return x-(x*x-a)/(2*x-a);
}
double f2(double x){double a = pow(e,x);return x-(x*a-1)/(a*x+a);
}
double f3(double x){double a = x*log(10);return x-(log10(x) + x - 2)/( 1/a + 1);
}
void NewtonIterationMethod1(double x,double d){double a = x;double b = f1(a);int k=0; //记录循环的次数while(((a-b)>d) || ((a-b)<-1*d)){//cout<< a <<endl;a = b;b = f1(a);k ++;if(k>100){cout<<"迭代失败!(函数不收敛)"<<endl;return ;}}cout<< b <<endl;return;
}
void NewtonIterationMethod2(double x,double d){double a = x;double b = f2(a);int k=0; //记录循环的次数while(((a-b)>d) || ((a-b)<-1*d)){//cout<< a <<endl;a = b;b = f2(a);k ++;if(k>100){cout<<"迭代失败!(函数不收敛)"<<endl;return ;}}cout<< b <<endl;return;
}
void NewtonIterationMethod3(double x,double d){double a = x;double b = f3(a);int k=0; //记录循环的次数while(((a-b)>d) || ((a-b)<-1*d)){//cout<< a <<endl;a = b;b = f3(a);k ++;if(k>100){cout<<"迭代失败!(函数不收敛)"<<endl;return ;}}cout<< b <<endl;return;
}
//二分法
double check1(double x){double a = pow(e,x);return x*x-a;
}
double check2(double x){double a = pow(e,x);return a*x - 1;
}
double check3(double x){return log10(x) + x - 2;
}
void BinarySearch1(double d){double st = -1000,ed = 1000;double mid = 0.0f;while(ed - st > d){mid = st + (ed - st)/2;if(check1(mid) > 0){st = mid;}else if(check1(mid) < 0){ed = mid;}}cout<< mid <<endl;
}
void BinarySearch2(double d){double st = -1000,ed = 1000;double mid = 0.0f;while(ed - st > d){mid = st + (ed - st)/2;if(check2(mid) < 0){st = mid;}else if(check2(mid) > 0){ed = mid;}}cout<< mid <<endl;
}
void BinarySearch3(double d){double st = -1000,ed = 1000;double mid = 0.0f;while(ed - st > d){mid = st + (ed - st)/2;if(check3(mid) < 0){st = mid;}else if(check3(mid) > 0){ed = mid;}}cout<< mid <<endl;
}
int main(){cout<< "请输入初始值x0:";double x,d = eps;cin>> x ;cout<< "牛顿迭代法" <<endl;NewtonIterationMethod1(x,d);NewtonIterationMethod2(x,d);NewtonIterationMethod3(x,d);cout<< "二分法" <<endl;BinarySearch1(d);BinarySearch2(d);BinarySearch3(d);return 0;
}
#include<stdio.h>
#include<math.h>
#define eta 1e-6
//割线法
float ge(float(*f)(float),float x1,float x0)
{float x2,d;int k=0;do{k++;x2=x1-((*f)(x1)*(x1-x0))/((*f)(x1)-(*f)(x0));d=x1-x0;x0=x1;x1=x2;printf("x(%d)=%f\n",k,x0);}while(fabs(d)>eps&&fabs((*f)(x1))>eta);return x1;
}float f(float x)   //第一问
{return x*x-exp(x);
}
float f1(float x)  //第二问
{return x*exp(x)-1;
}
float f2(float x)  //第三问
{return log10(x)+x-2;
}int main()
{float x1,x0,y0,y1,y2;printf("please insert x1,x0\n");scanf("%f,%f",&x1,&x0);printf("x(0)=%f\n",x0);y0=ge(f,x1,x0);y1=ge(f1,x1,x0);y2=ge(f2,x1,x0);printf("one answer is %6f\n",y0);printf("two answer is %6f\n",y1);printf("three answer is %6f\n",y2);return 0;
}

实验结果:

【计算方法】实验一 非线性方程求根数值解法相关推荐

  1. 数值分析方程求根实验matlab,数值分析实验之非线性方程求根(MATLAB实现)

    一.实验目的 1. 了解一般非线性方程的求根是比较复杂的事情:要讨论(或知道)它有无实根,有多少实根:知道求近似根常用的几种方法,每种方法的特点是什么. 2. 用通过二分法(区间半分法).不动点(也P ...

  2. 计算方法实验:方程求根二分法、不动点迭代法、牛顿法

    计算方法实验一,方程求根 分别用Matlab和C写了一下,初学Matlab,如有不足还请指正. 实验内容: 1)在区间[0,1]内用二分法求方程 e x + 10 ∗ x − 2 e^x+10*x-2 ...

  3. 计算物理学(数值分析)上机实验答案6、非线性方程求根

    实验六.非线性方程求根 ​ 在科学研究与工程技术中常会遇到求解非线性方程的问题.二分法简单易行, 但收敛较慢,仅有线性收敛速度.而且该方法不能用于求偶数重根或复根,但可 以用来确定迭代法的初始值.牛顿 ...

  4. 数值分析方程求根实验matlab,基于matlab的数值分析( 非线性方程求根)上机实验报告1...

    数值分析试验报告 非线性方程求根 二分法解方程 1. 题目:用二分法求方程0133 =--x x 的所有根 2. 方法:二分法 3. 程序 function x=erfenfa(a,b) if (a* ...

  5. 2021-01-07 matlab数值分析 非线性方程求根 牛顿法

    matlab数值分析 非线性方程求根 牛顿法 %牛顿法求非线性方程的根: % 输入:fun--非线性函数:dfun--非线性函数导数:x0--初始值:tol--精度: % 输出:x--非线性方程数值根 ...

  6. 数值计算大作业:非线性方程求根(二分法、牛顿法、弦截法在Matlab实现)

    作为研究生的入门课,数值计算的大作业算是所有研究生开学的重要编程作业. 我把二分法.牛顿法.弦截法求解非线性方程求根的数值计算作业在MATLAB中编程实现.具体的程序详细标注后放在文章附录了,算法数学 ...

  7. 工程数学(数值分析)第二讲:非线性方程求根

    文章目录 第二讲:非线性方程求根 二分法 简单迭代法 收敛阶 牛顿迭代法 第二讲:非线性方程求根 二分法 简单迭代法 收敛阶 牛顿迭代法

  8. 数值分析(7)-非线性方程求根

    7 非线性方程求根 文章目录 7 非线性方程求根 7.1 二分法 4.2 简单迭代法 4.2.1 一般形式 4.2.2 收敛条件 4.2.3 收敛阶 4.3 Newton迭代法 4.3.1 迭代格式 ...

  9. 基础数学(六)——非线性方程求根的数值解法

    文章目录 期末考核方式 求解的一般步骤 二分法求根 二分法计算样例 二分法的优缺点 不动点迭代法 全局收敛准则 收敛性证明样例 局部收敛性 收敛阶数的定义 迭代法具体例题(考试必考) 牛顿迭代法 例题 ...

  10. 数值计算方法第三章—线性方程组的数值解法知识点总结

    线性方程组的数值解法 本文参考书为马东升著<数值计算方法> 高斯消去法 顺序高斯消去法 通过初等变换消去方程组系数矩阵主对角线以下的元素,而使方程组化为等价的上三角形方程组 列主元高斯消去 ...

最新文章

  1. Android 使用adb 命令截图 的方法
  2. 计算机视觉方向简介 | 半全局匹配SGM
  3. R语言编写自定义函数计算R方、使用自助法Bootstrapping估计多元回归模型的R方的置信区间、可视化获得的boot对象、估计单个统计量的置信区间、分别使用分位数法和BCa法
  4. OceanBase技术直播间开播啦!蚂蚁金服技术专家手把手教你搭建OB数据库~
  5. 电厂MIS,SIS简介
  6. 控制文件的多路复用技术
  7. maven 生命周期
  8. Hibernate——简单的增、删、改、查操作
  9. 计算机争夺战作文,电脑争夺战作文600字
  10. xamarin android pdf,Xamarin.Android - 下载pdf和视频到应用空间并打开
  11. 浅说《测试用例》----给测试新手的
  12. 计算机专业答辩模板,论文答辩模板-计算机专业.ppt
  13. Python14 函数
  14. mac sierra 10.12部分注册机Special-K+CORE Keygen不能运行的问题
  15. 谷歌将于11月修改服务条款
  16. qmenubar 添加按钮_QMenuBar,QMenu和QAction(QMenuBar, QMenu QAction)
  17. 数据结构:二叉搜索树(BST)全部基本操作
  18. 2019通信工程师的职业发展前景和方向
  19. python3.0下载官网_python下载 v3.7.0 官方正式版
  20. 哥伦比亚大学 Schulzrinne 教授:撰写科研论文详细教程

热门文章

  1. react-router v6详解
  2. Uboot源码目录分析
  3. java毫秒转化为天小时分钟秒
  4. 最好的那些新兴互联网公司所使用的技术架构
  5. 2023年正在使用的设计资源网站分享
  6. 【ubuntu】 解决ubuntu合盖后无法唤醒
  7. oracle创建表所有语法,Oracle创建表语法 - create
  8. 打开共享之门成就成功之路
  9. 成都大学美术生分数线怎么计算机,成都学院(成都大学)2018年艺术类录取分数线(四川)...
  10. 我为什么不喜欢Qihoo?