⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 twodiv.cpp

📁 数值计算中二分法的一种实现。
💻 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 + -