Консультация № 137486
19.05.2008, 12:49
30.00 руб.
0 2 0
Здравствуйте, помогите пожалуйста:
Несколько одноименных точечных зарядов (их величины задаются) помещаются на не проводящую окружность единичного радиуса так, что они могут свободно скользить вдоль него. Определить положение равновесия этой системы зарядов.

дополнительные данные в приложении.

Приложение:
входные величины - величины зарядов (одноменные)выходные - углы, т.к. их проще отслеживатьв сущности надо сделать:1 заряд закрепляем -- остается (эн-1) зарядих положение задается (эн-1) переменной -- угламинадо решить систему (эн-1) уравнения. неизвестные -- это углыуравнения => равенство нулю силы, действующей на зарядэту систему надо решить. точно не знаю но возможно ее решить методом Гаусса (http://www.avva14.k66.ru/numerical/index.html)и желательно с применением алгоритма:unit gauss;{------------------------------------------------------------}interfaceconst ndim = 20;type d_vector = array[1..ndim] of double; d_matrix = array[1..ndim,1..ndim] of double;procedure leq( a : d_matrix; var b : d_vector; n : word);implementation{------------------------------------------------------------}procedure leq( a : d_matrix; var b : d_vector; n : word);{Решение системы линейных уравнений методом Гаусса.На входе -- матрица системы a, число уравнений n и вектор-столбец b.На выходе решение системы содержится в векторе b.}var i,j,k,l : word; s,t : double;begin if (n > ndim) then n := ndim;{ Каждое уравнение делится на наибольший элемент соответствующей строки матрицы a.} for i := 1 to n do begin s := abs(a[i,1]); for k := 2 to n do begin t := abs(a[i,k]); if ( t > s) then s := t; end; for k := 1 to n do a[i,k] := a[i,k]/s; b[i] := b[i]/s; end;{ ПРЯМОЙ ХОД.} for k := 1 to n do begin{ Поиск j-ого уравнения, имеющего наибольший a[j,j].} j := k; s := abs(a[k,k]); for i := (k+1) to n do begin t := abs(a[i,k]); if ( t > s) then begin s := t; j := i; end end;{ найденное уравнение меняется местами с текущим -- k-ым} if ( j <> k) then begin for l := k to n do begin s := a[j,l]; a[j,l] := a[k,l]; a[k,l] := s; end; s := b[j]; b[j] := b[k]; b[k] := s; end;{ делим k-ое уравнение на a[k,k].} s := a[k,k]; a[k,k] := 1.0; for l := (k+1) to n do a[k,l] := a[k,l]/s; b[k] := b[k]/s;{ в этом цикле -- исключение столбца ниже диагонали.} for i := (k+1) to n do begin s := a[i,k]; a[i,k] := 0.0; for l := (k+1) to n do a[i,l] := a[i,l] - a[k,l]*s; b[i] := b[i] - b[k]*s end; end;{ ОБРАТНЫЙ ХОД.}for i := (n-1) downto 1 do begin s := b[i]; for k := (i+1) to n do s := s - a[i,k]*b[k]; b[i] := s endend;{------------------------------------------------------------}end.

Обсуждение

Неизвестный
19.05.2008, 15:33
общий
Уточняющий вопрос: заряды могут скользить вдоль <b>окружности</b> или же вдоль её <b>радиуса</b>?
Неизвестный
19.05.2008, 18:13
общий
вдоль радиуса, т.е. к центру окружности - нет. а вот что значит скользить по окружности, я немного не понимаю. задаются одноименные величины зарядов, например в кулонах(1 Кл, 3 Кл, 5 Кл), а на выходе выдаются углы, например 10, 48 и 268 градусов, все заряды никуда с единичной окружности не перемещаются в пространство, они могут располагаться только на окружности.
Форма ответа