数值计算讨论组

Would you like to react to this message? Create an account in a few clicks or log in to continue.
数值计算讨论组

欢迎来到数值计算讨论组。 本论坛旨在增强师生交流的时效性,主要讨论数值计算相关问题,包括初等数值分析、矩阵计算、非线性方程(组)数值解法、微分方程数值解法等方面的内容。


    [非]单点弦法算例

    avatar
    Admin
    Admin


    帖子数 : 46
    注册日期 : 10-05-13

    [非]单点弦法算例 Empty [非]单点弦法算例

    帖子 由 Admin 周六 五月 15, 2010 3:53 pm

    /*
    实验三 非线性方程实根的正割法
    一、目的与要求:掌握解非线性方程实根的正割法的上机编程运算.
    二、实验内容
    问题1. 用正割法求x^3-0.2x^2-0.2x-1.2=0在区间 [1,1.5]内的实根(精确到1e-3).
    问题2. 用双点弦法解方程x=exp(-x)
    */

    // 用单点弦法求解 问题1中的方程,不妨设为x0 = 1.5, x1 = 1
    #include <iostream>
    #include <iomanip>
    #include <cmath>
    using namespace std;
    int main()
    {
    int k;
    double x0,fx0,x,xk,fxk,err;
    double f(double x);

    k = 0;
    x0 = 1.5;
    fx0 = f(x0);
    xk = 1.0;
    err = 1.0;
    while ( err > 0.001 )
    {
    x = xk;
    fxk = f(xk);
    xk = xk - fxk*(xk - x0)/(fxk - fx0);
    err = fabs(x-xk);
    k++;
    }

    cout << "K-th iteration: " << k << endl; // 迭代次数
    cout << "err= " << setprecision(12) << err << endl; // 迭代序列最后两项之间的差
    cout << "x= " << setprecision(12) << x << endl; // 方程的解
    cout << "f(x)= " << setprecision(12) << f(x) << endl; // 方程中的函数f(x)在解x点的值
    return (0);
    }

    double f(double x)
    {
    return ( pow(x,3) - 0.2*pow(x,2) - 0.2*x - 1.2 );
    }

      目前的日期/时间是周二 五月 14, 2024 8:07 pm