| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5739 人关注过本帖
标题:用弦截法求方程的根
只看楼主 加入收藏
hmsabc
Rank: 2
来 自:贵州省兴义市
等 级:论坛游民
帖 子:97
专家分:19
注 册:2010-8-2
结帖率:100%
收藏
 问题点数:0 回复次数:4 
用弦截法求方程的根
程序代码:
//用弦截法求方程的根:  f(x)= x * x * x - 5 * x * x + 16 * x - 80  (例4_9)
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
double f(double);                                             //函数声明
double xpoint(double,double);                                 //函数声明
double root(double,double);                                   //函数声明

int main( )
{
    double x1,x2,f1,f2,x;
    do
    { cout<< "input x1,x2:";
    cin >> x1 >> x2;
    f1=f(x1);
    f2=f(x2);
    } while(f1*f2 >= 0);
    x = root(x1,x2);
    cout << setiosflags(ios::fixed) << setprecision(7);       //指定输出7位小数
    cout << "A root of equation is " << x << endl;
    return 0;
}


double f(double x)                                       //定义f函数
{ double y;
y = x * x * x - 5 * x * x + 16 * x - 80;
return y;
}

double xpoint(double x1,double x2)                       //定义spoint 函数,求出弦与 x 轴的交点
{ double y;
y = ( x1 * f(x2) - x2 * f(x1))/(f(x2) - f(x1));          //在 xpoint 函数中调用 f 函数
return y;
}

double root(double x1,double x2)                         //定义 root 函数,求近似根
{
    double x,y,y1;
    y1 = f(x1);
    do
    { x = xpoint(x1,x2);                                 //在 root 函数中调用 xpoint 函数
    y = f(x);                                            //在 root 函数中调用 f 函数
    if(y*y1 > 0)
    { y1 = y;
    x1 = x;
    }
    else
        x2 = x;
    }while(fabs(y)>= 0.00001);
    return x;
}

/*
用程序解数学题,要求懂数学知识,在此基础上确定合理的算法,然后设计程序。本程序“算法”见谭浩强《C++程序设计》第一版 P106页。
*/
搜索更多相关主题的帖子: 方程 
2010-08-13 16:27
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
收藏
得分:0 
程序都写出来了,不知道楼主能不能用通俗易懂的语言介绍一下“弦截法”,大家共同进步啊!!!

授人以鱼不如授人以渔
2010-08-13 18:02
hmsabc
Rank: 2
来 自:贵州省兴义市
等 级:论坛游民
帖 子:97
专家分:19
注 册:2010-8-2
收藏
得分:0 
回复 2楼 mxs810
不是写出来了,是抄书上的。说来是个笑话,我不是数学专业的,不知道怎么解一元三次方程,以为很简单,谁知道还很复杂,在网上查了一下,才知道求解一元三次方程在历史上还引发过大的学术争论。弦截法就是解一元三次方程的一种方法。
2010-08-13 18:38
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
呵呵,没什么,一般都不会一元三次方程的解法。数学专业的也一样,我就是数学专业的。
会的都是自学的,我是高中的时候和一个同学一起学会的。比较著名的方法是卡尔丹公式,和求根公式(这个一般的求根公式是不是也有个什么人名来着,记不太清了)。这是解析法,就是求精确解的。方法很复杂,总体思想都是换元降次。
四次方程也有求根公式。五次及以上一般一元方程就不能解析解(这个事实,被称作阿贝尔定理)。
 
不过有计算机算的主要是数值解,在数值分析里有专门的研究。基本什么方程理论上都能求任意精度的近似解。
2010-08-13 22:57
hmsabc
Rank: 2
来 自:贵州省兴义市
等 级:论坛游民
帖 子:97
专家分:19
注 册:2010-8-2
收藏
得分:0 
厉害!看来我们要成为好朋友了。每天都能从你那里学到一点知识,真幸运。
2010-08-14 07:42
快速回复:用弦截法求方程的根
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017515 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved