Разработка алгоритма программы анализа электрических схем узловым методом
Обозначения и термины, характерные для электрических систем при изложении узлового метода. Создание математической модели данного метода в виде системы алгебраических и трансцендентных уравнений. Структура и листинг программы анализа электрических схем.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | отчет по практике |
Язык | русский |
Дата добавления | 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
Подобные документы
Решение систем алгебраических линейных уравнений методом Крамера. Сущность метода прогонки. Программная реализация метода: блок-схема алгоритма, листинг программы. Проверка применимости данного способа решения для конкретной системы линейных уравнений.
курсовая работа [581,0 K], добавлен 15.06.2013Описание математической модели. Обоснование метода реализации. Вид алгоритма и программы. Руководство системного программиста, оператора. Комбинирование метод хорд и касательных. Интерпретация и анализ результатов. Листинг программы, контрольный пример.
курсовая работа [3,3 M], добавлен 12.01.2014Изучение основных этапов проектирования программных систем, создание прикладной программы, которая выполняет решение систем линейных алгебраических уравнений методом Гаусса. Вычисление определителя и обращение матриц. Листинг разработанной программы.
курсовая работа [563,3 K], добавлен 12.07.2012Описание алгоритма создания программы для решения алгебраических или трансцендентных уравнений с помощью численного метода Бернулли. Нахождение значений корней алгебраического уравнения с заданными параметрами точности. Листинг программы на языке java.
контрольная работа [206,0 K], добавлен 19.06.2015Приведение системы линейных алгебраических уравнений к треугольному виду прямым ходом метода Гаусса. Применение обратного хода метода вращений. Создание алгоритма, блок-схемы и кода программы. Тестовый пример решения уравнения и его проверка в MathCad.
лабораторная работа [164,3 K], добавлен 02.10.2013Метод Гаусса-Зейделя как модификация метода Якоби, его сущность и применение. Разработка программы решения системы линейных алгебраических уравнений на языке VB, проверка правильности работы программы в MS Excel и математических пакетах MathCad и MatLab.
курсовая работа [325,5 K], добавлен 27.10.2013Использование метода Зейделя для нахождения корней системы линейных алгебраических уравнений. Суть метода простых итераций. Оценка погрешности нормальной системы. Составление алгоритма, блок-схемы и кода программы. Тестовый пример и проверка в MathCad.
лабораторная работа [174,8 K], добавлен 02.10.2013Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы.
дипломная работа [144,8 K], добавлен 25.04.2012Законы электрических цепей, порядок и методы их расчета. Разработка программы на языке программирования Borland C++ Builder 5.0 для анализа разветвленных электрических цепей с использованием матричного метода. Алгоритм решения задачи и описание его работы
курсовая работа [211,5 K], добавлен 08.10.2012Анализ предметной области, выбор и обоснование среды разработки. Построение принципиальных электрических схем онлайн. Технология Silverlight и возможности ElectricSchemeBuilder. Волновой алгоритм трассировки, его задачи и этапы. Состав модулей программы.
дипломная работа [4,0 M], добавлен 24.05.2012