Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2008, 19:59   #1
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию Физика. построить график пространственного распределения вектора магнитной индукции поля проводника

Цитата:
Тема 2 Исследование магнитного поля прямого проводника с током.
Исходные данные: L = 50 см – длина проводника; I = 14 А – сила тока в проводнике.
Требуется построить график пространственного распределения вектора магнитной индукции поля проводника и линии магнитной индукции поля.
Код:
S:=0.000000000008854187817620;  // 8.85418781762010 * в минус двенадцатой степени
E0:= 4*pi*S;
dl:=0.5;
n:=500;
if label2.Caption='0' then
begin
Series1.Clear; 
I:=14;   
for j:=1 to n do   // сантиметры
 begin
 R:=j/100;     //радиус
 B:=I/2*pi*S*R; //вот формула вычисления индукции B
 dF:=I*B*dl;///*sin(90) = 1;           //Закон Ампера
Исследую формулы (2 последние строчки), но прямолинейность графиков, заставляет задуматься о неправильности решения.

Возможно, кто-нибудь разбирается в физике и поможет мне, по какой формуле нужно построить график?
Alar вне форума Ответить с цитированием
Старый 08.06.2008, 20:49   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

У можно увидеть целиком программу(в архиве) и то что она рисует?....
Чтоб примерно увидеть что там выходит...
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 08.06.2008, 20:56   #3
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
j:integer;
x,y :extended;
E0:extended;
B,I,R,S: extended;
n:integer;
dl:extended;//длина
dF:extended;
begin
S:=0.000000000008854187817620;  // 10 в минус двенадцатой степени
E0:= 4*pi*S;
dl:=0.5;
n:=500;
if label2.Caption='0' then
begin
Series1.Clear; // чистота залог здоровья
I:=14;//strtoint(label2.Caption);      // ток
for j:=1 to n do   // сантиметры
 begin
 R:=j/100;     //радиус
 B:=I/2*pi*S*R; //вот она формула выяисления индукции B
 dF:=I*B*dl;///*sin(100);           //Закон Ампера
 y:=dF;
 x:=R;
 Series1.AddXY(x,y);   // для тех кто не знает, это график рисуется
 Application.ProcessMessages;
 end;
end;
Button и chart

на форму кидай. рисует прямые. Если поэкссперементировать с углом наклона вектора магнитной индукwии B, то можно получить синусоиду.
А вообще, я слабо представляю, что должно получиться


P.S. это курсовик по физике у меня такой, а по алгоритмизации нас сортировкам учат )
Alar вне форума Ответить с цитированием
Старый 08.06.2008, 21:28   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Alar, это чего-то не то. Вот эта (B:=I/2*pi*S*R) формула должна, если память не подводит, выглядеть как B = mI/2пR (m - магнитная проницаемость), Не понял ещё, почему в цикле увеличивается радиус? И по какому контуру идёт интегрирование, если закон Ампера? И где в условии про силу? Условие, кстати так и не осилил Там направление вектора магнитной индукции и силовые линии поля надо нарисовать или чего??
B_N вне форума Ответить с цитированием
Старый 08.06.2008, 21:43   #5
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
[ B = mI/2пR (m - магнитная проницаемость),
B:=E0*I/2*pi*R; да, согласен, есть такая формула. но этого мало.


Цитата:
Сообщение от B_N Посмотреть сообщение
Не понял ещё, почему в цикле увеличивается радиус?
На сколько я понял - нужно определить что-то вне проводника по формуле и построить график изменения.


Цитата:
Сообщение от B_N Посмотреть сообщение
И по какому контуру идёт интегрирование, если закон Ампера?


Цитата:
Сообщение от B_N Посмотреть сообщение
Условие, кстати так и не осилил Там направление вектора магнитной индукции и силовые линии поля надо нарисовать или чего??
Нарисовать надо график в Chart, а что именно я слабо представляю.



Цитата:
Сообщение от B_N Посмотреть сообщение
И где в условии про силу?
I = 14 А – сила тока в проводнике.
Alar вне форума Ответить с цитированием
Старый 08.06.2008, 22:07   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Нее.. Закон Ампера это интеграл по произвольному контуру вокруг проводника, а не по его длине, а "dF:=I*B*dl;" - это сила дествующая на проводник со стороны магнитного поля, я почему и уточняю... Не пойму, что нужно получить по условию, тем более, что вокруг прямого проводника поле концентрическое, а в общем случае его нужно считать по Био-Савару, если я ещё не окончательно всё это забыл.
B_N вне форума Ответить с цитированием
Старый 08.06.2008, 22:15   #7
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
Закон Био-Савара-Лапласа для элемента проводника с током
dB = m*I*dl/4*Pi*r*r
где dl - элемент длины проводника с током; r – расстояние до точки, где определяется индукция магнитного поля.
Я так понимаю это? В результате должны получить понижающиеся прямые?
сейчас прикреплю к форуму, что получилось


поле пpямолинейного пpоводника с током выpажается фоpмулой:
Alar вне форума Ответить с цитированием
Старый 09.06.2008, 01:24   #8
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Вот что получилось.
Вложения
Тип файла: rar физика проект.rar (81.9 Кб, 29 просмотров)

Последний раз редактировалось Alar; 09.06.2008 в 02:59. Причина: Последняя версия в 3 часа ночи :)
Alar вне форума Ответить с цитированием
Старый 09.06.2008, 01:25   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

В смысле прямые? Это векторный закон, для любой точки даст вектор индукции в зависимости от расположения проводника. Там ещё в числителе должно быть векторное произведение dl х r... Просто он вроде бы здесь не нужен, если только для концов проводника, просто посчитать индукцию B = mI/2пR, а направление вектора - по правилу правой руки, оно будет поперёк проводника и образовывать цилиндры вокруг него.... Сейчас сам пойду книжку смотреть, не помню уж не фиги

----------------------

В общем изобразил я вот эдакую загогулину:
Код:
procedure TForm1.FormDblClick(Sender: TObject);
const
    ppmm = 2;               // pixels per mm
    m = (4 * pi) * 1E-7;    // магнитная постоянная
var
    x : integer;
    y : integer;
    xf  : XFORM;
    B   : extended;
    L   : extended;
    dl  : extended;
    x1  : extended;
    I   : extended;
    r   : extended;
    dx, dy  : extended;
begin

    xf.eDx := self.ClientWidth shr 1;
    xf.eDy := self.ClientHeight shr 1;

    xf.eM11 := 1;
    xf.eM22 := -1;
    xf.eM12 := 0;
    xf.eM21 := 0;

    SetGraphicsMode(self.Canvas.Handle, GM_ADVANCED);
    SetWorldTransform(self.Canvas.Handle, xf);

    // Проводок

    L := 0.5;
    dl := 0.1;
    I := 14;

    Rectangle(
            self.Canvas.Handle,
            - trunc(( 1000 * L / 2) / ppmm) ,
            2,
            trunc(( 1000 * L / 2) / ppmm),
            -2);


    for x := -(self.ClientWidth shr 1) to (self.ClientWidth shr 1) do begin
        for y := (self.ClientHeight shr 1) downto -(self.ClientWidth shr 1) do begin

            B := 0.0;
            x1 := 0.0;

            while ( x1 < L ) do begin
                dx := x * ppmm - (x1 - L / 2);
                dy := y * ppmm;
                r := sqrt (sqr(dx) + sqr(dy));
                B := B + ( (m * I * dl * (dy / r)) / (4 * pi * r * r) );
                x1 := x1 + dl;
            end;

            B := 1e11 * B;      // Масштабный множитель

            if abs( abs(B) - 0.125) < 0.01 then begin
                SetPixel(self.Canvas.Handle, x, y, $FF00FF);
            end
            else if abs( abs(B) - 0.25) < 0.01 then begin
                SetPixel(self.Canvas.Handle, x, y, $FFFF00);
            end
            else if abs(abs(B) - 0.5) < 0.01 then begin
                SetPixel(self.Canvas.Handle, x, y, $FF0000);
            end
            else if abs(abs(B) - 0.75) < 0.01 then begin
                SetPixel(self.Canvas.Handle, x, y, $00FF00);
            end
            else if abs(abs(B) - 1) < 0.01 then begin
                SetPixel(self.Canvas.Handle, x, y, $0000FF);
            end
            else if abs(abs(B)) < 0.005 then begin
                SetPixel(self.Canvas.Handle, x, y, 0);
            end

        end;
    end;
end;
Старался не напутать... Цветные "уши" - это не силовые линии, а срез эквипотенциальных поверхностей.
B_N вне форума Ответить с цитированием
Старый 09.06.2008, 01:36   #10
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

посмотри мое вложение,
http://programmersforum.ru/showpost....09&postcount=8

с увеличением радиуса, увеличивается поле, это правильно?
Радиус определел на конце проводника.


угол альфа2 = 90 градусов

добавил - клик по image - изменяет ток.

Последний раз редактировалось Alar; 09.06.2008 в 01:42. Причина: добавил - клик по image - изменяет ток.
Alar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как построить график Nijaz Общие вопросы Delphi 5 09.06.2014 11:25
как построить график в паскале? Vitas1234 Паскаль, Turbo Pascal, PascalABC.NET 1 11.06.2008 16:53
Построить график в Паскале. LEX.darnica Помощь студентам 3 28.11.2007 18:11
График нормального распределения Сергей_ Microsoft Office Excel 2 17.11.2007 14:06