牛顿迭代法:

  设定x*是方程f(x)=0的根,选取x0作为x*的近似值,过点(x0, f(x0))做曲线f(x)=0的切线L,L的方程y=f(x0)+f'(x0)(x-x0),求出L与x轴焦点的横坐标x1=x0-f(x0)/f'(x0),称x1为x*的一次近似值,然后设置x0=x1,重复上面的过程,反复迭代,就可以得到一个比较精确的近似值。

代码实现:

#include <iostream>
#include <list>
using namespace std; /*
定义一个list列表存储方程的表达式
*/
typedef list<double> Expression; /*
方程系统的初始化:
n为方程的最高项次数
第一个输入的为常数项的系数
第二个输入的为x项的系数
第三个输入的位x平方的系数
。。。。如此类推
*/
void Init(Expression *expression) {
double n;
double temp;
cin>>n;
for(int i = ; i <= n+; i++) {
cin>>temp;
expression->push_back(temp);
}
} /*
拿到x的number次方的值
*/
double GetValue(int number, double x) {
double sum = ;
for(int i = ; i <= number; i++) {
sum *= x;
}
return sum;
} /*
求导数的值:
x为变量的值
expression为表达式
*/
double DerivativeValue(double x, Expression *expression) {
double value = ;
int i = ;
if(!expression->empty()) {
for(Expression::iterator it = expression->begin(); it != expression->end(); it++) {
if(i != ) {
value += (*it)*i*GetValue(i, x);
}
i++;
}
return value;
}
return ;
} /*
求函数的值
x为变量的值
expression为表达式
*/
double GetFunctionValue(double x, Expression *expression) {
double value = ;
int i = ;
if(!expression->empty()) {
for(Expression::iterator it = expression->begin(); it != expression->end(); it++) {
value += (*it)*GetValue(i, x);
i++;
}
return value;
}
return ;
} /*
牛顿迭代法:
expression为表达式
x0为初始值
time为你迭代的次数
*/
double NewtonIterator(Expression *expression, double x0, int time) {
for(int i = ; i <= time; i++) {
x0 = x0 - GetFunctionValue(x0, expression)/DerivativeValue(x0, expression);
}
return x0;
} int main() {
Expression *expression = new Expression();
Init(expression);
cout<<NewtonIterator(expression, , )<<endl;
return ;
}

Newton迭代法-C++的更多相关文章

  1. Matlab-6:解非线性方程组newton迭代法

    函数文件: function x=newton_Iterative_method(f,n,Initial) x0=Initial; tol=1e-11; x1=x0-Jacobian(f,n,x0)\ ...

  2. C++ 应用程序性能优化

    C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...

  3. OpenCASCADE Root-Finding Algorithm

    OpenCASCADE Root-Finding Algorithm eryar@163.com Abstract. A root-finding algorithm is a numerical m ...

  4. Logistic Regression分类器

    1. 两类Logistic回归 Logistic回归是一种非常高效的分类器.它不仅可以预测样本的类别,还可以计算出分类的概率信息. 不妨设有$n$个训练样本$\{x_1, ..., x_n\}$,$x ...

  5. 机器学习-review-1 线性回归

    发现隔一段时间,忘记了好多知识点,这里认为重要的知识点记录下来,作为笔记,方便以后回顾. From “李航- 统计学习方法” 统计学习方法的三要素: 模型,策略, 算法 对于线性回归 -------- ...

  6. 恭喜PBD终于有了自己的物理解释和模型

    之前的position based dynamic 总给人一种野路子的感觉,没有物理意义,没有对应的物理模型一切基于几何的方法. 感觉就是犀稀里哗啦将一堆堆约束按梯度方向迭代解算. 最新muller的 ...

  7. Matlab:显(隐)式Euler和Richardson外推法变步长求解刚性问题

    一.显示Euler 函数文件:Euler.m function f=Euler(h,Y) f(1,1)=Y(1)+h*(0.01-(1+(Y(1)+1000)*(Y(1)+1))*(0.01+Y(1) ...

  8. MATLAB数值分析实验

    1.用Newton迭代法求方程   的第一个正根. 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ newton.m: function x1=newto ...

  9. Classification and logistic regression

    logistic 回归 1.问题: 在上面讨论回归问题时.讨论的结果都是连续类型.但假设要求做分类呢?即讨论结果为离散型的值. 2.解答: 假设: 当中: g(z)的图形例如以下: 由此可知:当hθ( ...

随机推荐

  1. Asp.net .net(C#) 获取当前命名空间,类名,方法名的方法

    public static string GetMethodInfo() {     string str = "";      //取得当前方法命名空间     str += & ...

  2. VS扩展开发框架

    VsSharp:一个VS扩展开发框架(上) 上篇:设计 一.引子 自2008年起开发SSMS插件SqlSharp(er)的过程中,有一天发现多数代码都大同小异,就像这样. Commands2 comm ...

  3. ABP依赖注入

    ABP依赖注入 点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之6.ABP依赖注入 ABP是“ASP.NET Boilerplate Project (ASP.N ...

  4. 一些有用的javascript实例分析(三)

    原文:一些有用的javascript实例分析(三) 10 输入两个数字,比较大小 window.onload = function () { var aInput = document.getElem ...

  5. 【SICP练习】150 练习4.6

    练习4-6 原版的 Exercise 4.6. Let expressions are derived expressions, because (let (( ) - ( )) ) is equiv ...

  6. C#关于HttpClient的应用(二):融云IM集成

    public class RcHttpClient:BaseHttpClient { private String appKey; private String appSecret; public R ...

  7. crawler_基础之_java.net.HttpURLConnection 访问网络资源

    java访问网络资源 由底层到封装  为  scoket==> java.net.HttpURLConnection==>HttpClient 这次阐述先 java.net.HttpURL ...

  8. 3.集--LinkedTransferQueue得知

    近期在阅读开源项目里,发现有几个project都不尽同样地使用LinkedTransferQueue这个数据结构.比方netty,grizzly,xmemcache,Bonecp. Bonecp还扩展 ...

  9. Linux中加入用户、删除用户时新手可能遇到的问题

    Linux中加入用户.删除用户时新手可能遇到的问题  1.创建新用户后切换到新用户:No directory, logging in with HOME=/     加入用户     #sudo us ...

  10. Asp.net MVC + EF + Spring.Net 项目实践(目录)

    用4篇博客来搭一个MVC的框架,可能对初学者会有一些帮助,大家共勉吧.我觉得对于中小型项目,这个框架可能还是有一定的用处的,希望能够帮助到一些人. Asp.net MVC + EF + Spring. ...