计算方法/数值分析牛顿下山法C/C++实现方法
一、前言(吐槽)
我真的不知道该说些什么好,其实也怪自己。老师将实验发下来,然后我就跟这着老师的实验任务做,实验word上用的什么流程图我就用那个流程图,然而我根据老师的流程图遍完了程序,怎么验算结果都不对,就开始找自己的问题,根本没去想流程图,后来才发现,是自己太年轻了,老师给的流程图错了,其实都怨自己,一味的去抄这个流程图,没有去分析这个流程图,这次狠狠的给我上了一课,浪费了好多时间。
二、算法流程图
具体流程图哪里错了,我就不告诉大家了,下面是错误的流程图,大家自己分析一下吧。挺简单的错误。
三、代码
#include <iostream>
using namespace std;
int main(){bool flag = false;//用来判断是第几层循环double X0,X1,r;cout<<"请输入初值:"<<endl;cin>>X0;double e;cout<<"请输入误差限:"<<endl;cin>>e;int m;cout<<"请输入下山最大次数:"<<endl;cin>>m;int n;cout<<"请输入迭代最大次数:"<<endl;cin>>n;int k=0;int i=0;while(true){//说明下山成功进行迭代if(r !=1){cout<<"第"<<i<<"步下山因子:"<<r<<endl;}r = 1.0;if(3*X0*X0-1 != 0){while (true){if(flag){flag = false;break;}X1 = X0 - r*(X0*X0*X0 - X0 - 1) / (3.0 * X0*X0 - 1);if(abs(X1*X1*X1 - X1 - 1) > abs(X0*X0*X0 - X0 - 1)){cout<<"第"<<i<<"步下山因子:"<<r<<endl;cout<<"--------------"<<endl;i=i+1;r=r*0.5;if(i>=m){cout<<"重新输入x0"<<endl;return 0;}elsecontinue;}else{if (abs(X1 - X0) <e){cout<<"近似根为:"<<X1<<endl;return 0;}else{k=k+1;X0=X1;if(k>=n){cout<<"迭代失败!"<<endl;return 0;}else{flag = true;continue;}}}}} else{cout<<"奇异标志"<<endl;return 0;}}}
计算方法/数值分析牛顿下山法C/C++实现方法相关推荐
- [计算机数值分析]牛顿下山法求方程的根
问题描述 一般来说,牛顿法的收敛性依赖于初值 x₀ 的选取,如果 x₀ 偏离方程的正解根 x* 较远,则牛顿法可能发散. 例:用牛顿法求方程 x³ - x - 1 = 0在 x = 1.5 附近的一个 ...
- 4.9 数值分析: 牛顿下山法
本文内容为东北大学数值分析国家精品慕课课程的课程讲义, 将其整理为OneNote笔记同时添加了本人上课时的课堂笔记, 且主页中的思维导图就是根据课件内容整理而来, 为了方便大家和自己查看,特将此上传到 ...
- Matlab数值分析编程:牛顿下山法解方程
%通用代码 fun=inline('x^0.5-x^3+2','x');%手动输入函数表达式和自变量 dfun=inline('0.5*x^(-0.5)-3*x^2','x');%手动输入函数一阶导数 ...
- 利用牛顿公式求解方程的根并且实现牛顿下山法
实验要求 a. 实现牛顿公式,并分别找到收敛和发散的例子 算法介绍 牛顿公式原理如下图: 为了防止牛顿迭代发散并且加速迭代速度,所以我们在这里引入一个新的方法-- 牛顿下山法: 根据牛顿公式原理以及牛 ...
- MATLAB之牛顿下山法
MATLAB之牛顿下山法 算法原理 matlab程序 算法原理 上一篇博客,我介绍了牛顿法迭代法,接下来我就们接着讲解一下什么是牛顿下山法. 一.迭代公式 在牛顿迭代过程中,若满足单调性|f(x(k+ ...
- 牛顿法和牛顿下山法求极值的理解
泰勒展开 先创建一个不太方便求解的方程sinx=−0.01ex\sin x=-0.01e^xsinx=−0.01ex,并用matlab画出来y=sinx+0.01exy=\sin x+0.01e^ ...
- 非线性方程的数值解法:牛顿法及牛顿下山法(含Matlab程序)
牛顿法及牛顿下山法 简介:牛顿迭代法是求解单变量非线性方程f(x)=0中最实用的方法,该方法在单根附近二阶收敛.但应用时要选用较好的初值x0近似才能保证迭代收敛.为克服这一缺点,可使用牛顿下山法.下面 ...
- matlab中牛顿下山法实例,非线性方程的数值解法牛顿下山法matlab
非线性方程的数值解法牛顿下山法matlab 1 非线性方程的数值解法 --计算物理实验作业九 陈万 物理学2013级 130******** ● 题目: 用下列方法求0133=--=x x f(x)在 ...
- matlab实现牛顿下山法
说起牛顿下山法,首先要提牛顿法,牛顿法是求解非线性方程的一个重要方法,具体可以点击牛顿法:虽然牛顿法作为一个二阶的迭代收敛方法,但是其对于函数和初始点的要求都比较高,而牛顿下山法则是有效降低这些要求的 ...
最新文章
- python基础包括什么-Python基础教程 模块包含什么
- Android 错误: 找不到符号 符号: 类 x 位置: 类 MainActivity
- 详解Linux2.6内核中基于platform机制的驱动模型
- socket认证客户端链接合法性
- iOS中的唯一标示符
- squid 服务器的应用
- 猎豹MFC--CMenu菜单 设置主菜单 给主对话框设置菜单 设置快捷菜单
- 前端框架Vue——vue-i18n ,vue项目中如何实现国际化,$t的用法
- ML《集成学习(二)Boosting之Adaboosting》
- 理解JavaScript里this关键字
- 完全二叉树之深度问题
- 换一种方式去思考--microsoft for win server03
- ubantu 黑屏_死机黑屏专题上线啦,早鸟只要299,看完薪水翻一番
- CS0579	Duplicate 'Microsoft.AspNetCore.Mvc.ApplicationParts.ProvideApplicationPartFactoryAttribute
- android expandablelistview横向,ExPandableListView实现时间轴效果【Android】
- 智方8000系进销存管理系统 杀毒软件下载
- adobe photoshop cc 2014 安装失败
- 风险模型 - 变量筛选
- 1285. 四的乘方
- 解决idea代码无故爆红问题