📄 twodiv.cpp
字号:
#include "iostream"
#include "math.h"
using namespace std;
struct Node
{
double a;
int b;
};
//计算结点值
double Calculate(Node n,double x)
{
return n.a*pow(x,n.b);
}
//计算函数值
double f(Node N[],int num,double x)
{
int i=0;
double value=0.00;
for (i=0;i<num;i++)
{
value+=Calculate(N[i],x);
}
return value;
}
//二分法
double TowDiv(Node N[],int num,double x1,double x2)
{
//判断区间是否有根
if (f(N,num,x1)*f(N,num,x2)>1e-6)
{
cout<<"wrong space!"<<endl;
return 0;
}
//确保x1<x2
double temp=0.00;
if(x1>x2)
{
temp=x1;x1=x2;x2=temp;
}
static double mid=x1;
//反复计算直到约等于0
while(abs(f(N,num,mid))>1e-10)
{
//与x1同号则修改x1
if(f(N,num,mid)*f(N,num,x1)>1e-10)
x1=mid;
else
x2=mid;
mid=(x1+x2)/2.0;
}
return mid;
}
void main()
{
int i=0,j=0;
double x1=0.0,x2=0.0;
cout<<"请输入结点数 "<<endl;
cin>>i;
cout<<"请输入区间(如-1 2表示[-1,2]):"<<endl;
cin>>x1>>x2;
Node *N=new Node[i];
//方程输入
while(j<i)
{
cout<<"请输入系数(如2x^2,就输入2):";
cin>>N[j].a;
cout<<"请输入指数(如2x^4,就输入4):";
cin>>N[j].b;
j++;
}
j=0;
//显示方程
cout<<"f(x)=";
while(j<i)
{
cout<<N[j].a<<"x^"<<N[j].b;
if(j!=i-1)
cout<<"+";
j++;
}
cout<<endl<<endl;
cout<<TowDiv(N,i,x1,x2)<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -