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

📄 dengjing_shuangyuantong.cpp

📁 用于计算长直接地金属槽以及等径双圆筒中的电场
💻 CPP
字号:
#include<iostream.h>
#include<math.h>
#define erro 1e-5
#define M 20
#define N1 5
#define n 20
#define N N1+n+N1
#define w 0.02
#define h 0.001
#define v1 8.00
#define v2 12.00
void main ()
{
	
	//double L=0,R=0,S=0;
	//double R=0.02,S=0.005,L=0.045;
	//int M=20,N1=20,n=5,N;
	//double w=0.02;
	//double h=0.001;
	//double erro=0.5e-5;
	double V[M+1][N+1],v[M+1][N+1];
	//N=N1+n+N1;
	//cout<<"输入圆筒的两个电压值:";
	//cin>>v1>>v2;
	//cout<<v1<<v2;
	//cout<<"分别输入水平的网格数--v1内的:s内的:";
	//cin>>N1>>n;
	//cout<<"输入竖直的网格数:";
	//cin>>M;
	//cout<<"输入网格的间隔大小:";
	//cin>>h;
	//cout<<h;
	//cout<<"输入omiga的值:";
	//L=N*h;
	//R=M*h;
	//S=n*h;
	//cout<<L<<R<<S;
	//cout<<"网格的长为:"<<L<<"网格的宽为:"<<R<<"网格的间缝为:"<<S;
	/*对数组赋于其边界条件*/

	int i,j;
	for(i=0;i<=M;i++)
	{
		V[i][0]=v1;
	}
	for(j=0;j<N1;j++)
	{
		V[M][j]=v1;
	}
	for(j=N1;j<N1+n;j++)
	{
		V[M][j]=v1+(v2-v1)*(j-N1)/n;
	}
	for(j=N1+n;j<=N;j++)
	{
		V[M][j]=v2;
	}
	for(i=0;i<=M;i++)
	{
		V[i][N]=v2;
	}
	///
for(i=0;i<M;i++)
		for(j=1;j<=N1+abs(n/2);j++)
		{
			V[i][j]=v1;
		}
	for(i=0;i<M;i++)
		for(j=N1+1+abs(n/2);j<=N-1;j++)
		{
			V[i][j]=v2;
		} 
		////////////////////////////////////////////////////////////////
		cout<<"初始电位:"<<endl;
for(i=0;i<=M;i++)
{
for(j=0;j<=N;j++)
{cout<<V[i][j]<<'\t';}
cout<<endl;
}
//迭代过程;
	double tempv,tempeero=0,sum=0;
int k=0;
do
{
	k++;
	sum=0;
	for(j=0;j<M;j++)
	{	
		for(i=1;i<N;i++)
		{
			tempv=V[j][i];
			if(j==0)
			{
				V[j][i]=V[j][i]+w*((V[j][i-1]+V[j][i+1]+4*V[j+1][i])/6-V[j][i]);
			}
			else
			{
				V[j][i]=V[j][i]+w*((V[j][i-1]+V[j][i+1]+(1-1/(2*j))*V[j-1][i]+(1+1/(2*j))*V[j+1][i])/4-V[j][i]);
			}
			tempeero=fabs(tempv-V[j][i]);
			if(tempeero>sum)sum=tempeero;
		}
	}
}while(sum>erro);
cout<<"迭代次数:"<<k<<endl;
/*cout<<"电位值:"<<endl;
for(i=0;i<=M;i++)
	{
		for(j=0;j<=N;j++)
		{
			cout<<V[i][j]<<' ';
		}
		cout<<'\n';
	}
	*/
cout<<"实际电位值示意图:"<<endl;
for(i=0;i<=M;i++)
for(j=0;j<=N;j++)
{
	v[i][j]=V[M-i][j];
}
for(i=0;i<=M;i++)
	{
		for(j=0;j<=N;j++)
		{
			cout<<v[i][j]<<' ';
		}
		cout<<'\n';
	}

	
}

⌨️ 快捷键说明

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