БИНАРНЫЙ УРОК «ФИЗИКА ИНФОРМАТИКА» ТЕМА УРОКА: ПОСТРОЕНИЕ ЭКВИПОТЕНЦИАЛЬНЫХ ЛИНИЙ НЕСКОЛЬКИХ ТОЧЕЧНЫХ ЗАРЯДОВ. Цели урока: 1) Научить рассчитывать потенциал в каждой точке координатной плоскости, в которой находятся заряды, и строить эквипотенциальные линии (сечения эквипотенциальных поверхностей координатной плоскость xOy) в среде языка программирования Паскаль. 2) Развить внимание, самостоятельность при выполнении задачи. 3) Сформировать навык пользования созданной программой (её корректировки) для других случаев (другое количество зарядов, их расположение и знаки). 4) Сформировать единое представление о мире, его законах через объединение учебных предметов. Ход урока: I. Организационный момент. Сообщить тему урока, сформулировать цели II. Урок физики. 1) Актуализация опорных знаний. 2) Вывод формулы расчёта потенциала в некоторой точке координатной плоскости для n точечных зарядов: kq1 ( x1 x) ( y1 y) 2 2 kq2 ( x2 x) ( y2 y) 2 n i 1 ... 2 kqn ( xn x) ( yn y) 2 2 , ( xi x) 2 ( yi y ) 2 kqi где потенциал, k = 9 109 Нм Кл 2 (x1, y1), (x2, y2), …, (xi, yi), …,(xn, yn) координаты 1, 2, …, i, …, n точечного заряда, q1, q2, …, qi, …, qn величины зарядов. II. Урок информатики. 1) Актуализация опорных знаний. (Изображение графиков функций). 2) Постановка проблемы: 1. Необходимо изобразить линии, где потенциал на плоскости одинаков. 2. Как найти такие точки? Ведь наша формула находит по координатам точек потенциал, а не наоборот. А вывести обратную формулу мы не в состоянии. 3. Решать будем следующим образом: а) Найдём потенциалы для всех точек экрана, б) Найдём минимальное значение потенциала (f_min), в) Зададим шаг изменения потенциала (step)), г) Разными цветами изображаем точки с потенциалами, попавшими в разные промежутки: (f_min + k*step; f_min +(k+1)*step). д) В зависимости от качества изображения подбираем шаг (step), множитель шагов (k). 3) Реализация алгоритма в программу. (Строим эквипотенциальные линии для двух зарядов: x1=200, y1=240, q1=100; x2=400, y2=240, q2=-50) program ekvipotencialnye_linii; uses graph; var gx,gy:integer; x,y,k,x1,y1,x2,y2,c,c1,c2,r1,r2,q1,q2:longint; f,f_min,step:real; begin gx:=detect; gy:=1; initgraph(gx,gy,''); x1:=200; y1:=240; q1:=100; x2:=400; y2:=240; q2:=-50; f_min:=0; for x:=1 to 640 do for y:=1 to 480 do begin if not (((x=x1) and (y=y1)) or ((x=x2) and (y=y2))) then begin f:=q1/sqrt(sqr(x1-x)+sqr(y1-y)) +q2/sqrt(sqr(x2-x)+sqr(y2-y)); if f<f_min then f_min:=f end; end; step:=0.1; for x:=1 to 640 do for y:=1 to 480 do begin if not (((x=x1) and (y=y1)) or ((x=x2) and (y=y2))) then begin c:=2; f:=q1/sqrt(sqr(x1-x)+sqr(y1-y)) +q2/sqrt(sqr(x2-x)+sqr(y2-y)); k:=0; while k<= 1000 do begin if (f>f_min+k*step) and (f<f_min+(k+1)*step) then c:=14; k:=k+4 end; putpixel(x,y,c) end; end; if abs(q1)>abs(q2) then begin r1:=10; r2:=trunc(r1*abs(q2/q1)) end else begin r2:=10; r1:=trunc(10*abs(q1/q2)); end; if q1>0 then c1:=4 else c1:=1; if q2>0 then c2:=4 else c2:=1; setcolor(c1); setfillstyle(1,c1); fillellipse(x1,y1,r1,r1); setcolor(c2); setfillstyle(1,c2); fillellipse(x2,y2,r2,r2); end. 4) Изменение программы так, чтобы предполагался ввод данных, и была возможность задавать другое количество точечных зарядов: program ekvipotencialnye_linii; uses graph; var gx,gy:integer; x_t,y_t,k,c_t,n,i:longint; f,f_min,step:real; x,y,q,c,r:array[1..10] of longint; begin writeln('ВВЕДИТЕ КОЛИЧЕСТВО ЗАРЯДОВ: 1<=n<=10'); readln(n); for i:=1 to n do begin writeln('ВВЕДИТЕ КООРДИНАТЫ ',i,' ТОЧКИ'); readln(x[i],y[i]); writeln('ВВЕДИТЕ ВЕЛИЧИНУ ',i,' ЗАРЯДА'); readln(q[i]); if q[i]>0 then c[i]:=4 else c[i]:=1; end; gx:=detect; gy:=1; initgraph(gx,gy,''); f_min:=0; f:=0; for x_t:=1 to 640 do for y_t:=1 to 480 do begin f:=0; for i:=1 to n do begin if not ((x_t=x[i]) and (y_t=y[i])) then begin f:=f+q[i]/sqrt(sqr(x[i]-x_t)+sqr(y[i]-y_t)); if f<f_min then f_min:=f end; end; end; step:=0.1; f:=0; for x_t:=1 to 640 do for y_t:=1 to 480 do begin f:=0; for i:=1 to n do begin if not ((x_t=x[i]) and (y_t=y[i])) then begin c_t:=2; f:=f+q[i]/sqrt(sqr(x[i]-x_t)+sqr(y[i]-y_t)); end; end; k:=0; while k<= 2000 do begin if (f>f_min+k*step) and (f<f_min+(k+1)*step) then c_t:=14; k:=k+4 end; putpixel(x_t,y_t,c_t) end; r[1]:=20; for i:=2 to n do r[i]:=trunc(r[1]*abs(q[i]/q[1])); for i:=1 to n do begin setcolor(c[i]); setfillstyle(1,c[i]); fillellipse(x[i],y[i],r[i],r[i]); end; end. III. Подведение итогов урока.