1. 程式人生 > >用弦截法求函式的一個根(c語言描述)

用弦截法求函式的一個根(c語言描述)

任務和程式碼:

用弦截法求函式x^3-5x^2+16x-80=0的根

/*
*Copyright (c) 2016, CSDN學院
*All rights reserved.
*檔名:main.c
*作者:DylanLiu
*完成日期:2016/10/29
*版本號:V1.0
*
*問題描述:用弦截法求方程x^3-5x^2+16x-80=0的根。
*程式輸出:方程的根。
*/

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

double xpoint(double x1, double x2);//求過x1, x2的直線與x軸的交點
double root(double
x1, double x2);//求根函式 double f(double x);//求x點的函式的值 int main() { double x1, x2, f1, f2, x; do{ printf("請輸入x1, x2:"); scanf("%lf %lf", &x1, &x2); f1=f(x1); f2=f(x2); }while(f1*f2>=0); x=root(x1, x2); printf("方程的一個解為:%.2f\n", x); return
0; } //返回直線與X軸的交點 double xpoint(double x1, double x2) { double x=0; x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); return x; } //返回函式的根 double root(double x1, double x2) { double x, y, y1, y2; y1=f(x1); y2=f(x2); do{ x=xpoint(x1, x2); y=f(x); if(y*y1>0){ x1=x; y1=y; } else
{ x2=x; y2=y; } }while (fabs(y)>=0.00001); return x; } //返回x點的函式值 double f(double x) { double y=0; y=x*x*x-5*x*x+16*x-80; return y; }

輸出結果: