C语言课程设计电场线_第1页
C语言课程设计电场线_第2页
C语言课程设计电场线_第3页
C语言课程设计电场线_第4页
C语言课程设计电场线_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言课程设计PAGE1电场线一目的设计程序,模拟两个等量异号电荷电场线,并在计算机上显示出来。二硬件环境CPU(PentiumDual-CoreE5400),内存(2GB),硬盘(500GB),显示器(ASUS)等。三软件环境WindowsXP,MyTC5.4.1计算相应位置场强Ex,Ey,E确定两正负电荷的位置计算相应位置场强Ex,Ey,E确定两正负电荷的位置开始以两电荷为圆心,分别画圆电场线条数i=0,1,2,…29由A=Pi/15,计算电场线的初始位置x1=200+10*cosA,y1=250-10*sinA计算下一位置x2=x1+Ex/E,y2=y1+Ey/E画线(生成电场线)x1=x2,y1=y2结束(x-x2)*(x-x2)+(y-y2)*(y-y2)>r*r五调试情况1、有一些输入错误,经提示找到语法错误并改正。2、正电荷水平向左发出的电场线无法回到负电荷是图像不太对称,故用if(A!=PI)将其除去。六程序运行结果七心得体会通过这次课程设计,我了解学习了C语言绘图函数及其功能,复习了C语言编程的基本知识,运用这些函数,按照老师要求基本完成了这次课程设计的任务,虽然过程中出现了许多错误,经过自己查阅相关资料和在同学的相互帮助下,终于完成了,有一种成就感。我更认识到合作的重要性,做事要有耐心,有想法要勇于尝试,才能得到正确结果,同时要注重理论联系实际学以致用。八附录(源程序代码)#include<stdio.h>#include<math.h>#include<graphics.h>#definePI3.141main(){intgd=DETECT,gm;/*进行图形初始化*/doublex1,x2,y1,y2,r1,r2;doubleEx1,Ex2,Ey1,Ey2,Ex,Ey,E,A=0.0;inti,j;initgraph(&gd,&gm,"");setbkcolor(0);setlinestyle(1,0,1);line(300,0,300,500);/*画y坐标轴(虚线)*/setlinestyle(0,0,1);setfillstyle(1,RED);circle(200,250,10);floodfill(200,250,15);line(195,250,205,250);line(200,245,200,255);/*画正电荷*/setfillstyle(1,2);circle(400,250,10);floodfill(400,250,15);line(395,250,405,250);/*画负电荷*/for(i=0;i<30;i++)/*定义电场线条数*/{if(A!=PI)/*除去与x轴夹角为PI的电场线*/x1=200+10*cos(A);y1=250-10*sin(A);for(j=0;j<30000;j++){r1=sqrt(pow(x1-200,2)+pow(250-y1,2));Ex1=(x1-200)/pow(r1,3);Ey1=(y1-250)/pow(r1,3);/*计算正电荷电场线在(x1,y1)处场强的x轴和y轴分量*/r2=sqrt(pow(400-x1,2)+pow(250-y1,2));Ex2=(400-x1)/pow(r2,3);Ey2=(250-y1)/pow(r2,3);/*计算负电荷电场线在(x1,y1)处场强的x轴和y轴分量*/Ex=Ex1+Ex2;Ey=Ey1+Ey2;E=sqrt(pow(Ex,2)+pow(Ey,2));/*计算总场强*/x2=x1+Ex/E;y2=y1+Ey/E;line(x1,y1,x2,y2);x1=x2;y1=y2;if(pow(x1-400,2)+pow(y1-250,2)<=100){break;}/*生成电场线并设置电场线的终止于负电荷*/}A=A+PI/15;}while(!kbhit());closegraph();}波的合成一目的设计程序,模拟两列波的叠加,并在屏幕上显示出来。二硬件环境CPU(PentiumDual-CoreE5400),内存(2GB),硬盘(500GB),显示器(ASUS)等。三软件环境操作系统:WindowsXP 软件:MyTC5.4.1开始输入a1,a1,w1,w2,v1,v2的值开始输入a1,a1,w1,w2,v1,v2的值定义波形个数t=1,2,…..,N定义波的传播距离x=0,1,2,……,999计算y1=a1*cos(w1*(t-x/v1))+80计算y2=a2*cos(w2*(t+x/v2))+200计算y=y1+y2+100画线从(x,y10)到(x+1,y1)画线从(x,y20)到(x+1,y2)画线从(x,y0)到(x+1,y)结束五程序调试情况1、有一些输入错误,经提示找到语法错误并改正。2、设置颜色函数位置有误,通过查阅越资料,我们将该函数放在所画线前,该问题得到了解决。六程序运行结果七心得体会通过这次课程设计,我了解学习了C语言绘图函数及其功能,复习了C语言编程的基本知识,运用这些函数,按照老师要求基本完成了这次课程设计的任务,虽然过程中出现了许多错误,经过自己查阅相关资料和在同学的相互帮助下,终于完成了,有一种成就感。我更认识到合作的重要性,做事要有耐心,有想法要勇于尝试,才能得到正确结果,同时要注重理论联系实际学以致用。八附录(源程序代码)#include<stdio.h>#include<math.h>#include<graphics.h>#defineN100main(){intx,x0,y,y0,y1=0,y2=0,y10,y20,t=0;doublea1,a2,w1,w2,v1,v2;intgd=DETECT,gm;printf("Pleaseinputa1a2w1w2v1v2:");scanf("%lf%lf%lf%lf%lf%lf",&a1,&a2,&w1,&w2,&v1,&v2);/*输入数据*/initgraph(&gd,&gm,"");setbkcolor(BLACK);setcolor(WHITE);/*设置背景和线条颜色*/for(t=0;t<N;t++)/*设置动态波形*/{delay(30000);cleardevice();setlinestyle(1,0,1);setcolor(8);line(0,80,1000,80);line(0,200,1000,200);line(0,380,1000,380);setlinestyle(0,0,1);y10=a1*cos(w1*(t-1/v1))+80;y20=a2*cos(w2*(t-1/v1))+200;y0=y1+y2+100;for(x=0;x<1000;x++)/*定义波传播距离*/{y1=a1*cos(w1*(t-x/v1))+80;y2=a2*cos(w2*(t-x/v2))+200;y=y1+y2+100;setcolor(3);line(x,y10,x+1,y1);setcolor(3);line(x,y20,x+1,y2);setcolor(5);line(x,y0,x+1,y);/*生成波形图*/y10=y1;y20=y2;y0=y;}}while(!kbhit());closegraph();}分子热运动一目的1、学会数值求解运动方程的verlet方法。2、掌握分子热运动的基本思想,并使用verlet方法编写分子动力学基本程序,模拟微小团簇的热运动,并输出。二硬件环境CPU(PentiumDual-CoreE5400),内存(2GB),硬盘(500GB),显示器(ASUS)等。三软件环境操作系统:WindowsXP 软件:MyTC5.4.1开始定义七个粒子初始位置令初始速度均为零开始定义七个粒子初始位置令初始速度均为零计算初始位置(a=0)时的位置、速度、作用力、总势能调用子函数Fxyz()、Fv()、Ff()、U()计算下一位置(a++)的相应参数输入n的值结束a<n?是是否否否否五原理在一个孤立系统中,N个粒子给予初始位置,初始速度。有牛顿第二定律可以解出和然后由verlet公式(h为时间间隔,令为0.00466.)可以由n时刻求出n+1时刻的位置和速度。两粒子间的势能只与这两粒子的距离有关:。由公式可求出其中是参量,是两粒子间距离。分别表示第n时刻第i个粒子在x,y,z方向受到的合力。通过约化单位制=1,=1,m=1。把以上三个公式代入varlet公式即可求出n时刻每个粒子的位置和速度。六程序调试情况1、有一些输入错误,经提示找到语法错误并改正。2、起初使用递归方法经常益处,最后用直接赋值,避免递归的方法解决了该问题。七程序运行结果八心得体会通过这次课程设计,我了解学习了C语言绘图函数及其功能,复习了C语言编程的基本知识,运用这些函数,按照老师要求基本完成了这次课程设计的任务,虽然过程中出现了许多错误,经过自己查阅相关资料和在同学的相互帮助下,终于完成了,有一种成就感。我更认识到合作的重要性,做事要有耐心,有想法要勇于尝试,才能得到正确结果,同时要注重理论联系实际学以致用。九、附录(源程序代码)#include<stdio.h>#include<math.h>#include<graphics.h>#defineN7#defineh0.005466doubleVx[N],Vy[N],Vz[N],Fx[N],Fy[N],Fz[N],rij,u,n;doublex[N]={-1.343659,0.393647,0.756033,0.741549,-0.034382,-0.354385,0.040196};doubley[N]={0.445998,-0.328215,-0.465412,0.556876,1.312412,-0.539929,0.318270};doublez[N]={1.419669,1.712890,0.663500,1.155653,0.807389,0.927735,0.349577};/*定义并设定七个分子的初始位置*/inti,j;doublea;voidFxyz();/*定义位置坐标函数*/voidFf();/*定义作用力函数*/voidFv();/*定义速度函数*/voidU();/*定义系统总势能函数*/main()/*主函数*/{intgd=DETECT,gm;printf("Pleaseinputn(n>10000):");scanf("%lf",&n);initgraph(&gd,&gm,"");for(a=0;a<n;a++){Fxyz();/*位置、速度、作用力子函数*/Fv();Ff();}U();/*系统总势能子函数*/for(i=0;i<N;i++){printf("x=%9lf,y=%9lf;z=%9lf\n",x[i],y[i],z[i]);}printf("u=%lf\n",u);while(!kbhit());closegraph();}voidFxyz(){for(i=0;i<N;i++){setcolor(1);circle(300+20*x[i],300+20*y[i],2);/*画七个分子并设定其大小*/x[i]+=h*Vx[i]+h*h*Fx[i]/2;/*计算每个分子下一位置的坐标*/y[i]+=h*Vy[i]+h*h*Fy[i]/2;z[i]+=h*Vz[i]+h*h*Fz[i]/2;setcolor(15);/*分子颜色设置为白色*/circle(300+20*x[i],300+20*y[i],2);floodfill(300+20*x[i],300+20*y[i],15);}}voidFf()/*计算每个分子受到其他六个分子的作用力*/{for(i=0;i<N;i++){Fx[i]=0.0,Fy[i]=0.0,Fz[i]=0.0;for(j=i+1;j<N;j++){rij=sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2)+pow(z[i]-z[j],2));Fx[i]+=48*(x[i]-x[j])*(pow(1/rij,14)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论