数值计算方法(五)——迭代法求方程根
(一)直接迭代
数学描述:
代码实现:
/***@name Equation_iteration:方程求根的迭代法*@param1 x0:初始值
**/
double Equation_iteration(double x0)
{double xk=x0;double xk1;double error=100;while(fabs(error)>1e-4){xk1=function(xk);error=xk1-xk;xk=xk1;cout<<"the iteration result is "<<xk1<<endl;}return xk1;
}
(二)利用加权平均进行迭代加速
数学公式:
注意:
这里加权中用的系数只跟x0有关
代码实现:
/***@name Equation_iteration_weighting:带加权加速的迭代法*@param1 x0:
**/
double Equation_iteration_weighting(double x0)
{double xk=x0;double xk1;double error=100;double L=function_diff(x0);while(fabs(error)>1e-4){xk1=1/(1-L)*(function(xk)-L*xk);error=xk1-xk;xk=xk1;cout<<"the iteration result is "<<xk1<<endl;}return xk1;
}
(三)松弛法实现迭代加速
数学公式:
注意:
这里的松弛因子随每一次的xk而发生变化
代码实现:
/***@name Equation_iteration_weighting:松弛加速的迭代法*@param1 x0:
**/
double Equation_iteration_loose(double x0)
{double xk=x0;double xk1;double error=100;double wk;while(fabs(error)>1e-4){//先求出wk,防止出现除0if(function_diff(xk)!=1)wk=1/(1-function_diff(xk));elsewk=1;//松弛迭代xk1=wk*function(xk)+(1-wk)*xk;error=xk1-xk;xk=xk1;cout<<"the iteration result is "<<xk1<<endl;}return xk1;
}
(四)埃特金加速迭代方法
数学公式:
注意:
这里利用两次迭代去替换导数值
代码实现:
/***@name Equation_iteration_Aitken:埃特金加速的迭代法*@param1 x0:
**/
double Equation_iteration_Aitken(double x0)
{double xk=x0;double xk1;double xk2;double compensate;double error=100;while(fabs(error)>1e-4){xk1=function(xk);xk2=function(xk1);//计算补偿if(fabs(xk2-2*xk1+xk)>1e-4)compensate=pow(xk2-xk1,2)/(xk2-2*xk1+xk);elsecompensate=0;//这里用的是xk2,再对其进行补偿xk1=xk2-compensate;error=xk1-xk;xk=xk1;cout<<"the iteration result is "<<xk1<<endl;}return xk1;
}
数值计算方法(五)——迭代法求方程根相关推荐
- 计算方法之迭代法求方程根
/************************ * 用迭代法求方程 * f(x)=e^(-x)-x+1=0 * 的根 *************************/ #include< ...
- Python趣味算法入门 - 牛顿迭代法求方程根
问题描述 编写用牛顿迭代法求方程根的函数.方程为,系数a,b,c,d由主函数输入,求x在1附近的一个实根.求出根后,由主函数输出. 牛顿迭代法的公式:,设迭代到 时结束. 分析 在网上可以找到很多关 ...
- 100个python算法超详细讲解:牛顿迭代法求方程根
1.问题描述 编写用牛顿迭代法求方程根的函数.方程为ax 3 +bx 2 +cx+d=0,系数a. b.c.d由主函数输入,求x在1附近的一个实根.求出根后,由主函数输出. 2.问题分析 牛顿迭代法是 ...
- c语言 迭代法求方程的根,编写用牛顿迭代法求方程根的函数
问题描述: 编写用牛顿迭代法求方程根的函数. 方程为:a*x^3 + b*x^2 + c*x + d = 0,系数a,b,c,d由主函数输入. 求x在1附近的一个实根.求出根后,由主函数输出. #in ...
- python算法1.3牛顿迭代法求方程根
1.问题描述 编写用牛顿迭代法求方程根的函数.方程为ax3x^3x3+bx2x^2x2+cx+d=0,系数a.b.c.d由主函数输入,求x在1附近的一个实根.求出根后,由主函数输出. 牛顿迭代法的公式 ...
- 用牛顿迭代法求方程的根matlab,牛顿迭代法求方程根的MATLAB程序
function [x_reality,n_reality] = Newt( f_name,x_start,tolerance,n_limit) %% %牛顿迭代法(切线法)求解方程f_name = ...
- 牛顿迭代法例题 matlab,牛顿迭代法求方程根的MATLAB程序
function [x_reality,n_reality] = Newt( f_name,x_start,tolerance,n_limit) %% %牛顿迭代法(切线法)求解方程f_name = ...
- matlab求方程实根,简单迭代法求方程根的MATLAB程序
function [x_reality,n_reality] = Simple_stepit( f_name,x_start,tolerance,n_limit) %% % 简单迭代法(也叫不动点迭代 ...
- 牛顿迭代法 求方程根
牛顿迭代法 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法.多数方程 ...
- 不动点迭代法求方程根
不动点 可以改写成等价的形式.若满足,则.反之亦然,我们称为函数的一个不动点,求f(x)的零点就等价于求g(x)的不动点,选择一个初始近似值,将其带入右端,即,反复迭代之后得到 ,g(x)称为迭代函数 ...
最新文章
- matlab 数据集制作,机器学习数据集制作与划分MATLAB实现
- python答题系统的代码_Python考试系统自动答题(教务处)
- 手动建库11.2.0.4
- python代码获取每一天在一年中出现的次数(星期)
- java调用权报表的代码_ireport5.6使用table组件,如何用table显示javaBean数据源
- 2018 中国准独角兽 TOP 50 夏榜发布!146 家投资机构、227 家企业参与
- onmounted vue3_基于项目时间阐述vue3.0新型状态管理和逻辑复用方式
- new file会创建文件吗_Rust 文件系统处理之文件读写 Rust 实践指南
- jquery复选框组清空选中的值_防火墙基本配置:配置策略组
- java string范围_字符串索引超出范围? (Java,子字符串循环...
- 【Bug】解决 java.sql.SQLSyntaxErrorException 异常
- 利用Linux系统生成随机密码的8种方法
- 简单网页-------课程表
- Springboot拼接实体类里面的URL
- \t \n \n\t在python中的用法
- 爬虫开发04--代理IP
- 人工智能(Machine Learning)—— 机器学习
- 计算机刚开始学什么时候,新手如何开始学电脑 新手学电脑从何入门
- Codeforces Round #406 (Div. 1) A. Berzerk 记忆化搜索
- 目前最流畅的android手机,买安卓手机请认准这五个最流畅的系统
热门文章
- 推荐系统学习(二)基于用户/物品的协同过滤算法(User-CF / Item-CF)
- Centos7 修改、更换源
- 解决file.seek()读取文件报错:AttributeError: ‘str‘ object has no attribute ‘seek‘
- jquery 父元素相邻元素_Jquery中几种查找节点的方法
- CAS客户端认证流程
- 第四次scrum冲刺
- Oracle数据库SqlLoad常用技巧总结word版
- python, 面向对象编程Object Oriented Programming(OOP)
- 在Windows上安装MySQL5.7
- 【TypeScript】TypeScript 学习 3——类