前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >割线法(Secant Method)求解f(x)=0

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

原创
作者头像
黑豆梨
修改2018-07-19 20:03:52
2K0
修改2018-07-19 20:03:52
举报

今天继续讨论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

求解代码如下:

代码语言:txt
复制
#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
secant法求解.png

原理

具体可参考

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com