割线法(Secant Method)求解f(x)=0

今天继续讨论f(x)=0的解法,这次介绍的是割线法secant。

问题描述

已知f(x)=0,求使等式成立的x的值

解法如下

取与解相近的两个解x_1x_2

进行迭代

x_3=x_2-f(x_2) \frac{x_2-x_1}{f(x_2)-f(x_1)}

x_4=x_3-f(x_3) \frac{x_3-x_2}{f(x_3)-f(x_2)}

...

x_n=x_n-1-f(x_{n-1}) \frac{x_{n-1}-x_{n-2}}{f(x_{n-1})-f(x_{n-2})}

示例

求解 f(x)=e^{-x}-x=0

求解代码如下:

#include <math.h>
#include <stdio.h>

double f(double x)
{
    return exp(-x)-x;
}

int main()
{
    double x1=0;
    double x2=1;
    double x = x2;
    while (fabs(f(x)) > 1e-6) {
        x = x2 - f(x2)*(x2-x1)/(f(x2)-f(x1));
        x1 = x2;
        x2 = x;
    }
    printf("solution for function exp(-x)-x=0 is %lf\n", x);
    return 0;
}

求解结果如下

secant法求解.png

原理

具体可参考

https://zh.wikipedia.org/wiki/%E5%89%B2%E7%BA%BF%E6%B3%95

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

谈谈Tensorflow的Batch Normalization

tensorflow中关于BN(Batch Normalization)的函数主要有两个,分别是: tf.nn.moments tf.nn.batch_norm...

4747
来自专栏IT派

教程 | 如何使用纯NumPy代码从头实现简单的卷积神经网络

在某些情况下,使用 ML/DL 库中已经存在的模型可能会很便捷。但为了更好地控制和理解模型,你应该自己去实现它们。本文展示了如何仅使用 NumPy 库来实现 C...

1302
来自专栏Deep Learning 笔记

图像识别(二) cifar10_input.py详解

tf.variable_scope和tf.name_scope的用法:https://blog.csdn.net/uestc_c2_403/article/de...

3836
来自专栏深度学习自然语言处理

为什么要使用向量化?

简单的矩阵乘法理论 其实大概每个人都知道向量化后进行计算的速度比循环求解计算快,可是快多少,我们还是不太清楚。那么我就想简单的说下理论再上代码(pyth...

3016
来自专栏视觉求索无尽也

【总结经验】炼丹路上的坑与经验

1253
来自专栏ACM算法日常

leetcode题解 | 48. 旋转图像

你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

911
来自专栏Python中文社区

用Python从零开始构造决策树

專 欄 ❈ 作者:weapon,不会写程序的浴室麦霸不是好的神经科医生 ❈ 起步 本章介绍如何不利用第三方库,仅用python自带的标准库来构造一个决策树。 ...

2107
来自专栏IT派

30分钟学会用scikit-learn的基本回归方法(线性、决策树、SVM、KNN,Adaboost和GBRT)

前言:本教程主要使用了numpy的最最基本的功能,用于生成数据,matplotlib用于绘图,scikit-learn用于调用机器学习方法。如果你不熟悉他们(我...

1192
来自专栏编程

新知识 用Python从零开始构造决策树

起步 本章介绍如何不利用第三方库,仅用python自带的标准库来构造一个决策树。 熵的计算公式: ? 对应的python代码: ? 条件熵的计算 根据计算方法:...

3508
来自专栏全球人工智能的专栏

如何用 Keras 为序列预测问题开发复杂的编解码循环神经网络?

在本篇文章中,你将学会如何用 Keras 为序列预测问题开发复杂的编解码循环神经网络。

3430

扫码关注云+社区