📄 fuchitu.c
字号:
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include <graphics.h>
#include<dos.h>
#include<conio.h>
void inisub(void);
void runsub(void);
void intsub(void);
void stosub(void);
void outsub(void);
void modsub(void);
void repsub(void);
void blot(void);
float t,t1,t2,t3,t4,t7;
int l3,j8,j9,n1,n2,n3,n4,n5,s;
float y[31],m[31],e[31],g[31],p[21],z[21],k[21][5],w[802][6],a[5];
int i,j,gdrive=VGA,gmode=VGAHI;
main()
{
inisub();
n1=2;n2=0;y[1]=600;y[2]=12000;n3=640;t1=6400;t2=10;
do
{
if(l3!=1)
{
if(j8==1) exit(0);
printf("Input total simulation time T1,step T2=");
do
{ j8=1;
if(j8<0)
printf("wrong number entered.re-input J8=");
}while(j8<0);
if(j8>=2)
{
l3=1;
j9=j9+1;
if(j9>j8) exit(0);
}
}
else
{
j9=j9+1;
if(j9>j8) exit(0);
}
printf("Input the values of parameters=");
for(i=1;i<=n2;i++)
scanf("%f",&p[i]);
printf("\n");
runsub();
outsub();
getch();
blot();
}while(1);
}
void runsub(void)
{
int i;
for(i=1;i<=n1;i++)
z[i]=y[i];
n4=1;
t=0.0;
t4=t1/(n3-1);
if(t2>=t4) t2=t4;
t3=t4;
t7=0.5*t2;
modsub();
stosub();
do
{
do intsub();while(t<t3);
n4++;
stosub();
t3=n4*t4;
}while(t<t1);
for(i=1;i<=n1;i++)
y[i]=z[i];
}
void inisub(void)
{
int i,j;
for(i=0;i<=20;i++)
{
p[i]=0.0;
g[i]=0.0;
z[i]=0.0;
for(j=0;j<=4;j++)
{
k[i][j]=0.0;
a[j]=0.0;
}
}
t=0.0;
l3=0.0;
for(i=0;i<=30;i++)
{
y[i]=0.0;
m[i]=0.0;
e[i]=0.0;
}
j9=0;
for(i=1;i<=801;i++)
{
for(j=0;j<=5;j++)
w[i][j]=0.0;
}
}
void intsub(void)
{
int i;
for(i=1;i<=n1;i++)
{
k[i][2]=g[i]*t7;
k[i][1]=y[i];
y[i]=k[i][1]+k[i][2];
}
t=t+t7;
modsub();
for(i=1;i<=n1;i++)
{
k[i][3]=g[i]*t7;
y[i]=k[i][1]+k[i][3];
}
modsub();
for(i=1;i<=n1;i++)
{
k[i][4]=g[i]*t2;
y[i]=k[i][1]+k[i][4];
}
t=t+t7;
modsub();
for(i=1;i<=n1;i++)
y[i]=k[i][1]+(2*k[i][2]+2*k[i][4]+4*k[i][3]+g[i]*t2)/6;
modsub();
}
void stosub(void)
{
int i;
n5=n4-1;
w[n5][1]=t;
repsub();
for(i=1;i<=30;i++)
{
if(y[i]>m[i]) m[i]=y[i];
if(y[i]<e[i]) e[i]=y[i];
}
for(i=2;i<=5;i++)
w[n5][i]=a[i-1];
}
void outsub(void)
{
int i,j;
printf("Y[I] Y[I]max Y[I]min\n");
for(i=1;i<=30;i++)
if(m[i]!=0||e[i]!=0)
printf("%2d %15.5f %15.5f\n",i,m[i],e[i]);
printf("SIMULATION STEP T2=%15.5f\n",t2);
printf(" T A[1] A[2] A[3] A[4]\n");
for(i=0;i<=n5;i++)
{
for(j=1;j<=5;j++)
printf("%13.5f",w[i][j]);
printf("\n");
}
}
void modsub(void)
{
g[1]=-0.01*y[1]+0.000001*y[1]*y[2];
g[2]=0.001*y[2]-0.000002*y[1]*y[2];
}
void repsub(void)
{
a[1]=y[1];
a[2]=y[2];
a[3]=g[1];
a[4]=g[2];
}
void blot()
{
double i=0;j=1;
initgraph(&gdrive,&gmode,".\\bgi");
delay(2000);
for(i=0;i<=203;i++)
{
y[6]=y[6]+w[i][2];
y[5]=y[5]+w[i][3];
}
y[7]=y[5]/203;
y[8]=y[6]/203;
for(i=0;i<=639;i++)
{
setcolor(GREEN);
moveto(i,y[7]/65);
lineto(i,y[7]/65+1);
setcolor(YELLOW);
moveto(i,200+y[8]/5);
lineto(i,200+y[8]/5+1);
}
for(i=0;i<=800;i++)
{
setcolor(RED);
moveto(i,(int)(w[i][3]/50)-50);
lineto(i,(int)(w[i][3]/50)+1-50);
setcolor(WHITE);
moveto(i,200+(int)(w[i][2]/5));
lineto(i,200+(int)(w[i][2]/5)+1);
}
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -