
- •Казанский государственный технический университет им. А.Н.Туполева
- •Оглавление
- •Введение
- •1. Цель курсовой работы
- •2. Задание на курсовую работу
- •Постановка задачи
- •3. Отчетные материалы
- •4. Требования к курсовой работе
- •4.1. Объем и содержание курсовой работы
- •Постановка задачи;
- •Описание программы;
- •Инструкция по использованию программы;
- •4.2. Оформление курсовой работы
- •4.3.Сроки выполнения, контроля и представления курсовой работы
- •Постановка задачи.
- •5. Технология подготовки и решения задач на пэвм
- •6. Погрешности вычислений на пэвм
- •7. Методы решения инженерных задач
- •8. Рекомендуемая литература
- •9. Пример оформления пояснительной записки
- •Расчет на пэвм электрической цепи методом узловых напряжений
- •Казанский государственный технический университет имени а.Н.Туполева
- •Введение
- •1. Постановка задачи
- •2. Метод решения
- •4.3. Выходные параметры
- •4.4. Структура программы
- •4.5. Инструкция по использованию программы
- •5. Контрольный пример
- •6. Исходные данные и результаты счета
- •7. Сравнение результатов счета с использованием пакета MathCad
- •Заключение и выводы
- •8. Список использованной литературы
8. Список использованной литературы
-
Советов Б.Я., Яковлев С.А. Моделирование систем. Курсовое проектирование (учебное пособие для ВУЗов). - М.:Высшая школа. - 1988. -135 с.
-
Каранчук В.П., Сваровский И.Н., Суздальницкий И.Д. Основы применения ЭВМ: Учебное пособие для ВУЗов. - М.:Радио и связь. - 1988. - 288 с.
-
Милехин Л.Н., Потапов А.А. Руководство по составлению программного документа к курсовому или дипломному проекту. - Казань:КАИ. - 1989. - 20 с.
-
Толстов Ю.Г. Теория линейных электрических цепей. - М.:Высшая школа. - 1978.
Приложение 1
Текст программы на языке Turbo-Pascal для расчета электрической цепи методом узловых напряжений
{Программа для расчета электрической цепи методом
узловых напряжений}
Program uzel;
uses uselun;
const nv=5;nu=3;
var a,at,g,gu,v,jv,ev,uv,iv,r,x,y,z:mas;i,j,k,n:integer;
begin
{Ввод исходных данных}
inpm (nu,nv,a,' a '); {матрица соединений}
inpm (nv,1,r,' r '); {вектор сопротивлений ветвей}
inpm (nv,1,ev,' ev '); {вектор эдс источников}
inpm (nv,1,jv,' jv '); {вектор источников токов}
{Расчет матрицы проводимостей ветвей}
for i:=1 to nv do begin
for j:=1 to nv do
g[i,j]:=0.0;
g[i,i]:=1/r[i,1]; end;
writeln (' Результаты расчета электрической цепи ');
umn(nv,nv,1,g,ev,x); {G*Ev->x}
subm(nv,1,jv,x,y); {Jv-G*Ev->y}
umn(nu,nv,1,a,y,z); {a*(Jv-G*Ev)->z}
outm (nu,1,z,' Вектор узловых токов Iu ');
transp(nv,nu,a,at); {транспонирование матрицы ->at}
umn(nu,nv,nv,a,g,x); {a*g->x}
umn(nu,nv,nu,x,at,gu); {a*g*at->gu}
outm (nu,nu,gu,' матрица Gu узловых проводимостей ');
obmatr(nu,gu,x); {вычисление обратной матрицы (a*g*at)^-1->x}
umn(nu,nv,1,x,z,v); {Расчет узловых напряжений v=(a*g*at)^-1*a*(Jv-G*Ev)}
outm (nu,1,v,' Вектор узловых напряжений v ');
umn(nv,nu,1,at,v,uv); {Вектор падения напряжения ветвей Uv=at*v}
summ(nv,1,uv,ev,x); {Uv+Ev->x}
umn(nv,nv,1,g,x,iv); {Расчет токов ветвей Iv=g*(Uv+Ev)}
outm (nv,1,iv,'Вектор токов ветвей iv '); {вывод вектора токов ветвей}
end.
unit uselun;
{модуль с используемыми процедурами}
interface
const nn=5;
type mas=array [1..nn,1..nn] of real;
procedure subm (n,m:integer; var a,b,c:mas);
procedure inpm (n,m:integer; var a:mas; st:string);
procedure transp (n,m:integer; var a, at:mas);
procedure summ (n,m:integer; var a,b,c:mas);
procedure outm (n,m:integer; var a:mas; st:string);
procedure umn (n,k,m:integer; var a,b,c:mas);
procedure obmatr(n:integer;var a,b:mas);
implementation
procedure transp (n,m:integer; var a,at:mas);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
at[i,j]:= a[j,i];
end;
function norm (n,m:integer; r1,r2:mas):real;
var t:mas; s:real;i,j:integer;
begin
subm (n,m,r1,r2,t);
s:=0;
for i:=1 to n do
for j:=1 to n do
s:=s+t[i,j];
norm:=s;
end;
procedure inpm (n,m:integer; var a:mas; st:string);
var i,j:integer;
begin
writeln ('введите матрицу',st,'по строкам');
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
end;
procedure outm (n,m:integer; var a:mas; st:string);
var i,j:integer;
begin
writeln (st);
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:8:2);
writeln;
end;
end;
procedure subm (n,m:integer; var a,b,c:mas);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
c[i,j]:=a[i,j]-b[i,j];
end;
procedure summ (n,m:integer; var a,b,c:mas);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
c[i,j]:=a[i,j]+b[i,j];
end;
procedure umn (n,k,m:integer; var a,b,c:mas);
var i,j,L:integer;s:real;
begin
for i:=1 to n do
for j:=1 to m do
begin
s:= 0;
for L:=1 to k do
begin
s:= s + a[i, L]*b[L,j];
end;
c[i,j]:= s;
end;
end;
procedure obmatr(n:integer;var a,b:mas);
{* Вычисление обратной матрицы a^-1->b*}
{ - входные параметры}
{n - размерность матриц }
{a - исходная матрица размера n*n}
{ выходной параметр }
{b - обратная n*n-матрица для a}
var i,j,k,ij,fl:integer;
index: array[1..50] of integer;
d,r,w,w1,eps:real;
begin
eps:=1.e-15;
r:=1.0;d:=1.0;
for j:=1 to n do
for i:=1 to n do
b[i,j]:=a[i,j];
for i:=1 to n do
begin
fl:=0;
j:=i;
while j<=n do
begin
if (abs(b[j,i])>eps) then
begin
fl:=1;
for k:=1 to n do
begin
w1:=b[i,k];
b[i,k]:=b[j,k];
b[j,k]:=w1
end;
index[i]:=j;
j:=n;
end;
j:=j+1;
end;
if(b[i,i]=0) then
exit;
b[i,i]:=1./b[i,i];
for k:=1 to n do
if(k<>i) then
b[i,k]:=b[i,k]*b[i,i];
for ij:=1 to n do
if(ij<>i) then
begin
w:=-b[ij,i];
b[ij,i]:=0.;
for k:=1 to n do
b[ij,k]:=b[ij,k]+w*b[i,k];
end;
if(fl=0) then
exit;
d:=d/b[i,i];
end; { i}
for i:=n downto 1 do
begin
if(index[i]<>i) then
begin
r:=-r;
for k:=1 to n do
begin
w1:=b[k,i];
b[k,i]:=b[k,index[i]];
b[k,index[i]]:=w1;
end;
end;
end; end;
end.