Информатика -продвинутый курс


И ПРОЦЕССОВ В ПРИБЛИЖЕНИИ СПЛОШНОЙ СРЕДЫ - часть 6


Детали процедуры очевидны; формулы, аналогичные (7.44), имеют вид:

(7.45)

После прохождения всех горизонтальных и вертикальных линий сетки находятся все те точки на этих линиях, в которых потенциал равен

. Проведя — мысленно или на бумаге — кривую, плавно проходящую через ближайшие точки, получаем искомую изолинию (разумеется лишь в том случае, если значение
 выбрано разумно и такая линия есть в пределах рассматриваемой области). Затем берем другие значения
 и повторяем указанную процедуру, получая таким образом семейство изолиний.

Приведенная ниже программа реализует указанные построения. Предполагается, что все заряды лежат в одной плоскости, и изолинии строятся тоже лишь в этой плоскости.

 

Программа 149.

Программа построения линий равного потенциала.

Program Potential;

Uses Crt, Graph;

Const N = 100; (Размер сетки NxN}

Var X, У, Q, G : Array[1..10] Of Real; F : Array[0..N, 0..N] Of Real;

    I, J, M, L, K: Integer; A, B, R: Real;

Begin

 WriteLn('Сколько зарядов? (не более 10)'); ReadLn(K);

 Write('Ведите координаты x, у и величины зарядов q');

 WriteLn('(координаты - в диапазоне 0-1)');

 For I := 1 То К Do

Begin Write('х[', I, ']=');

ReadLn(X[I]); Write('y[', I, ']='); ReadLn(Y(I]);

Write('q[', I, ']= '); ReadLn(Q[I])

  End;

For I := 0 To N Do

For J := 0 To N Do

For M := 1 To K Do

Begin

R := Sqrt(Sqr(I / N - X[M]) + Sqr(J / N - Y[M]));

  If R>=1E-6 Then F(I,J]:= F(I,J]+Q[M]/R Else F[I,J]:=1E+8

       End;

Write('Сколько построить изолиний? (не более 10)'); ReadLn(L);

WriteLn('Введите значения потенциала g для построения изолиний');

For I := 1 То L Do

Begin Write ('g[', I, ']='); ReadLn(G(I]) End;

DetectGraph(I, J); InitGraph(I, J, ");

For I := 1 To К Do

Begin

A := X[I] * GetMaxX; В := (1 - Y[I]) * GetMaxY;

Circle(Round(A), Round(B), 4); FloodFill(Round(A), Round(B),

GetColor) ;

End;

For M := 1 To L Do

Begin

B := G[M]; SetColor(M);

For I := 0 To N Do

For J := 0 To N - 1 Do

If (F[I, J] - B) * (F[I, J + 1] - В) < О




Начало  Назад  Вперед