弦截法是求非线性方程近似根的一种线性近似方法。它是以与曲线弧AB对应的弦AB与x轴的交点横坐标作为曲线弧AB与x轴的交点横坐标的近似值μ来求出方程的近似解。该方法一般通过计算机编程来实现。弦截法的原理是以直代曲即用弦(直线)代替曲线求方程的近似解,也就是利用对应的弦 与 轴的交点横坐标来作为曲线弧 与 轴的交点横坐标 的近似值。
原理:
以上便是弦截法的原理,它是一个一直接近正确的跟的求根方法,将区间一直缩小。
其中解释一下图片中的第二步,怎么求出x的值:
首先,x是直线与x轴的交点,其次直线过A(x1,f(x1))和B(x2,f(x2)).
可以通过A(x1,f(x1))和B(x2,f(x2))写出AB的方程式,再令自变量f(x)为0,即可求出x的值。
下面是C语言代码:
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
double f(double x)
{
return (x*x*x-3*x*x+3*x-1);
}
int main()
{
double x1,x2,xx;
do
{
scanf("%lf%lf",&x1,&x2);
}
while(f(x1)*f(x2)>0);//保证f(x1)和f(x2)是异号,这样才可以进行下一步的精准区间,否则,重新输入x1,x2的值
do
{
xx=(x1*f(x2)-x2*f(x1)/f(x2)-f(x1));
if(f(xx)*f(x1)>0)
x1=xx;
else if(f(xx)*f(x2)>0)
x2=xx;
}
while(fabs(f(xx))>=1e-6);//le-6代表1*10的-6次方,它的值将影响到跟的准确度的问题
printf("%.2lf\n",xx);
return 0;
}
不清楚的可以评论,看到就会回复的呢