Содержание
№56. Дана система линейных уравнений
3х1 + 4х2 + 2х3 = 8,
2х1 – х2 – 3х3 = — 1,
х1 + 5х2 + х3 = 0.
Доказать ее совместность и решить двумя способами: 1) методом Гаусса; 2) средствами матричного исчисления.
№66. Даны два линейных преобразования:
х1′ = 4х1 + 3х2 + 2х3, х1» = х1′ – 2х2′ – х3′,
х2′ = — 2х1 + х2 – х3, х2» = 3х1′ + х2′ + 2х3′,
х3′ = 3х1 + х2 + х3, х3» = х1′ + 2х2′ + 2х3′.
Средствами матричного исчисления найти преобразование, выражающее х1», х2», х3» через х1, х2, х3.
№76. Найти собственные значения и собственные векторы линейного преобразования, заданного в некотором базисе матрицей А.
2 -1 2
А = 5 -3 3
-2 0 -2
№86. Используя теорию квадратичных форм, привести к каноническому виду уравнение линии второго порядка.
13х2 – 48хy + 27y2 = 45.
№96. Дано комплексное число а. Требуется: 1) записать число а в алгебраической и тригонометрической формах; 2) найти все корни уравнения z3 + a = 0.
a= 2*sqrt(2)/(1-i).
Выдержка из текста работы
Цель — определение токов в ветвях электрической цепи. Ток в цепи не везде одинаковый, и что бы рассчитать его на всех участках, основываясь законами тока и составными цепи.
Решение построено на основе линейных электрических уравнений. Пользуемся методом моделирования. Это удобный метод.
У нас есть система линейных алгебраических уравнений, которую нам надо решить, точнее найти её корни. Воспользуемся методом Гаусса для решения СЛАУ. Ещё есть методы Крамера и обратной матрицы, но нам более приемлем метод Гаусса. Наши корни — это потенциалы узлов в цепи, с помощью которых мы можем рассчитать ток в цепи во всех ветвях.
уравнение программа ток электрическая цепь
Введение
Надо найти силу тока на всех ветвях в электрической цепи методом узловых напряжений. В практических задачах встречаются цепи, имеющие всего две узловые точки. Между узловыми точками может быть включено произвольное количество ветвей. Расчет таких цепей значительно упрощается, если пользоваться методом узлового напряжения.
Задача сводится к математической модели, которая решается системой линейных алгебраических уравнений и которая решается методом Гаусса.
Метод Гаусса — классический метод решения системы линейных алгебраических уравнений (СЛАУ). Это метод последовательного исключения переменных, когда с помощью элементарных преобразований система уравнений приводится к равносильной системе ступенчатого (или треугольного) вида, из которого последовательно, начиная с последних (по номеру) переменных, находятся все остальные переменные.
Система m линейных уравнений с n неизвестными в линейной алгебре — это система уравнений вида:
Где , , …, — неизвестные, которые надо определить. , , …, — коэффициенты системы — и , , … — свободные члены — предполагаются известными. Индексы коэффициентов () системы обозначают номера уравнения i и неизвестного.
Задача решается с применением ПЭВМ, потому что результаты обработки информации на бумаге, куда менее удобны для пользователя, чем
отображение обработанной информации на экране дисплея.
1. Постановка задачи
Определить токи во всех ветвях электрической цепи (рис.1.1) методом узловых напряжений.
R1=75Ом, R2=76Ом, R3=77Ом, R4=78Ом, R5=79Ом, R6=80Ом, E2=95В, E4=40В, Ik1=0.47A.
Рис. 1.1
В программе необходимо предусмотреть, откуда будет считываться исходные данный — с диалогового окна или из текстового файла. Результаты вычислений сохранить в текстовом файле result.txt. Средствами математического пакета или электронных таблиц проверить результаты работы программы. Найти значения токов во всех ветвях электрической цепи (см. рис. 1.1), проверить баланс мощностей. Для решения системы линейных уравнений воспользоваться методом Гаусса.
2. Описание математической модели решения задачи
Приравниваем потенциал узла d нулю и составим уравнения для потенциалов остальных узлов.
Решив систему одним из известных методов получим значения потенциалов узлов. После чего найдём значения токов в ветвях цепи:
Проверим баланс мощностей
Мощность источников
Мощность нагрузок
3. Блок-схема алгоритма
Рис. 3.1. Блок-схема алгоритма функции, решения методом Гаусса
Рис. 3.2. Блок-схема алгоритма решения задания
4. Описание алгоритма
Описание алгоритма функции, решающей методом Гаусса:
1-19 — функция метода Гаусса.
3-14 — прямой ход метода Гаусса.
4-10 — перестановка строк расширенной матрицы, в результате которого избавляемся нулевых элементов на главной диагонали.
11-14 — приведения расширенной матрицы к треугольному виду.
15-19 — вывод случаев, при которых система имеет бесконечное количество решений и когда система решений не имеет.
Описание алгоритма основной функции:
1-36 — весь алгоритм решения задания.
2-9 — последовательный ввод данных.
10 — вызов функции метода Гаусса.
11-16 — проверка на случаи, когда система имеет бесконечное количество решений и когда система решений не имеет.
17-21 — обратный ход матрицы, которым вычисляются сами решения системы линейных алгебраических уравнений.
22-23 — ввод массива токов в ветвях цепи.
24-27 — определение мощностей источников и нагрузки из полученных данных.
28-30 — вывод значений токов в ветвях цепи на экран и в файл.
31-32 — вывод значений мощностей на экран и в файл.
33-35 — проверка на баланс мощностей и вывод ответа.
5. Характеристика данных и их условие обозначения
№ п\п |
Наименование данных |
Обозначение в блок-схеме |
Обозначение в программе |
Тип переменных |
|
01 |
Коэффициенты системы |
a |
a |
double** |
|
02 |
Свободные члены |
b |
b |
double* |
|
03 |
Потенциалы |
x |
x |
double* |
|
04 |
Первое сопротивление |
R1 |
R |
double* |
|
05 |
Второе сопротивление |
R2 |
double* |
||
06 |
Третье сопротивление |
R3 |
double* |
||
07 |
Четвёртое сопротивление |
R4 |
double* |
||
08 |
Пятое сопротивление |
R5 |
double* |
||
09 |
Шестое сопротивление |
R6 |
double* |
||
10 |
Первый ток |
I1 |
I |
double* |
|
11 |
Второй ток |
I2 |
double* |
||
12 |
Третий ток |
I3 |
double* |
||
13 |
Четвёртый ток |
I4 |
double* |
||
14 |
Пятый ток |
I5 |
double* |
||
15 |
Шестой ток |
I6 |
double* |
||
16 |
Напряжение |
E2 |
E2 |
double |
|
17 |
напряжение |
E4 |
E4 |
double |
|
18 |
Ток |
Ik1 |
Ik1 |
double |
|
19 |
Мощность источников |
Pnagr |
Pnagr |
double |
|
20 |
Мощность нагрузок |
Pist |
Pist |
double |
|
21 |
Сумма |
s |
S |
double |
|
22 |
Переменная |
c |
c |
double |
|
23 |
Коэффициент |
M |
M |
double |
|
24 |
Максимальный элемент |
max |
max |
double |
|
25 |
Количество элементов |
n |
N |
int |
|
26 |
Количество элементов |
m |
M |
int |
|
27 |
Входной поток |
F |
F |
Поток |
|
28 |
Выходной поток |
f |
f |
Поток |
6. Текст программы
Текст программы на Microsoft Visual C++ 6.0:
#include «stdafx.h»
#include <iostream.h>
#include <math.h>
#include <fstream.h>
#include <iomanip.h>
int SLAU(double **matrica_a,int n,double *massiv_b,double *x)
int i,j,k,r;
double c,M,max,s, **a, *b;
a=new double *[n];
for(i=0;i<n;i++)
a[i]=new double[n];
b=new double [n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=matrica_a[i][j];
for(i=0;i<n;i++)
b[i]=massiv_b[i];
for(k=0;k<n;k++)
max=fabs(a[k][k]);
r=k;
for(i=k+1;i<n;i++)
if(fabs(a[i][k])>max)
max=fabs(a[i][k]);
r=i;
for(j=0;j<n;j++)
c=a[k][j];
a[k][j]=a[r][j];
a[r][j]=c;
c=b[k];
b[k]=b[r];
b[r]=c;
for(i=k+1;i<n;i++)
for(M=a[i][k]/a[k][k],j=k;j<n;j++)
a[i][j]-=M*a[k][j];
b[i]-=M*b[k];
if(a[n-1][n-1]==0)
if(b[n-1]==0)
return -1;
else return -2;
else
for(i=n-1;i>=0;i—)
for(s=0,j=i+1;j<n;j++)
s+=a[i][j]*x[j];
x[i]=(b[i]-s)/a[i][i];
return 0;
for(i=0;i<n;i++)
delete [] a[i];
delete [] a;
delete [] b;
int main()
ifstream F;
ofstream f;
int result,i,N=3,M=5,p;
double **a,*b,*x,*R,E2,E4,Ik1,*I,S,Pist,Pnagr;
a=new double *[N];
I=new double [M];
for(i=0;i<N;i++)
a[i]=new double[N];
b=new double [N];
x=new double [N];
R=new double [M];
cout<<«VbIbirite metod vvoda:»<<endl;
cout<<«Vvod c ekrana — 1″<<endl;
cout<<«Vvod c faula — 2″<<endl;
cout<<«Metod — «;
cin>>p;
if(p==1)
cout<<«R1=»; cin>>R[0];
cout<<«R2=»; cin>>R[1];
cout<<«R3=»; cin>>R[2];
cout<<«R4=»; cin>>R[3];
cout<<«R5=»; cin>>R[4];
cout<<«R6=»; cin>>R[5];
cout<<«E2=»; cin>>E2;
cout<<«E4=»; cin>>E4;
cout<<«Ik1=»; cin>>Ik1;
else
F.open(«D:\\111\\123.txt»);
F>>R[0]>>R[1]>>R[2]>>R[3]>>R[4]>>R[5]>>E2>>E4>>Ik1;
F.close();
a[0][0]=1/R[0]+1/R[1]+1/R[3];
a[0][1]=-1/R[1];
a[0][2]=-1/R[3];
a[1][0]=-1/R[1];
a[1][1]=1/R[1]+1/R[2]+1/R[5];
a[1][2]=-1/R[2];
a[2][0]=-1/R[3];
a[2][1]=-1/R[2];
a[2][2]=1/R[2]+1/R[3]+1/R[4];
b[0]=-E2/R[1]+E4/R[3]+Ik1;
b[1]=E2/R[1];
b[2]=-E4/R[3];
result=SLAU(a,N,b,x);
f.open(«D:\\111\\rezult.txt»);
if(result==0)
for(i=0;i<N;i++)
x[i]=-x[i];
cout<<«Massiv X»<<endl;
for(i=0;i<N;i++)
cout<<x[i]<<«\t»;
cout<<endl;
f<<«x[i]=»;
for(i=0;i<N;i++)
if(i<N-1) f<<x[i]<<«\t»;
else f<<x[i];
I[0]=0-x[0]/R[0];
I[1]=x[0]-x[1]+E2/R[1];
I[2]=x[2]-x[1]/R[2];
I[3]=x[2]-x[0]+E4/R[3];
I[4]=0-x[2]/R[4];
I[5]=x[1]-0/R[5];
Pist=E2*I[1]+E4*I[3]-Ik1*I[0]*R[0];
f<<endl;
for(i=0,S=0;i<=M;i++)
S+=I[i]*I[i]*R[i];
Pnagr=S;
cout<<«I[i]=»;
f<<«I[i]=»;
for(i=0;i<=M;i++)
cout<<I[i]<<«\t»;
if(i<M-1) f<<I[i]<<«\t»;
else f<<I[i];
cout<<endl;
cout<<«Pist=»<<Pist<<endl;
cout<<«Pnagr=»<<Pnagr<<endl;
f<<endl;
f<<«Pist=»<<Pist<<endl;
f<<«Pnagr=»<<Pnagr<<endl;
if(Pist==Pnagr)
cout<<«Balance mojnocteu covnadatt»<<endl;
else cout<<«Balance mojnocteu ne covnadatt»<<endl;
f.close();
else if(result==-1)
cout<<«beckone4noe mnojectvo rewenii»;
f<<«beckone4noe mnojectvo rewenii»;
else if(result==-2)
cout<<«net rewenii»;
f<<«net rewenii»;
for(i=0;i<N;i++)
delete [] a[i];
delete [] a;
delete [] b;
delete [] x;
return 0;
7. Анализ результатов
По условию нам были даны: значения сопротивлений элементов цепи, напряжение в двух ветвях цепи и силу тока в данной точке; схематическая и математическая модель цепи.
Находим корни уравнения системы линейных уравнений, которые является потенциалами во всех ветвях цепи. С помощью которых находим значения токов в ветвях цепи. Проверяем баланс мощностей в цепи по найденным значениям мощностей источников и нагрузок.
Значения токов на ветвях везде разные, это говорит нам о том, что либо напряжения разные, либо сопротивления, по закону Ома .
Подтвердилось, что работать с файлами удобно и просто. А так же, что использование различных математических пакетов и языков программирования для решения различных задач очень удобно и компактно, быстрая переработка информации и максимально точные результаты.
Результаты в MS VC++ 6.0:
X[0]=-4.27091; X[1]=-33.6117; X[2]=0.560234; — корни системы линейных алгебраических уравнений, значения потенциалов в ветвях цепи.
I[0]=0.0569455; I[1]=30.5908; I[2]=0.996749; I[3]=5.34397; I[4]=-0.00709157; I[5]=-33.6117; — значения токов в ветвях цепи.
Pist=3117.87; — значение мощности источников.
Pnagr=163804.51; — значение мощности нагрузок.
Результаты проверки в Scilab:
X[0]=-4.27091; X[1]=-33.6117; X[2]=0.560234;
I[0]=0.0569455; I[1]=30.5908; I[2]=0.996749; I[3]=5.34397;
I[4]=-0.00709157; I[5]=-33.6117;
Pist=3117.87;
Pnagr=163804.51;
Все результаты совпадают и в MS VC++ и в Scalab.
Заключение
Результаты помогли убедится, что пользоваться методом Гаусса для решения СЛАУ очень удобно, а также даёт правильный результат.
Полученные значения токов показало, что не везде ток в цепи одинаковый, он зависит от составных электрической цепи.
Эта работа помогла освоить тему «Линейные электрические цепи» и научится применять теоретические сведения на практике.
А Также закрепить знания курса «Введение в информатику» и применить их при программировании реальной задачи на основе электрической цепи.
Использование ЭВМ очень помогает точно рассчитать информацию любого уровня, используя при этом малый период времени, что сильно облегчает работу людей.
Размещено на