//C++类实现.
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
#define N 4 //根的可能最大个数
#define MIN -10000 //二分法根的下限.求的是 u 值,u 不能为 0
#define MAX 10000 //二分法根的上限
#define step 0.1 //二分法递进的步长
#define EPS 0.000001 //二分法精度
class polynomial
{
private:
double M2,N2,K2;
int num;//实际根的个数
vector<double> u;
public:
polynomial()
{
num=0;
}
double Equation(double x);
int BinSearchRoot(double a,double b,double h,double eps,int m);
void Result();
void ShowResult();
void ShowPixel();
void PointInTriangle();
};
double polynomial::Equation(double x)
{
double z;
z=((0.75*x*x-3)*x+2*x-0.25;/*多项式表达式*/
return(z);
}
int polynomial::BinSearchRoot(double a,double b,double h,double eps,int m)
/*用二分法计算非线性方程的实根*/
/************参数意义: *****************
a 要求的根的下界
b 要求的根的上界,即:所求的根落在区间 [a,b]之内
h 递进的步长
eps 精度
m 预计的根的个数**********************/
{
int n,js; //js 标志,0 表示未找到根,1 表示已经确定了根
double z,y,z1,y1,z0,y0;
n=0; z=a; y=Equation(z);
while ((z<=b+h/2.0)&&(n!=m)) /*对给定步长的子区间进行搜索*/
{
if (fabs(y)<eps) /*当前的判定点是方程的根*/
{
num++;
评论0
最新资源