📄 dengjing_shuangyuantong.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 + -