Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Программа построения множества силовых линий





 

program sil_linii;

uses graph,crt;

label 1,2,3,4,5;

type mas=array[1..10] of string;

mas1=array[1..3] of integer;

var

q1,q2,k,w,r,y1,y2,y,i,l,qq:integer;

x,x1,x2,x3,x4,fx,fy,r1,r2,r3,r4,r5,r6,u,o,a,a1,n:real;

p:mas;

aass:text;

t1:mas1;

t:mas1;

st:string;

ch,key,chh:char;

functionkey:boolean;

procedure grinit;

var gd,gm:integer;

begin

gd:=detect;

initgraph(gd,gm,'');

if graphresult<>grok then halt(1);

end;

procedure wait;

begin

repeat

until keypressed

end;

procedure mes1(tt,tt1:mas1;pp:mas);

begin

setcolor(250);

outtextxy(t[i],t1[i],p[k]);

end;

procedure lin(qq1,qq2,ll:integer;aa:real);

begin

y:=y2;

repeat

x3:=x-l/2;

x4:=x+l/2;

r1:=sqrt(sqr(x3)+sqr(y));

r2:=sqrt(sqr(x4)+sqr(y));

r5:=r1*r1*r1;

r6:=r2*r2*r2;

fx:=q1*x3/r5+q2*x4/r6;

fy:=(q1/r5+q2/r6)*y;

if fy=0 then exit;

x1:=y2*fx/fy;

x:=x+x1;

u:=y+130;

o:=x+320;

if (u<320) and (u>0) and (o<638) and (u*o>0) then

begin

writeln(aass,o,u);

putpixel(round(o),round(u),250);

end;

y:=y+y2;

until (y<220/y2);

end;

procedure lin1(qq1,qq2,ll:integer;aa:real);

begin

y:=y2;

repeat

x3:=x-l/2;

x4:=x+l/2;

r1:=sqrt(sqr(x3)+sqr(y));

r2:=sqrt(sqr(x4)+sqr(y));

r5:=r1*r1*r1;

r6:=r2*r2*r2;

fx:=q1*x3/r5+q2*x4/r6;

fy:=(q1/r5+q2/r6)*y;

if fy=0 then exit;

x1:=y2*fx/fy;

x:=x+x1;

u:=y+130;

o:=x+320;

if (u<320) and (u>0) and (o<638) and (u*o>0) then

begin

writeln(aass,o,u);

putpixel(round(o),round(u),250);

end;

y:=y+y2;

until (y>220/y2);

end;

procedure ugol(yy,aa:real;yy1,yy2,qq1,qq2:integer);

begin

repeat

if (q2>0) and (q1>0) then a:=a+a1*q1/q2

else

if q1=0 then a:=a+a1*0.5

else

if q2=0 then a:=a+a1

else

a:=a+a1*abs(q1/q2);

repeat

if(a>0) and (a<pi) then

begin

y2:=y1;

x:=l/2+y2/(sin(a)/cos(a));

end;

if (a>pi) and (a<2*pi) then

begin

y2:=-y1;

x:=l/2+y2/(sin(a)/cos(a));

end;

if (a>2*pi) and (a<3*pi) then

begin

y2:=y1;

x:=-l/2+y2/(sin(a)/cos(a));

end;

if (a>3*pi) and (a<4*pi) then

begin

y2:=-y1;

x:=-l/2+y2/(sin(a)/cos(a));

end;

lin(q1,q2,l,a);

lin1(q1,q2,l,a);

setfillstyle(10,2);

fillellipse(round(320+l/2),130,abs(q1),abs(q1));

fillellipse(round(320-l/2),130,abs(q2),abs(q2));

if a<2*pi then a:=a+a1;

until a>2*pi

until a>4*pi;

setcolor(250);

if q2<>0 then outtextxy(205,260,'q2='+' '+chr(abs(q2)+48));

if q1<>0 then outtextxy(430,260,'q1='+' '+chr(abs(q1)+48));

if q1>0 then outtextxy(455,260,'+') else

if q1<0 then outtextxy(455,260,'-');

if q2>0 then outtextxy(230,260,'+') else

if q2<0 then outtextxy(230,260,'-');

end;

{=====================}

BEGIN

assign(aass,'c:\aaasss.dat');

rewrite(aass);

grinit;

settextstyle(0,0,0);

setbkcolor(9);

t[1]:=10;

t[2]:=10;

t[3]:=200;

t1[1]:=360;

t1[2]:=380;

t1[3]:=310;

q1:=10;

q2:=10;

l:=300;

a1:=0.5;

y1:=2;

a:=0;

ugol(y,a,y1,y2,q1,q2);

i:=1;

k:=9;

i:=2;

k:=10;

wait;

closegraph;

close(aass);

end.

Движение заряженной частицы в магнитном поле

program Zar_mg_pole;

const N=2000;

var H,A,V,ALFA:REAL;

i:integer;

x,y,vx,vy:array[0..N] of real;

RR:TEXT;

begin

assign (RR,'C:\electron.DAT'); rewrite(RR);

A:=80; V:=1.4;

ALFA:=3.14*A/180;

h:=0.05;

x[0]:=1.0; y[0]:=0.0; VX[0]:=V*COS(ALFA);

VY[0]:=V*SIN(ALFA);

for i:=0 to N-1 do

begin

vx[i+1]:=VX[i]+h*vy[i]/x[i];

vy[i+1]:=vy[i]-h*vx[i]/x[i];

x[i+1]:=x[i]+vx[i]*h;

y[i+1]:=y[i]+vy[i]*h;

end;

for i:=0 to n do begin

writeln(RR,x[i],' ',y[i])

end;

close(RR);

end.

Возмущение орбиты электрона в однородном

Магнитном поле движущимся протоном

Program elipr;

Const b=0.000544662;

Const n=1200;

Var i:integer;

xe,ye,vxe,vye,xp,yp,vxp,vyp:array[0..n] of real;

ee,pp:text;

h:real;

begin

assign(ee,'C:\elektron.dat');rewrite(ee);

assign(pp,'C:\proton.dat');rewrite(pp);

h:=0.01;

xe[0]:=0;ye[0]:=-1;vxe[0]:=1;vye[0]:=0;

xp[0]:=0;yp[0]:=1;vxp[0]:=1;vyp[0]:=0;

for i:=0 to n-1 do

begin

xe[i+1]:=xe[i]+vxe[i]*h;

ye[i+1]:=ye[i]+vye[i]*h;

vxe[i+1]:=vxe[i]+h*(-vye[i]+(xp[i]-xe[i])/3*exp(abs(xp[i]-xe[i])));

vye[i+1]:=vye[i]+h*(vxe[i]+(yp[i]-ye[i])/3*exp(abs(yp[i]-ye[i])));

xp[i+1]:=xp[i]+vxp[i]*h;

yp[i+1]:=yp[i]+vyp[i]*h;

vxp[i+1]:=vxp[i]+b*h*(vyp[i]-(xp[i]-

xe[i])/3*exp(abs(xp[i]-xe[i])));

vyp[i+1]:=vyp[i]+(-b)*h*(vxp[i]+(yp[i]-

ye[i])/3*exp(abs(yp[i]-ye[i])));

end;

for i:=0 to n do begin

writeln(ee,xe[i],' ',ye[i]);

writeln(pp,xp[i],' ',yp[i])

end;

close(ee);

close(pp);

end.

Пространственный осциллятор

program os;

const w=2;n=1000;a=0.05;

var i:integer;

h,k,w1,w2,w3:real;

x,y,z,vx,vy:array [0..n] of real;

os1,os2,os3:text;

begin

assign(os1,'d:\os1.dat');rewrite(os1);

assign(os2,'d:\os2.dat');rewrite(os2);

assign(os3,'d:\os3.dat');rewrite(os3);

begin h:=0.02;w1:=2;w2:=2;w3:=2;

x[0]:=10;x[1]:=10;z[0]:=0;

y[0]:=10;y[1]:=10;z[1]:=0;

for i:=1 to (n-1) do begin

x[i+1]:=-w1*w1*x[i]*h*h+w*(y[i]-y[i-1])*h+2*x[i]-x[i-1]-a*(x[i]-x[i-1])*h;

y[i+1]:=-w2*w2*y[i]*h*h-w*(x[i]-x[i-1])*h+2*y[i]-y[i-1]-a*(y[i]-y[i-1])*h;

z[i+1]:=-w3*w3*z[i]*h*h+2*z[i]-z[i-1];

vx[i]:=(x[i]-x[i-1])/h;

vy[i]:=(y[i]-y[i-1])/h;

end;

for i:=0 to n do

begin

writeln(os1,x[i]+1000,y[i]+1000);

writeln(os2,i*h,' ',x[i]+1000);

writeln(os3,vx[i]+1000,vy[i]+1000);

end;

close(os1); close(os2); close(os3);

end;

Движение заряженных частиц

В кулоновском поле

program SG;

const N=1200;

var H,A,V,ALFA:real;

i:integer;

X,y,vx,vy:array [0..N] of real;

rr:text;

begin

assign (rr,'c:\m nb4.dat');rewrite(rr);

a:=60; v:=1.4;

alfa: =3.14*a/180;

h:=0.001;

x[0]:=1.0;y[0]:=0.0;

vx[0]:=v*cos(alfa);

vy[0]:=v*sin(alfa);

for i:=0 to N-1 do

begin

vx[i+1]:=vx[i]-h*ABS(x[i])/((x[i]*x[i]+y[i]*y[i])*

(sqrt(x[i]*x[i]+y[i]*y[i])));

vy[i+1]:=vy[i]-h*y[i]/((y[i]*y[i]+x[i]*x[i])*

(sqrt(x[i]*x[i]+y[i]*y[i])));

x[i+1]:=x[i]+vx[i]*h;

y[i+1]:=y[i]+vy[i]*h;

end;

for i:=0 to n do begin

writeln (rr,x[i],' ',y[i])

end;

close (rr);

end.







Дата добавления: 2015-10-12; просмотров: 395. Нарушение авторских прав; Мы поможем в написании вашей работы!




Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...


Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Принципы, критерии и методы оценки и аттестации персонала   Аттестация персонала является одной их важнейших функций управления персоналом...

Пункты решения командира взвода на организацию боя. уяснение полученной задачи; оценка обстановки; принятие решения; проведение рекогносцировки; отдача боевого приказа; организация взаимодействия...

Что такое пропорции? Это соотношение частей целого между собой. Что может являться частями в образе или в луке...

Мелоксикам (Мовалис) Групповая принадлежность · Нестероидное противовоспалительное средство, преимущественно селективный обратимый ингибитор циклооксигеназы (ЦОГ-2)...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

Studopedia.info - Студопедия - 2014-2025 год . (0.014 сек.) русская версия | украинская версия