Решение линейных уравнений в scilab

Сопромат .in.ua

изучаем сопротивление материалов

Некоторые варианты решения системы уравнений

Решение online

На странице “Решение системы линейных уравнений“ вы можете решить систему до 10 уравнений online.

Решение системы линейных алгебраических уравнений в OpenOffice.org

Из линейной алгебры нам известно, что для системы линейных уравнений A*x=b решением 1 есть x=A -1 *b, если детерминант матрицы A не равен нулю. Здесь A -1 – обратная матрица коэффициентов СЛАУ .

Решим систему из двух уравнений.

В ячейках (A1:B2) вводим данные.
Детерминант матрицы: MDETERM(A1:B2)

Затем получаем обратную мартицу A -1 :
=

Умножаем полученную обратную матрицу на столбик з правою частью систем уравнений:
=

Осталось проверить проверить правильность решения, подставив полученные неизвестные в систему уравнений.

Пример решения системы линейных уравнений в Scilab

Scilab — мощный открытый пакет прикладных математических программ (система компьютерной математики) для инженерных и научных расчётов.

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

Более подробно с пакетом можно ознакомится на домашней странице Scilab или в википедии

Пример

Решим систему из двух уравнений вида A*x=b

Задаем матрицу коэффициентов: —>A=[1,2;3,4] A = 1. 2. 3. 4. Задаем вектор свободных коэффициентов: —>b=[2;1] b = 2. 1.

Определяем детерминант матрицы: —>det(A) ans = — 2 Так как определитель матрицы отличен от нуля, решение СЛАУ существует.

Решение СЛАУ методом обратной матрицы —>x=A\b x = — 3. 2.5 Запись A\b соответствует математической операции A -1 b. Записи x=A\b эквивалентна запись x=inv(A)*b

Эту систему уравнений также можно решить с помощью специальной функции linsolve (эта функция решает уравнение вида Ax+b=0, поэтому поменяем знак вектора b) x=linsolve(A,-b) x = — 3. 2.5 и получили ответ: x0= -3; x1= 2.5;

Проверяем A*x-b ans = 1.0D-14 * 0.2220446 0.3552714 результирующий вектор близок к нулю, то есть система решена верно.
Существуют и другие способы решения системы линейных уравнений в среде Scilab.

Пример решения системы линейных уравнений в среде программирования R

R — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом.

Пример

Решаем систему Ax=b (из двух уравнений)

A A [,1] [,2] [1,] 1 2 [2,] 3 4 > b b [1] 2 1 > x x [1] -3.0 2.5 и получили ответ: x1= -3; x2= 2.5;

Проверка: > A %*% x [,1] [1,] 2 [2,] 1

Определитель матрицы: > det(A) [1] -2

Решение системы линейных уравнений Ax=b в Euler Math Toolbox

Домашняя страница Euler Math Toolbox . В пакет интегрирована система компьютерной алгебры Maxima. Система напоминает Matlab, но имеет собственный стиль, и немного иной синтаксис.
Домашняя страница автора René Grothmann

Пример

This is Euler Math Toolbox, Version 5.8. >A:=[1,2;3,4] 1 2 3 4 >b:=[2;1] 2 1 >x:=A\b -3 2.5 Получили ответ: x0= -3; x1= 2.5;

Определитель матрицы: >det(A) -2

Проверка: умножим A на x (операция умножения обозначается точкой «.») >A.x 2 1

Решить указанную систему можно также с помощью следующего выражения (inv(A) — обратная матрица) >x:=inv(A).b -3 2.5

1 Этот способ решения называется — решение СЛАУ методом обратной матрицы

Основы работы с системой технических расчетов Scilab


Решение задач линейной алгебры

Функции для нахождения числовых характеристик матриц

Для определения количества строк и столбцов матрицы М используют функцию size, аргументом которой является имя массива:

Если нужно определить количество только строк или только столбцов, то синтаксис функции модифицируется: добавляется второй аргумент, который имеет значение «1» или «r», если следует определить количество строк, «2» или «с» — если столбцов. Например:

Общее количество элементов матрицы или длину вектора вычисляет функция length, аргументом которой является имя матрицы или вектора:

Для определения максимального значения элемента матрицы или вектора используется функция max, аргументом которой является имя матрицы или вектора. Если нужно определить максимальное значение для каждого из строк или столбцов матрицы, то синтаксис функции модифицируется: добавляется второй аргумент, который имеет значение «r», если следует определить максимальное значение для каждой строки, или «c» — если для каждого столбца:

Аналогично используется функция min, предназначенная для определения минимального значения элемента матрицы или вектора.

Для вычисления определителя (детерминанта) квадратной матрицы используется функция det, аргументом которой является имя матрицы:

Для вычисления ранга матрицы используется функция rank, аргументом которой является имя матрицы:


Функции, реализующие численные алгоритмы решения задач линейной алгебры

Вычисление матрицы, обратной М

Напомним, что обратной по отношению к матрице М называется такая матрица, которая при ее умножении на матрицу М дает единичную матрицу.

Как видим, обратная матрица А достаточно близка к единичной, но все же полностью ею не является, что является следствием погрешности численных вычислений.

Scilab позволяет решать системы линейных алгебраических уравнений вида Ax=b. В документе для значений A формируется матрица коэффициентов при неизвестных, каждая строка которой содержит коэффициенты одного уравнения, а для значений b формируется вектор-столбец из свободных коэффициентов.

После этого для решения системы используется функция linsolve, имеющая такой синтаксис:

где A — это матрица коэффициентов при неизвестных, b — вектор-столбец свободных коэффициентов.

Функция возвращает найденные значения неизвестных системы в виде вектора.

Таким образом, решение системы линейных уравнений имеет вид:

Искомые значения: х1=5, х2=1.

Если система не имеет решения, то об этом выдается сообщение «WARNING: Conflicting linear constraints!» (Конфликтующие условия для линейных уравнений). Например, такая ситуация возникнет при попытке решения системы линейных уравнений :

Система линейных алгебраических уравнений может иметь множество решений. В таком случае функция возвращает только одно. Ниже приведен пример такой ситуации при решении системы линейных уравнений :


Работа с полиномами

Напомним, что полиномом или алгебраическим уравнением называется уравнение вида a0x n + a1x n-1 + . + an-1x + an.

Для создания полинома используется функция poly.

где р — это имя полинома (его можно и не задавать).

Аргументы функции: a — матрица или вещественное число, x — символьная переменная, «flag» — символьная переменная, которая определяет способ задания полинома и имеет значение «roots» (допускается сокращение «r») или «coeff» («c»). По умолчанию — «roots». Если «roots» имеет значение «r», то полином создается с параметрами ai для соответствующих символьных переменных xi. Если «flag» имеет значение «c», то значения параметров ai воспринимаются как корни, для которых нужно рассчитать коэффициенты полинома.

Следующий пример демонстрирует использование функции poly для создания полиномов р1, который имеет корень «2» и р2 с коэффициентом «2»:

В следующих примерах создаются полиномы с соответствующими коэффициентами для кубического уравнения.

С полиномами можно производить действия умножения, создавать из них дроби (деление), складывать и вычитать.


Решение уравнения с одним неизвестным

Scilab может решать алгебраическое уравнение с одним неизвестным. Например, нужно найти корни уравнения x 2 = 1. Если — как в данном примере — уравнение не имеет вида полинома, то его следует предварительно преобразовать в полином: x 2 — 1 = 0. После этого используется функция roots, единственным аргументом которой является имя полинома. Функция возвращает найденные корни полинома.

Если уравнение не имеет решения на множестве вещественных чисел (x 2 + 1 = 0), то Scilab ищет решение среди комплексных чисел:

Вычисление сумм элементов матрицы

Для вычисления суммы значений элементов матрицы используется функция sum.

Если следует вычислить отдельно сумму значений для каждого столбца, то вторым аргументом функции является число «1» или буква «с», а если для строки, то — «2» или буква «r».


Вычисление произведения элементов матрицы

Для вычисления произведения используется функция prod.

Если следует вычислить отдельно произведение значений каждого столбца, то вторым аргументом функции является число «1» или буква «с», а если для строки, то — «2» или буква «r».


Дифференциалы

Для нахождения дифференциалов в определенной точке используется функция numdiff, первый аргумент которой является именем функции, которую нужно продифференцировать, а второй — координата точки, в которой нужно вычислить производную.

Вычисление интегралов, решение уравнений и систем

Краткие теоретические сведения

В Scilab вычисление определенного интеграла методом трапеций реализовано функцией

где x –вектор значений аргумента подынтегральной функции на отрезке интегрирования, y –вектор значений, полученных при вычислении подынтегральной функции для элементов вектора x.

Например, для вычисления нужно выполнить следующий набор команд:

Фрагмент программы x=2:0.01:5.3 y =2*x./(sin(x)+1.5) integral = inttrap(x,y)disp(integral)Результат 30.436962

Для вычисления определенного интеграла с использованием алгоритма квадратурных формул предназначена функция

Integrate(fun, x, a, b, ,er1 ,er2),

где fun– подынтегральная функция в символьном виде, x – переменная интегрирования в символьном виде, a, b –пределы интегрирования, er1,er2 –абсолютная и относительная погрешности интегрирования (необязательные параметры).

Например, для вычисления нужно задать:

Фрагмент программы z=integrate(‘2*x./(sin(x)+1.5)’, ‘x’, 2, 5.3)disp(z)Результат 30.437056

Универсальная команда интегрирования:

[integral,err]=intg(a, b, name ,er1,er2),

где a, b –пределы интегрирования, name – имя подынтегральной функции (может быть задана с помощью внешней функции), er1,er2 –абсолютная и относительная погрешности интегрирования (необязательные параметры). Функция intgвозвращает значение интеграла (integral) и погрешность вычислений (err).

Внешнюю функцию можно задать командой

deff(‘переменная=имя функции(параметр)’, ‘символьное представление функции’) Например, deff(‘y=F(x)’, ‘y=2*x./(sin(x)+1.5)’).или

function переменная = имя функции(параметр-аргумент функции)

операторы, вычисляющие значение функции

endfunctionНапример, function y=f(t) y=t^2/sqrt(3+sin(t)) endfunctionилиfunction y=f(t),y=t^2/sqrt(3+sin(t)),endfunction

Ниже приводится пример вычисления интеграла .

Фрагмент программы function y=f(x) y=2*x./(sin(x)+1.5)endfunctionz=intg(2,5.3,f), disp(z)Результат 30.437056

Для решения нелинейных уравнений в Scilab используется функция

где x0 –начальное приближение корня, f– функция, описывающая левую часть уравнения f(x)=0.

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

Фрагмент программы deff(‘y=F(x)’, ‘y=sin(2*x)-cos(3*x.^2)-sin(3*x)’)root=fsolve(7,F)disp(root)Результат 6.9755674

Для решения полиномиальных уравнений вида используется функция

где а – вектор коэффициентов перед неизвестными полинома размерностью n+1(n – порядок полинома).

Результатом работы этой функции будет вектор корней полинома размерностью n.

Пример решения полиномиального уравнения приведен ниже.

Фрагмент программы v=[3 1 -10 -8]R=roots(v)disp(R)Результат 2. -1.3333333 — 1.

Для уравнения два корня – комплексные.

Фрагмент программы v=[3 1 -10 8]R=roots(v)disp(R)Результат — 2.2935835 0.9801251 + 0.4494650i 0.9801251 — 0.4494650i

Функция rootsможет также принимать в качестве параметра полином, созданный функциейpolyи представляющий собой левую часть уравнения :

где a –вектор коэффициентов полинома записанных в обратном порядке, x — символьная переменная, f1– символьная переменная, принимающая значения ‘c’ или ‘r’ (roots или coeff).

Например, чтобы создать полином , нужно использовать команду

Фрагмент программы p=poly([3 -2 1 0 4],’x’,’c’)disp(p)Результат

Для решения уравнения можно выполнить следующие команды:

Фрагмент программы p=poly([-8 -10 1 3],’x’,’c’)R=roots(p)disp(R)Результат 2. — 1.3333333 — 1.

Для решения систем линейных уравнений в Scilab есть следующие способы:

— применение операции левого матричного деления;

— использование обратной матрицы.

Если задана система линейных алгебраических уравнений вида:

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

То же самое решение может быть получено с помощью обратной матрицы, например:

Например, решить систему уравнений

Фрагмент программы A=[3 1;-3 5]; B=[-4 ;36]; X=inv(A)*B, disp(X)илиX1=A\B , disp(X1)Результат — 3.1111111 5.3333333

Для решения систем нелинейных уравнений можно использовать функцию

где x0 –вектор начальных приближений для неизвестных, f –функция, определяющая систему

Например, решение системы можно выполнить следующим образом:

Фрагмент программы function [y]=fun(x) y(1)=2*x(1)+x(2)-6 y(2)=x(1)^2+x(2)^2-14endfunctionX0=[1;1]R=fsolve(X0,fun)disp(R)Результат 1.2338096 3.5323808

Задание 1. Вычисление определенного интеграла

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

Шаг 1. Создадим вектор X, значения которого будут изменяться от 2,1 до 4,3 с шагом 0.01.

Шаг 2. Создадим вектор Y, каждое значение которого вычисляется по формуле .

Шаг 3. Применим команду inttrap(X, Y).

Шаг 4. Используем функцию integrate,задав подынтегральную функцию в символьном виде.

Шаг 5. Определим внешнюю функцию с помощью команды deffили конструкции function

Шаг 6. Выведем результаты, используя команду disp.

ПрограммаРезультат выполнения
X =2.1:0.01:4.3 Y =sin(X)/1.5 integral_1 = inttrap(X,Y)integral_2=integrate(‘sin(x)/1.5’, ‘x’, 2.1, 4.3)disp(integral_1)disp(integral_2)— 0.0693640 — 0.0693646
deff(‘y=F(x)’,’y=sin(x)/1.5′); integral_3=intg(2.1,4.3,F)function y=f(x) y=sin(x)/1.5endfunctionintegral_4=intg(2.1,4.3,f)disp(integral_3)disp(integral_4)— 0.0693646 — 0.0693646

Индивидуальные задания приведены в таблице 3.4.

Задание 2. Поиск корней уравнения, графическая интерпретация

Постановка задачи. Найти корень уравнения для заданного начального приближения. Выполнить графическую интерпретацию результата.

Шаг 1. Определим внешнюю функцию с помощью команды deffили конструкции function

Шаг 2. Найдем корень уравнения с помощью функции fsolve,подставив в качестве первого параметра заданное начальное приближение.

Шаг 3. Выведем результат, используя команду disp.

Шаг 4. Выполним графическую интерпретацию результата. Для этого зададим аргумент функции из левой части уравнения таким образом, чтобы найденный корень попадал в диапазон между первым и последним элементом вектора. Построим график функции из левой части уравнения с помощью plot.Построим также линию y=0 и отметим точку с абсциссой, равной корню, и ординатой, равной значению функции для корня.

ПрограммаРезультат выполнения
deff(‘y=F(x)’, …’y=sin(x)-cos(x.^2)-sin(2*x)’)root=fsolve(1,F)disp(root)x=0.5:0.01:2.5plot(x,F(x),’-b’,root,F(root),’xr’,x,0,’-k’)1.1695683

Индивидуальные задания приведены в таблице 3.5

ВариантУравнениеНачальноеприближение
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.

Задание 3. Поиск корней полиномиального уравнения, графическая интерпретация

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

Шаг 1. Создадим вектор коэффициентов полинома в левой части уравнения (или полином с помощью poly)

Шаг 2. Найдем корни уравнения с помощью функции roots.

Шаг 3. Выведем результат, используя команду disp.

Шаг 4. Выполним графическую интерпретацию результата. Для этого зададим аргумент функции из левой части уравнения таким образом, чтобы выбранный действительный корень попадал в диапазон между первым и последним элементом вектора. Построим график функции из левой части уравнения с помощью plot.Построим также линию y=0 и отметим точку с абсциссой, равной корню, и ординатой, равной значению функции для корня.

ПрограммаРезультат выполнения
v=[2 0 4 -6 -3]R=roots(v)disp(R)root=R(3)x=0.5:0.01:2y=2*x.^4+4*x.^2-6*x-3F_root=2*root^4+4*root^2-6*root-3plot(x,y,’-b’,root,F_root,’xr’,x,0,’-k’)— 0.4129576 + 1.7282075i — 0.4129576 — 1.7282075i 1.2164706 — 0.3905555

Индивидуальные задания приведены в таблице 3.6.

ВариантУравнение
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.

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

Постановка задачи. Решить систему линейных уравнений.

Шаг 1. Создадим матрицу коэффициентов при неизвестных

Шаг 2. Создадим вектор свободных членов.

Шаг 3. Умножим матрицу, обратную к матрице коэффициентов, на вектор свободных членов (или применим операцию левого матричного деления).

Шаг 4. Выведем результат, используя команду disp.

ПрограммаРезультат выполнения
A=[3 1 1;-3 5 6;1 -4 -2]; B=[-4 ;36;-19]; X=inv(A)*B disp(X)— 3. 3. 2.

Индивидуальные задания приведены в таблице 3.7.

Система уравненийСистема уравнений
1. 2.
3. 4.
5. 6.
7. 8.
9. 10.
11. 12.
13. 14.
15. 16.

Статьи к прочтению:

Метод Крамера за 3 минуты. Решение системы линейных уравнений — bezbotvy

Похожие статьи:

Приближенное вычисление интегралов Приближённое вычисление определённого интеграла основано на геометрическом смысле интеграла и сводится к приближённому…

Задание: графически и численно решить систему нелинейных алгебраических уравнений, на примере поиска точек пересечения двух функций. Исходные данные:…


источники:

http://www.kv.by/content/329221-osnovy-raboty-s-sistemoi-tekhnicheskikh-raschetov-scilab

http://csaa.ru/vychislenie-integralov-reshenie-uravnenij-i-sistem/