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

📄 劈因子法解方程.cpp

📁 用劈因子法解方程
💻 CPP
字号:
#include<iostream.h>
#include<math.h>

void piyinzi(int n,double *u,double *v,double *a){
	double pi[100],m,x0,x1=a[1],x2=a[0],y0,y1,y2,z0,z1,du[100],dv[100];
	for(int k=1;k<50&&(x1!=0||x2!=0);k++){
		cout<<"\n迭代次数:"<<k<<'\n';
		x2=a[0];
		x1=a[1];
		for(int i=0;i<n-2;i++){
			x0=a[i+2];
			pi[i]=x2;
			x2=x1-pi[i]*(*u);
			x1=x0-pi[i]*(*v);
		}
		y2=-pi[0];
		y1=-pi[1];
		for(i=0;i<n-4;i++){
			y0=-pi[i+2];
			m=y2;
			y2=y1-m*(*u);
			y1=y0-m*(*v);
		}
		z1=y1-m*(*u);
		z0=-m*(*v);
		du[k]=-(x2*y1-x1*y2)/(z1*y1-z0*y2);
		dv[k]=-(z1*x1-z0*x2)/(z1*y1-z0*y2);
		(*u)+=du[k];
		(*v)+=dv[k];
		cout<<"du["<<k<<"]="<<du[k]<<'\t'<<"dv["<<k<<"]="<<dv[k]<<'\n';
		cout<<"u["<<k<<"]="<<*u<<'\t'<<"v["<<k<<"]="<<*v<<'\n';
		cout<<"r1["<<k<<"]="<<x2<<'\t'<<"r0["<<k<<"]="<<x1<<'\n';
	}
	cout<<"w*(x)=x*x+("<<*u<<")x+("<<*v<<")\n"<<'\n';
}

void main()
{
	int n;
	double b[100],x1,x2,m0,m1;
	cout<<"输入多项式f(x)的阶数: ";
	cin>>n;
	cout<<"由高次到低次依次输入f(x)的各项系数:\n";
	for(int i=0;i<n+1;i++)
	{
		cin>>b[i];
	}
	double u,v;
	cout<<"请输入w(x)=x*x+u*x+v的系数u,v:\n";
	cin>>u>>v;
	piyinzi(n+1,&u,&v,b);
	if(u*u-4*v>=0)
	{
		x1=(-u+sqrt(u*u-4*v))/2;
		x2=(-u-sqrt(u*u-4*v))/2;
		cout<<"方程的解为:x1="<<x1<<'\t'<<"x2="<<x2<<'\n';
	}
	else{
		m0=-u/2;
		m1=sqrt(4*v-u*u)/2;
		cout<<"方程的解为:x1="<<m0<<"+i"<<m1<<'\t'<<"x2="<<m0<<"-i"<<m1<<'\n';
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -