Elettracompany.com

Компьютерный справочник
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Решение слау matlab

Решение слау matlab

Решение систем линейных уравнений

Метод обратной матрицы: для системы из n уравнений с n неизвестными , при условии что определитель матрицы не равен нулю, единственное решение можно представить в виде . Для того чтобы решить систему линейных уравнений методом обратной матрицы, необходимо выполнить следующие действия:

  • сформировать матрицу коэффициентов и вектор свободных членов заданной системы;
  • решить систему, представив вектор неизвестных как произведение матрицы, обратной к матрице системы, и вектора свободных членов.

Дана система уравнений:

Решаем на MATLAB :

A=[1 -2 1; 2 -5 -1; -7 0 1];

x=inv(A)*b % Решение системы x = A -1 b

Решение системы линейных уравнений при помощи метода Гаусса основывается на том, что от заданной системы, переходят к системе эквивалентной, которая решается проще, чем исходная.

Метод Гаусса состоит из двух этапов:

  • Первый этап — это прямой ход, в результате которого расширенная матрица системы путем элементарных преобразований (перестановка уравнений системы, умножение уравнений на число, отличное от нуля, и сложение уравнений) приводится к ступенчатому виду.
  • На втором этапе (обратный ход) ступенчатую матрицу преобразуют так, бы в первых n столбцах получилась единичная матрица. Последний, n +1 столбец этой матрицы содержит решение системы линейных уравнений.

Порядок решения задачи в MATLAB следующий:

  • сформировать матрицу коэффициентов и вектор свободных членов заданной системы;
  • сформировать расширенную матрицу системы, объединив и ;
  • используя функцию rref, привести расширенную матрицу к ступенчатому виду;
  • найти решение системы, выделив последний столбец матрицы, полученной в предыдущем пункте;
  • выполнить вычисление ; если в результате получился нулевой вектор, задача решена верно.

A=[1 -2 1; 2 -5 -1; -7 0 1];

C=rref ([A b]); %Приведение расширенной матрицы к треугольному виду

x=C(1:3,4:4) %Выделение последнего столбца из матрицы

Решение и моделирование линейного алгебраическое система уравнение в Matlab

РЕШЕНИЕ И МОДЕЛИРОВАНИЕ ЛИНЕЙНОГО АЛГЕБРАИЧЕСКОЕ СИСТЕМА УРАВНЕНИЕ В MATLAB

Ш. М. Туймуродов (преподаватель, Каршинский филиал ТУИТ)

(магистрантка, Каршинский филиал ТУИТ)

В моделировании разновидные объекты и процессы повстречаются в алгебраической, трансцендентной, линейной и других систем уравнений. Оценить правильность уравнений и решить их в моделировании играет большую роль. Построение уравнений определяются из их особенностей. У всех из таких способов есть свои особенности, чтобы решить их понадобится специальные знания. Увеличение неизвестных построенных моделей и с увеличением виды факторы усложняются их решение. По этому, в решении трудностей использование информационно-коммуникационных технологий облегчает работу и играет нужную роль в получении точного ответа.

Для решении разнотипных математических задач, создана система Matlab, при ней существуют его специальные функции. С помощью этих функций решаются задачи в частном виде.

Мы покажем решение системы линейно-алгебраических уравнений с помощью функций программы Matlab и моделировании в среде Simulink.

Дана система линейно-алгебраического уравнения:

Здесь а11, а22,…….,аnn – неизменяемые коэффициенты, х1, х2,……. хn — неизвестные, b1, b2,……. bn – свободные члены.

Нам требуется решить следующую систему линейно-алгебраического уравнения:

Через окно Command Window системы Matlab, вводим следующие коды, при этом найдется решение системы уравнения.

Для решения системы линейно-алгебраических уравнений (1) из система уравнений определяем следующие матрицы:

A*B=C, отсюда вычисляем неизвестные матрицы B, оно будет выглядеть следующим образом:

,

Здесь A-1 обратная матрица для матрицы A

Чтобы решить систему линейно-алгебраических уравнений в среде матриц, определяем элементы матрицы из системы уравнений и вводим их в окно команд программы Matlab:

>> C=[14;3] % матрица состоит из свободных членов

>> A1=inv(A) %A1 обратная матрица для матрицы

>> B=A1*C % B означает корень уравнения матрицы x1 и x2

Способ моделирования Matlab/Simulink

1-способ: При решении системы уравнений состоящие из неизменяемых чисел вводим каждый эквивалент дифференциальной величины . В среде Matlab/Simulink для произведения модели пишется следующий вид системы уравнений:

Загрузив программную систему Matlab и библиотечную панель Simulink Library Browser, выбераем пользовательский блок: Gain (умножение неизменяемого коэффициента в сигнал ), Constant (источник неизменяемого сигнала ), Integrator (интегральный сигнал), Display (произведение цифрового сигнала в виде числа) Scope (виртуальный оцилограф). В виртуальным осцилографе видно то, что графическая функция означает, что с истечением времени, продолжается часть неизменяемой системы уравнения. А в дисплеи системы уравнение цифрового решения отображается на экране в виде числа. Блок Simulink в составе Matlab для математических задач основан на разработке проектирования, сбора сложных устройств электроники и разработки их математических моделей.

Читать еще:  Логарифмический масштаб matlab

Пользовательские блоки: Display, Constant, Gain, Sum, Integrator, Mux.

Рис 1. Построение моделей системы линейно-алгебраических уравнений и изображения графика в оциллографе

2-способ: Из панели библиотеки отделения Ports&Subsystems выбирается команда Subsystem и настраивается его составная структура, в зависимости от числа неизвестных чисел блоков Gain и увеличивается число блоков multiplexor в зависимости от числа уравнений. Входящие сигналы Multipleksora In1,In2,In3 в выходящие Out1 с раздела Math operations, вращающие на значения ноль вводится Algebraic Constraint. Вводим соответствующие коэффиценты в состав параметров в каждый блок Gain. После процесса моделирования нажимаем кнопку Run и в результате на экране можно увидеть ответ системы уравнений.

Рис 2. Настройка составного строения Мултиплексора

Пользовательские блоки: Subsystem, Display, Constant, Gain, Algebraic Constraint, Sum, Mux.

Рис 3. Схематический состав решения системы линейно — алгебраического уравнения с помощью модели мултиплексора

Таким образом, мы познакомились с системой Matlab и решения систем линейно-алгебраических уравнений помощью стандартных функций матрицы и способами моделирование Simulink. С помощью этих способов создаётся оптимизирование системы произведения, моделирование объектов и процесс оценивания правильности построения моделей и способы их решения. Нужно отметить, что курс «Высшая математика» из точных наук работает с матрицами, выполняет разные операции над ними и разрабатывает разные способы решения линейных уравнений. Особенно с помощью способа Matlab/Simulink моделирование линейных уравнений занимает важное место современной цифровой технике, в изучение телекоммуникационных технологий.

, , . Математическое и компьютерное моделирование процессов и систем в среде MATLAB/SIMULINK. Киев-2008, ст-18-22. Hally More. MATLAB for engineers. Prentice Hall 2012 y. Page.441 MATLAB. Учебное пособие. ГУИА. 2005. – 143 с. , . Методы решения математических задач в Maple. Белгород 2001 г. Ст-22. . Simulink 5/6/7. Самоучитель. ДМК издательство. Москва-2008 г.

Решение уравнений в matlab

Вы можете решать уравнения, содержащие переменные, с помощью команд
solve и fzero.

Разберем подробнее Matlab решение нелинейных уравнений, к примеру квадратного уравнения х 2 — 2х — 4 = 0, введите следующее:

syms x; solve (‘x^2 — 2*x -4=0’)

Разберем подробнее matlab решение линейных уравнений, к примеру вот такое уравнение х — 4 = 0, введите следующее:

syms x; solve (‘x -4=0’)

Обратите внимание, что уравнение, которое требуется решить, задано как
строка, то есть взято в одинарные кавычки. Ответ представляет собой точное
(символьное) решение 1+корень(5). Для получения числовых решений введите double
(ans) или vpa (ans), чтобы отобразить больше знаков. Ввод с командой solve
может также быть символьным выражением, но в этом случае программа MATLAB
потребует, чтобы правая часть выражения была заключена в скобки, и
фактически синтаксис решения уравнения х 2 — Зх = -7 будет выглядеть так:

syms x; solve (x^2 — 3*x + 7)

Ответ представляет собой точное (символьное) решение (3 + корень(19i))/2
(сложные числа, где буква i в ответе ставится для мнимой единицы V-1). Для
получения числовых решений введите double (ans) или vpa (ans), чтобы
отобразить больше знаков.
С помощью команды solve можно решать высокоуровневые полиномиальные
(многочленные) уравнения, равно как и многие другие типы уравнений. Можно
также решать уравнения, содержащие более чем одну переменную. Если
уравнений меньше, чем переменных, вам следует определить (как строки), какую
переменную (переменные) требуется вычислить. Например, введите solve ( ‘2*х — log (у) = 1’, ‘у’), чтобы решить уравнение 2х — log у = 1 для
переменной у при условии х. Подобным образом вы можете определить более чем
одно уравнение. Например:

[x, y] = solve (‘x^2 — y = 2’, ‘y — 2*x =5’)

Эта система уравнений имеет два решения. Программа MATLAB выдает решение,
выводя два значения х и два значения у для этих решений. Таким образом,
первое решение состоит из первого значения х и первого значения у. Вы можете
извлечь эти значения, введя в командную строку х (1) и у (1):

Читать еще:  M последовательность matlab

Второе решение можно извлечь, введя х (2) и у (2).
Обратите внимание, что в предыдущей команде solve мы назначили вывод в
векторной форме [х, у]. Если вы используете команду solve в системе
уравнений, не задавая вывод в векторной форме, в этом случае программа MATLAB не
отображает автоматически значения решения:

sol = solve (‘x^2 — y = 2’, ‘y — 2*x = 5’)

sol =
х: [2×1 sym]
у: [2×1 sym]

Чтобы увидеть векторы значений х и у, введите sol.x и sol.у. Чтобы увидеть
отдельные значения, введите sol.х (1) и sol.у (1), и т.п.

  • В этом примере вывод результата выполнения команды solve представляет собой структурный массив. Чтобы более подробно познакомиться с этим классом данных

Некоторые уравнения нельзя решить символически, и в таких случаях команда
solve пытается найти числовой ответ. Например:

solve (‘ sin (x) = 2 — x’)

Иногда бывает более одного решения, и вы можете не получить того, что
ожидаете, например:

solve (‘exp (-x) = sin (x) ‘ )

Ответ представляет собой комплексное число. Хотя оно является правильным
решением уравнения, существуют также решения, представленные
вещественными числами. Графики функций ехр (-х) и sin (x) показаны на Рис. 2.3;
каждая точка пересечения двух кривых представляет собой решение уравнения е -х = sin (х).

Вы можете в числовой форме найти (приблизительно) решения, показанные на
графике, с помощью команды fzero, которая ищет нулевое значение данной
функции в пределах заданного значения х. Решение уравнения е -х = sin (x)
равно нулю в функции е -х — sin (x), поэтому, чтобы найти приблизительное
решение при х = 0.5, введите следующее:

h = @(x) exp(-x) — sin(x);
fzero (h, 0.5)

Замените значение 0.5 на 3 и найдите следующее решение, и так далее.

Рис. 2.3. Две пересекающиеся кривые

Поэтому из выше всего сказанного можно сделать вывод, что вам необходимо просмотреть много дополнительной информации и альтернатив!

Метод Гаусса и его реализация в пакете MATLAB

Рассмотрим систему линейных алгебраических уравнений

(3.4)

при условии, что матрица A=(aij) невырождена.

Метод Гаусса состоит в преобразовании системы (3.4) последовательным исключением переменных к равносильной системе с треугольной матрицей

(3.5)

Затем из системы (3.5) последовательно находят значения всех неизвестных .

Т.о., процесс решения системы (3.4) распадается на два этапа:

1. Прямой ход — приведение системы (3.4) к треугольному виду.

2. Обратный ход — нахождение значений неизвестных переменных, в соответствие с (3.5).

Для реализации метод Гаусса в пакете MATLAB необходимо:

1. Создать файл Exchange.m, содержащий описание функции, осуществляющей перестановку строк при обнаружении в текущей строке нулевого элемента на главной диагонали.

% листинг файла Exchange.m

function z=Exchange(C,i)

k=i+1;

while C(k,i)==0

k=k+1;

End;

for j=1:size(C,1)

s=C(i,j);

C(i,j)=C(k,j);

C(k,j)=s;

End;

z=C;

2. Создание файла Simplex.m, содержащего описание функции, возвращающей расширенную матрицу системы к диагональному виду

% листинг файла Simplex.m

function z=Simplex(A,b)

N=size(A,1);% определение числа уравнений системы

C=cat(2,A,b);% создание расширенной матрицы системы

for i=1:N-1

if C(i,i)==0

C=Exchange(C,i);

End;

for j=0:N

C(i,N+1-j)=C(i,N+1-j)/C(i,i);

End;

for m=i+1:N

alpha=C(m,i);

for j=i:N+1

C(m,j)=C(m,j)-alpha*C(i,j);

End;

End;

End;

C(N,N+1)=C(N,N+1)/C(N,N);

C(N,N)=1;

z=C;

3. Создать файл Gauss.m, содержащий описание функции, возвращающей решение системы линейных уравнений методом Гаусса.

% листинг файла Gauss.m

function z=Gauss(A,b)

C=Simplex(A,b);

N=size(A,1);

v(N)=C(N,N+1);

for j=1:N-1

s=0;

for k=0:j-1

s=s+C(N-j,N-k)*v(N-k);

End;

End;

z=v’;

4. Задать матрицу системы линейных уравнений

>> A=[1,2,3,4,5;10,9,8,7,6;5,9,11,12,13;20,1,3,17,14;12,10,4,16,15]

A =

1 2 3 4 5

10 9 8 7 6

5 9 11 12 13

20 1 3 17 14

12 10 4 16 15

5. Задать вектор-столбец свободных членов

>> b=[10;20;30;40;50]

b =

10.0000

20.0000

30.0000

40.0000

50.0000

6. Решить систему уравнений, используя функцию Gauss( )

x=Gauss(A,b)

x =

0.0964

1.4324

-1.3530

1.6593

0.8921

7. Проверка правильности решения системы линейных уравнений

>> A*x

ans =

10.0000

20.0000

30.0000

40.0000

50.0000

Дата добавления: 2015-08-21 ; просмотров: 7130 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

Программная реализация метода простой итерации для решения СЛАУ в пакете MATLAB

Входные параметры: U – расширенная матрица коэффициентов, eps – требуемая точность решения.

Function res = Jakobi(U,eps);

error (‘Неверно задана система’);

%приведение системы к диагонально доминирующему виду

error(‘Система не совместна’);

%сумма по строкам

%первая норма по строкам

Читать еще:  Разработка веб приложений с помощью php

%сумма по столбцам

if k 1) && (max_norm2>1) && (max_norm3>1))

error(‘Введенная матрица не является диагонально преобладающей’)

%нахождение суммы для Х1(i)

sum = sum + ( A(i,j) * X0(j) );

while ( abs( X0(i) — X1(i) ) > eps )

%нахождение суммы для Х1(i)

sum = sum + ( A(i,j) * X0(j) );

%вывод вектора решений

%вывод числа итераций для выполненияусловия точности

ВСТРОЕННЫЕ ФУНКЦИИ ПАКЕТОВ MATHCAD И MATLAB

ДЛЯ ПРИБЛИЖЕННОГО РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ

АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ

Пакет MATHCAD

Решение систем линейных уравнений – довольно распространенная задача. Для системы линейных уравнений, заданной в матричном виде AX=B, вектор решения можно получить из очевидного выражения X=A-1B, или, например, из решения системы уравнений с проверкой на невырожденность матрицы:X:=if(|A|,A -1 B,0).

Следует обратить внимание на то, что пакет содержит и встроенную функцию решения линейных систем lsolve(A,B), где А– матрица коэффициентов, а В – вектор свободных членов. Пример использования предложенных методов показан на рис. 5.1.

Рис. 5.1. Примеры решения системы

Для решения систем уравнений, систем неравенств, смешанных систем служат решающие блоки. Структура решающего блока:

начало | Given

тело | несколько конструкций вида АВ1 оп АВ2

(оп – некоторая операция отношения, причём для написания знака равенства используется особый «жирный» знак равенства, который находится на панели инструментов; знак присваивания в теле решающего блока не используется)

конец | FIND (список) или MINERR (список).

Список – это перечень переменных, которые необходимо найти.

С помощью FIND ищут точное решение; если оно отсутствует, то возникает ошибка. Посредством MINERR всегда будет найдено решение, минимизирующее невязку ограничений. Переменная ERR– величина ошибки.

Перед решающим блоком необходимо задать начальные условия для всех искомых переменных, можно в векторном виде. Соответственно, в теле решающего блока можно использовать запись уравнений в матричном виде. Максимальное количество уравнений в системе доведено до двухсот. Часто приходится решать системы уравнений при наличии определенных ограничений. Таким образом, в теле решающего блока могут быть одновременно как равенства, так и неравенства. Пример такой системы приведен ниже:

Given

find (x,y) =

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

В теле решающего блока нельзя строить графики, выполнять вычисления.

Итерации производятся до тех пор, пока ôERRô£ TOL. Если встречается седловая точка и не известно, куда направлен градиент, то выдается сообщение not converging (не решаемо). Количество итераций ограничено. Возможно сообщение об ошибке вида did not find solution (не найдено решение).

При возникновении таких ошибок можно:

– изменить точность – TOL;

– заменить начальные условия;

– заменить find на minerr и получить приближенное решение.

Однако при использовании функций findи minerrнужно проявлять осторожность и обязательно предусматривать проверку решений, т.к. нередки случаи, когда решение может оказаться ошибочным.

Для получения другого решения можно поменять начальные условия, для уточнения – уменьшить TOL.

Пакет MATLAB

Рассмотрим две системы линейных уравнений: АХ=В и ХА=В. В MATLAB такие системы решаются без вычисления обратной матрицы. Два типа матричного деления / и используются для этих двух ситуаций, когда неизвестная матрица стоит слева или справа от матрицы коэффициентов:

Х=АВ соответствует решению АХ=В;

Х=В/А соответствует решению ХА = В.

При этом должны выполняться условия соответствия размерностей матриц X, А, В. Напомним, что для варианта Х=АВ матрица X должна иметь то же количество столбцов, что и матрица В, и то же число строк, сколько столбцов у матрицы А. Для Х=В/А эти условия обратны.

Алгебраические свойства оператора / можно вывести из соотношения(В/А)’ = (А’В’).

Матрица не обязательно должна быть квадратной, она может быть размером mхn. При этом существуют следующие варианты:

· m = n – квадратная система, возможно нахождение точного решения;

· m > n – переопределенная система, решение ищется с помощью метода наименьших квадратов;

· m n и ранг матрицы равен n, то каждое из трех следующих выражений вычисляет X по методу наименьших квадратов:

Х=АВ

Х=рinv(А)*В

Х=inv(А’*А)*А’*В

В противном случае решение Xпо методу наименьших квадратов не единственно и существует множество векторов, минимизирующих norm(A*X-B).Решение, вычисленное с помощью Х=АВ,– базовое решение, имеющее не больше r ненулевых компонент: r=rank(A). Решение, вычисленное с помощью Х=рinv(А)*В,– это решение с минимальной нормой X.

Ссылка на основную публикацию
Adblock
detector