Разработка алгоритма программы анализа электрических схем узловым методом

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

Рубрика Программирование, компьютеры и кибернетика
Вид отчет по практике
Язык русский
Дата добавления 29.05.2013
Размер файла 1,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ФГБОУ ВПО «Мордовский государственный университет

им. Н.П. ОГАРЕВА»

Факультет математики и информационных технологий

Кафедра систем автоматизированного проектирования

ОТЧЕТ

о прохождении производственной практики

студента 5-го курса

факультета математики и информационных технологий

(спец. прикладная математика и информатика)

группа 503

Шишканова П. В.

Отчет принял

д.т.н., профессор В.Ф.Белов

Саранск 2013

Содержание

Введение

1. Обозначения и термины характерные для электрических систем при изложении узлового метода

2. Изложение узлового метода в применении к электрическим системам

3. Структура программы

4. Листинг программы

Список использованных источников

Приложение

Введение

Объектом исследования являются варианты алгоритма узлового метода, используемые для расчета электрических схем.

Цель практики: разработка алгоритма программы анализа электрических схем узловым методом. Для этого поставлены следующие задачи:

1) Рассмотреть принципиальные электрические схемы;

2) Разработать эквивалентные представления для элементов принципиальных электрических схем;

3) Разработать программу анализа электрической схемы узловым методом;

1. Обозначения и термины характерные для электрических систем при изложении узлового метода

Для получения математических моделей систем в ряде областей техники наиболее известным является узловой метод. Будем излагать узловой метод на примере электрической системы. Введём некоторые обозначения и термины характерные для электрических систем.

I, U, ц - векторы-столбцы токов, напряжений и узловых потенциалов соответственно. Напряжение ветви есть разность потенциалов инцидентных ей узлов, поэтому связь между U и ц даётся через матрицу инциденций:

(1.1)

где - транспонированная матрица.

Разделим ветви эквивалентной схемы на группы ёмкостных, резисторных. индуктивных ветвей и ветвей источников тока, в зависимости от характера соответствующего ветви компонентного уравнения. Будем представлять эти группы векторами токов IC, IR, IL, Ij и векторами напряжений UC, UR, UL, Uj соответственно, т.е.

,

Матрицу инциденций также удобно разделить на подматрицы:

,

где АC - подматрица инцинденций узлов и ёмкостных ветвей; AR - подматрица инцинденций узлов и резистивных ветвей, и т.д.

Будем использовать диагональные матрицы ёмкостей С, сопротивлений R, и индуктивностей L - их диагональные элементы равны соответствующим внутренним параметра.

; ; ;

2. Изложение узлового метода в применении к электрическим системам

Основные положения узлового метода следующие:

1.В качестве базисных координат используются узловые потенциалы;

2.Исходным топологическим уравнением является уравнение равновесия токов в узлах. Это уравнение в матричной форме:

AI=0, или ACIC + ARIR + ALIL + AUIU (2.1)

Компонентные уравнения в матричной форме:

(2.2)

(2.3)

(2.4)

Подстановка (2.2) - (2.4) в (2.1) даёт:

(2.5)

где IU в общем случае есть функция ц, , t, т.е. .

Система (2.5) неудобна для численного решения. В случае линейных уравнений её сводят к системе линейных алгебраических уравнений с помощью преобразований Фурье или Лапласса. В общем случае система (2.5) преобразуется в систему алгебраических и трансцендентных уравнений путём замены производных отношениями конечных разностей:

где h-шаг дискретизации по оси времени (шаг интегрирования), индекс n или п-1 у вектора ц относит значение ц к n-му или к (n-1)-му шагу интегрирования, другими словами, такая замена осуществляется на каждом шаге численного решения. В соответствии с изложенным, аппроксимируем компонентные уравнения (2.2) и (2.4):

' (2.6)

и подставим в (1.9) значения токов, относящиеся к п- му шагу. Тогда

.

и окончательно с учётом (1.8):

(2.7)

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

Следует отметить, что и к началу n-го шага уже вычислены. Решение системы (2.7) даёт ц, далее по (1.8) получаем Un и по компонентным уравнениям вычисляем Iп. Следовательно получены все численные результаты для выполнения нового (п+1) -го шага. При п=1 значения и известны- это начальные условия.

3. Структура программы

Размещено на http://www.allbest.ru/

Модуль, реализующий вычисления.

Размещено на http://www.allbest.ru/

4. Листинг программы

электрический узловой математический листинг

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Buttons, Grids, Menus, ToolWin, ComCtrls,Unit3,

ValEdit,Unit4,Unit5,Unit6, TeeProcs, TeEngine, Chart, Series,ShellAPI,ComObj;

type

TSet=set of 'A'..'X';

TRec=record

image:TImage;

lab:TLabel;

val:real;

end;

TForm1 = class(TForm)

Image1: TImage;

Image2: TImage;

StringGrid1: TStringGrid;

Label3: TLabel;

ColorDialog1: TColorDialog;

MainMenu1: TMainMenu;

N1: TMenuItem;

Edit1: TMenuItem;

PopupMenu1: TPopupMenu;

rotation: TMenuItem;

SetValue1: TMenuItem;

ToolBar1: TToolBar;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

SpeedButton3: TSpeedButton;

SpeedButton7: TSpeedButton;

SpeedButton5: TSpeedButton;

StringGrid3: TStringGrid;

Shape1: TShape;

SpeedButton4: TSpeedButton;

StringGrid4: TStringGrid;

Delete2: TMenuItem;

Analaze1: TMenuItem;

Matrix1: TMenuItem;

name1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

Label1: TLabel;

Button1: TButton;

Button2: TButton;

Button9: TButton;

OpenDialog1: TOpenDialog;

N6: TMenuItem;

N7: TMenuItem;

SaveDialog1: TSaveDialog;

Button3: TButton;

Edit2: TEdit;

Label2: TLabel;

Edit3: TEdit;

Label4: TLabel;

procedure FormCreate(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure rotationClick(Sender: TObject);

procedure SetValue1Click(Sender: TObject);

procedure Image2MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Delete2Click(Sender: TObject);

procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Matrix1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

procedure RepaintImage(value:string;del:boolean;change:boolean);

function Snap(P:TPoint):TPoint;

function Con(k:integer):integer;

procedure Link;

procedure InsertToMatrix;

procedure Rotate(P:TPoint);

procedure SetVal(P:TPoint);

procedure RefreshList;

procedure Del(P:TPoint);

procedure RefKnot;

procedure Paste(P:Tpoint;move:boolean);

procedure Gen_main_Matr;

procedure Gen_matr_bb(var h:real);

procedure Gen_matr_B(var h:real);

function Pos(P:TPoint):string;

function Gauss:boolean;

procedure Calculate(var h:real);

procedure CalcProc;

function Check:boolean;

procedure Chart(var j:real);

procedure CreatSeries;

procedure RefreshMatr1;

procedure Disable;

function SaveAsExcelFile(stringGrid: TstringGrid; FileName: string): Boolean;

end;

var

Form1: TForm1;

R_el:array [1..10] of TRec; //матр. элементов

L_el:array [1..10] of TRec;

C_el:array [1..10] of TRec;

J_el:array [1..10] of TRec;

P_el:array [1..100] of TShape;

Point_matr:array [1..100] of byte; // матр. кол. узлов

Clr_matr:array [1..100] of TColor; //матр. цвета узла

//***********************************************************

Matrix:array of array of integer; //матрици инцеденций

pR:array of array of Double; //параметр. матр. элементов

pC:array of array of Double;

pL:array of array of Double;

AR:array of array of integer; //подматрицы, матрици инцеденций

AC:array of array of integer;

AL:array of array of integer;

AJ:array of array of integer;

B:array of array of Double; //матр. левой части

bb:array of Double;

XR,XC,XL,XJ,XL_0:array of Double; //матр. ф.п. типа потака

YR,YC,YL,YJ,YC_0:array of Double; //подматр. ф.п. типа потенц.

Y:array of Double; // матр. ф.п. типа потенц.

step:real;

dim_n,dim_m:integer; //размер матрици В

mR,mC,mL,mJ:integer; //кол-во элементов R,C...

Clicks : byte; //кол-во кликов на схеме

//нужна для сохранения денных

//************************************************************

flagR,flagC,flagL,flagP,flagJ,flag_l1,flag_l2:Boolean;

flag_move:boolean;

countR,countL,countC,countJ,countP:Byte;

temp_label,temp_el:string;

temp_value:real;

Start,Stop:TPoint;

point_count:integer;

Matr1:array [0..39,0..39] of string; // основ. матрица связий

Matr2:array [0..39,0..39] of integer; //матрица расчета пути

MySet:TSet;

link_color:TColor;

Mouse_pos:TPoint;

implementation

{$R *.dfm}

{$R file.res file.rc}

//***************************БЛОК 1*************************

procedure TForm1.CreatSeries; //процедура создания серий графиков

var i,k:integer;

Ser1,Ser2:TChartSeries;

begin

for i:=0 to mR-1 do

begin

Ser1:=TLineSeries.Create(form4);

Ser2:=TLineSeries.Create(form4);

Form4.Chart1.AddSeries(Ser1);

Form4.Chart2.AddSeries(Ser2);

Ser1.Title:=R_el[i+1].lab.Caption;

Ser2.Title:=R_el[i+1].lab.Caption;

Ser1.Marks.Style:=smsXValue;

Ser2.Marks.Style:=smsXValue;

end;

k:=0;

for i:=mR to (mR+mC-1) do

begin

Ser1:=TLineSeries.Create(form4);

Ser2:=TLineSeries.Create(form4);

Form4.Chart1.AddSeries(Ser1);

Form4.Chart2.AddSeries(Ser2);

Ser1.Title:=C_el[k+1].lab.Caption;

Ser2.Title:=C_el[k+1].lab.Caption;

Ser1.Marks.Style:=smsXValue;

Ser2.Marks.Style:=smsXValue;

inc(k);

end;

k:=0;

for i:=(mR+mC) to (mR+mC+mL-1) do

begin

Ser1:=TLineSeries.Create(form4);

Ser2:=TLineSeries.Create(form4);

Form4.Chart1.AddSeries(Ser1);

Form4.Chart2.AddSeries(Ser2);

Ser1.Title:=L_el[k+1].lab.Caption;

Ser2.Title:=L_el[k+1].lab.Caption;

Ser1.Marks.Style:=smsXValue;

Ser2.Marks.Style:=smsXValue;

inc(k);

end;

k:=0;

for i:=(mR+mC+mL) to (mR+mC+mL+mJ-1) do

begin

Ser1:=TLineSeries.Create(form4);

Ser2:=TLineSeries.Create(form4);

Form4.Chart1.AddSeries(Ser1);

Form4.Chart2.AddSeries(Ser2);

Ser1.Title:=J_el[k+1].lab.Caption;

Ser2.Title:=J_el[k+1].lab.Caption;

Ser1.Marks.Style:=smsXValue;

Ser2.Marks.Style:=smsXValue;

inc(k);

end;

end;

//****************************БЛОК 4************************

procedure TForm1.Calculate(var h:real); //процедура вычисл. матр. Y

var i,j,k:integer; //h-шаг решения

temp:array of Double;

begin

for k:=0 to dim_m-1 do

begin

for i:=0 to dim_n-1 do

Y[k]:=Y[k]+Matrix[i,k]*bb[i]; //Transponir Y=-A(trans)*Fi

Y[k]:=-Y[k];

end;

//*******************************************

for i:=0 to mR-1 do

YR[i]:=Y[i];

k:=0;

for i:=mR to (mR+mC-1) do

begin

YC[k]:=Y[i];

inc(k);

end;

k:=0;

for i:=(mR+mC) to (mR+mC+mL-1) do

begin

YL[k]:=Y[i];

inc(k);

end;

k:=0;

for i:=(mR+mC+mL) to (mR+mC+mL+mJ-1) do

begin

YJ[k]:=Y[i];

inc(k);

end;

//*****************************************

for k:=0 to mR-1 do //XR:=R(-1)*YR

for j:=0 to mR-1 do

if pR[k,j]<>0 then XR[k]:=XR[k]+1/pR[k,j]*YR[j] else XR[k]:=XR[k];

for k:=0 to mL-1 do //XL:=L(-1)*YL

begin

for j:=0 to mL-1 do

if pL[k,j]<>0 then XL[k]:=XL[k]+1/pL[k,j]*YL[j] else XL[k]:=XL[k];

XL[k]:=XL[k]*h+XL_0[k]; //xl_o - val on (n-1) step

end;

SetLength(temp,mC);

for i:=0 to mC-1 do

temp[i]:=YC[i]-YC_0[i];

for k:=0 to mC-1 do //XC:=C(YC-YC_0)/h

begin

for j:=0 to mC-1 do

XC[k]:=XC[k]+pC[k,j]*temp[j];

XC[k]:=XC[k]/h;

end;

//**********************************************************

for i:=0 to mL-1 do

XL_0[i]:=XL[i];

for i:=0 to mC-1 do

YC_0[i]:=YC[i];

//***********************************************************

end;

//***************************БЛОК 5*************************

function TForm1.Gauss:boolean; //Метод Гаусса с выбором главного элемента по всей матрице (схема полного выбора).

var i,j,k,m:integer;

ved_el:double;

Temp:array of array of double;

temp1:array of byte;

max,bufer:double;

col,row:integer;

usl:boolean;

begin

usl:=true;

SetLength(Temp,dim_n,dim_n+1);

SetLength(temp1,dim_n);

for i:=0 to dim_n-1 do

begin

for j:=0 to dim_n-1 do

Temp[i,j]:=B[i,j];

Temp[i,dim_n]:=bb[i];

end;

//********************************

for k:=0 to dim_n-1 do

begin

//************

for m:=0 to dim_n-1 do

if temp1[m]=0 then max:=Temp[m,m];//find first max el

//************

for i:=0 to dim_n-1 do

for j:=0 to dim_n-1 do

if (temp1[i]=0) or (temp1[j]=0) then //check rows

if Temp[i,j]>=max then

begin

max:=Temp[i,j];

col:=j;

row:=i;

end;

// change rows

temp1[col]:=1;

for j:=0 to dim_n do

begin

bufer:=Temp[row,j];

Temp[row,j]:=Temp[col,j];

Temp[col,j]:=bufer;

end;

//**********

end;

for k:=0 to dim_n-1 do

if Temp[k,k]=0 then usl:=false;

if usl=true then

begin

//Gauss programm

ved_el :=Temp[0,0];

for j:=0 to dim_n do

Temp[0,j]:=Temp[0,j]/ved_el;

for k:=1 to dim_n-1 do

begin

for j:=0 to k-1 do

begin

ved_el:=Temp[k,j];

for m:=0 to dim_n do

Temp[k,m]:=Temp[k,m]-Temp[j,m]*ved_el;

end;

ved_el:=Temp[k,k];

for m:=0 to dim_n do

Temp[k,m]:=Temp[k,m]/ved_el;

for i:=k-1 downto 0 do

begin

ved_el:=Temp[i,k];

for m:=0 to dim_n do

Temp[i,m]:=Temp[i,m]-Temp[k,m]*ved_el;

end;

end;

//*************************

for i:=0 to dim_n-1 do

bb[i]:=Temp[i,dim_n];

end;

Gauss:=usl;

end;

//**************************БЛОК 7***************************

procedure TForm1.Gen_matr_B(var h:real); //процедура вычисления левой части, h-шаг

var i,j,k:integer;

B1,B2,B3,B4,B5,B6:array of array of real; //temp matrix

begin

SetLength(B,dim_n,dim_n);

SetLength(B2,dim_n,dim_n);

SetLength(B4,dim_n,dim_n);

SetLength(B6,dim_n,dim_n);

SetLength(B1,dim_n,mC);

SetLength(B3,dim_n,mR);

SetLength(B5,dim_n,mL);

//************************************************

for k:=0 to dim_n-1 do //Ac*C

for j:=0 to mC-1 do

for i:=0 to mC-1 do

B1[k,j]:=B1[k,j]+AC[k,i]*pC[i,j];

for k:=0 to dim_n-1 do //B2:=(Ac*C)*trans(Ac)

for j:=0 to dim_n-1 do

begin

for i:=0 to mC-1 do

B2[k,j]:=B2[k,j]+B1[k,i]*AC[j,i]; // AC[j,i] т.к транспонир

B2[k,j]:=B2[k,j]/h; //B2/h

end;

//**********************

for k:=0 to dim_n-1 do //Ar*R(-1)

for j:=0 to mR-1 do

for i:=0 to mR-1 do

if pR[i,j]<>0 then B3[k,j]:=B3[k,j]+AR[k,i]*(1/pR[i,j]); //R(-1)

for k:=0 to dim_n-1 do //B4:=(Ar*R(-1))*trans(Ar)

for j:=0 to dim_n-1 do

for i:=0 to mR-1 do

B4[k,j]:=B4[k,j]+B3[k,i]*AR[j,i];

//***************************

for k:=0 to dim_n-1 do //Al*L(-1)

for j:=0 to mL-1 do

for i:=0 to mL-1 do

if pL[i,j]<>0 then B5[k,j]:=B5[k,j]+AL[k,i]*(1/pL[i,j]);

for k:=0 to dim_n-1 do //B6:=(Al*L(-1))*trans(AL)

for j:=0 to dim_n-1 do

begin

for i:=0 to mL-1 do

B6[k,j]:=B6[k,j]+B5[k,i]*AL[j,i];

B6[k,j]:=B6[k,j]/h;

end;

//****************************

for i:=0 to dim_n-1 do

for j:=0 to dim_n-1 do

B[i,j]:=B2[i,j]+B4[i,j]+B6[i,j];

end;

//*************************БЛОК 15***************************

procedure TForm1.Disable;

begin

ToolBar1.Enabled:=false;

MainMenu1.Items[2].Items[0].Enabled:=false;

Image1.Enabled:=false;

Button1.Enabled:=true;

end;

//**************************БЛОК 16*************************

procedure TForm1.SetVal(P:TPoint); //процедура установки значения эл.

var

ch:char;

str2:string;

val1,v,code:integer;

val2:real;

begin

if Pos(P)='right' then

begin

ch:=Matr1[P.Y,P.X+1][1];

val1:=StrToInt(Copy(Matr1[P.Y,P.X+1],2,length(Matr1[P.Y,P.X+1])-1));

end

else

if Pos(P)='left' then

begin

ch:=Matr1[P.Y,P.X-1][1];

val1:=StrToInt(Copy(Matr1[P.Y,P.X-1],2,length(Matr1[P.Y,P.X-1])-1));

end

else

if Pos(P)='up' then

begin

ch:=Matr1[P.Y-1,P.X][1];

val1:=StrToInt(Copy(Matr1[P.Y-1,P.X],2,length(Matr1[P.Y-1,P.X])-1));

end

else

if Pos(P)='down' then

begin

ch:=Matr1[P.Y+1,P.X][1];

val1:=StrToInt(Copy(Matr1[P.Y+1,P.X],2,length(Matr1[P.Y+1,P.X])-1));

end;

case ch of

'R':begin

str2:=R_el[val1].lab.Caption;

val2:=R_el[val1].val;

end;

'C':begin

str2:=C_el[val1].lab.Caption;

val2:=C_el[val1].val;

end;

'L':begin

str2:=L_el[val1].lab.Caption;

val2:=L_el[val1].val;

end;

'J':begin

str2:=J_el[val1].lab.Caption;

val2:=J_el[val1].val;

end;

end;

Form3.Edit1.Text:=str2;

Form3.Edit2.Text:=FloatToStr(val2);

Form3.ShowModal;

str2:=Form3.Edit1.Text;

val2:=StrToFloat(Form3.Edit2.Text);

case ch of

'R':begin

R_el[val1].lab.Caption:=str2;

R_el[val1].val:=val2;

StringGrid4.Cells[0,val1]:=str2;

StringGrid4.Cells[1,val1]:=FloatToStr(val2);

end;

'C':begin

C_el[val1].lab.Caption:=str2;

C_el[val1].val:=val2;

StringGrid4.Cells[2,val1]:=str2;

StringGrid4.Cells[3,val1]:=FloatToStr(val2);

end;

'L':begin

L_el[val1].lab.Caption:=str2;

L_el[val1].val:=val2;

StringGrid4.Cells[4,val1]:=str2;

StringGrid4.Cells[5,val1]:=FloatToStr(val2);

end;

'J':begin

J_el[val1].lab.Caption:=str2;

J_el[val1].val:=val2;

StringGrid4.Cells[6,val1]:=str2;

StringGrid4.Cells[7,val1]:=FloatToStr(val2);

end;

end;

end;

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls, Menus;

type

TForm4 = class(TForm)

Chart1: TChart;

ComboBox1: TComboBox;

Chart2: TChart;

ComboBox2: TComboBox;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

SaveDialog1: TSaveDialog;

N21: TMenuItem;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

procedure ComboBox1Change(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure ComboBox2Change(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N21Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

ProgStop:boolean;

implementation

{$R *.dfm}

procedure TForm4.ComboBox1Change(Sender: TObject);

var i:integer;

begin

for i:=0 to Chart1.SeriesCount-1 do

if i=ComboBox1.ItemIndex then Chart1.Series[i].Active:=true else Chart1.Series[i].Active:=false;

Button1.Enabled:=true;

end;

procedure TForm4.FormActivate(Sender: TObject);

var i:integer;

begin

for i:=0 to Chart1.SeriesCount-1 do

begin

ComboBox1.Items.Add(Chart1.Series[i].Title);

ComboBox2.Items.Add(Chart2.Series[i].Title);

end;

end;

procedure TForm4.ComboBox2Change(Sender: TObject);

var i:integer;

begin

for i:=0 to Chart2.SeriesCount-1 do

if i=ComboBox2.ItemIndex then Chart2.Series[i].Active:=true else Chart2.Series[i].Active:=false;

Button2.Enabled:=true;

end;

procedure TForm4.N2Click(Sender: TObject);

begin

if SaveDialog1.Execute then Chart1.SaveToBitmapFile(SaveDialog1.Files.Strings[0]+'.bmp');

end;

procedure TForm4.N21Click(Sender: TObject);

begin

if SaveDialog1.Execute then Chart2.SaveToBitmapFile(SaveDialog1.Files.Strings[0]+'.bmp');

end;

procedure TForm4.Button1Click(Sender: TObject);

begin

if Chart1.Series[ComboBox1.ItemIndex].Marks.Visible=true then

begin

Chart1.Series[ComboBox1.ItemIndex].Marks.Visible:=false;

Button1.Caption:='Показать вершины';

end

else

begin

Chart1.Series[ComboBox1.ItemIndex].Marks.Visible:=true;

Button1.Caption:='Скрыть вершины';

end;

end;

procedure TForm4.Button2Click(Sender: TObject);

begin

if Chart2.Series[ComboBox2.ItemIndex].Marks.Visible=true then

begin

Chart2.Series[ComboBox2.ItemIndex].Marks.Visible:=false;

Button2.Caption:='Показать вершины';

end

else

begin

Chart2.Series[ComboBox2.ItemIndex].Marks.Visible:=true;

Button2.Caption:='Скрыть вершины';

end;

end;

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);

begin

ProgStop:=true;

end;

end.

Список использованных источников

1. Норенков И.П. «Введение в автоматизированное проектирование технических устройств и систем» М.: Высшая школа, 1980

2. Алексеев О.В. «Автоматизация проектирования радиоэлектронных средств» М.: Высшая школа, 2000

3. Белов В.Ф. «Автоматизация проектирования электромагнитной совместимости автономных преобразовательных систем», Саранск, Мордовский университет, 1993

Приложение

Рисунок 1 - эквивалентная схема.

Рисунок 2.1 - матрица инциденций.

-1

-1

-1

1

-1

-1

1

-1

-1

-1

1

1

1

1

Рисунок 2.2 - сохраненная матрица инциденций (экспортируется в excel-файл)

Рисунок 3 - параметры элементов.

Рисунок 4.1 - расчетные данные.

Рисунок 4.2 - расчетные данные, если используется «Авто-расчет».

Результат работы программы:

Рисунок 5 - R1_X от t.

Рисунок 6 - R1_Y от t.

Рисунок 7 - R2_X от t.

Рисунок 8 - R2_Y от t.

Рисунок 9 - R3_X от t.

Рисунок 10 - R3_Y от t.

Рисунок 11 - R4_X от t.

Рисунок 12 - R4_Y от t.

Рисунок 13 - C1_X от t.

Рисунок 14 - C1_Y от t.

Рисунок 15 - C2_X от t.

Рисунок 16 - C2_Y от t.

Рисунок 17 - C3_X от t.

Рисунок 18 - C3_Y от t.

Рисунок 19 - J1_X от t.

Рисунок 20 - J1_Y от t.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.