SCILAB – это система компьютерной математики, которая предназначена для выполнения инженерных и научных вычислений, таких как:
- решение нелинейных уравнений и систем;
- решение задач линейной алгебры;
- решение задач оптимизации;
- дифференцирование и интегрирование;
- задачи обработка экспериментальных данных (интерполяция и аппроксимация,
- метод наименьших квадратов);
- решение обыкновенных дифференциальных уравнений и систем.
Кроме того, SCILAB предоставляет широкие возможности по созданию и редактированию различных видов графиков и поверхностей. Не смотря на то, что система SCILAB содержит достаточное количество встроенных команд, операторов и функций, отличительная ее черта это гибкость. Пользователь может создать любую новую команду или функцию, а затем использовать ее наравне со встроенными. К тому же, система имеет достаточно мощный собственный язык программирования высокого уровня, что говорит о возможности решения новых задач.
Рекомендуемый порядок работы с системой SCILAB:
1) запуск системы с помощью файла WScilex.exe (результат – отображение основного окна системы);
2) запуск редактора с помощью пункта меню Editor основного окна системы (результат – отображение окна редактора);
3) ввод и редактирование SCILAB программы в окне редактора (результат – текст программы в окне редактора);
4) выполнение SCILAB программы с помощью пункта меню редактора Execute, подпункт Load into SCILAB (результат отображается в основном окне системы);
5) Сохранение SCILAB программы с помощью пункта меню редактора File (результат – файл с расширением. sce).
Рассмотрим примеры решения математических задач, наиболее часто встречающихся при математическом моделировании электронных схем.
Пример решения системы линейных уравнений с помощью системы SCILAB.
Дано: система линейных алгебраических уравнений вида:
Требуется: найти корни системы уравнений.
Решение: для решениязадачи с помощьюSCILABнеобходимо преобразовать исходную систему уравнений в матричную форму AX=B:
.
Определение корней системы линейных уравнений вSCILABвозможно различными способами:
а) воспользоваться встроенной функцией решения систем линейных алгебраических уравнений LinSolve(A, B), которая возвращает вектор корней уравнения;
б) применить формальный метод решения с помощью обратной матрицы X = A-1 B, который в SCILAB будет иметь следующий вид: X=inv(A)*B, где inv – встроенная функция вычисления обратной матрицы.
Текст SCILABпрограммы для решения задачи, который необходимо ввести в окне редактора:
// Ввод матрицы A
a11 = 0.3; a12 = 0.2; a13 = 6.6; a14 = -1.1;
a21 = 4.5; a22 = -1.8; a23 = -0.3; a24 = 6.5;
a31 = -7.3; a32 = 9.7; a33 = 10.9; a34 = -4.1;
a41 = 8.1; a42 = -2.7; a43 = 8.7; a44 = -8.7;
A = [a11 a12 a13 a14; a21 a22 a23 a24; a31 a32 a33 a34; a41 a42 a43 a44;];
// Ввод вектора B
b1 = 1; b2 = 6.5; b3 = -4.1; b4 = 8.9;
B = [b1; b2; b3; b4];
// Решение системы уравнений формальным методом
X=inv(A)*B;
// Решение системы уравнений с помощью встроенной функции
X=inv(A)*B;
X=LinSolve(A, B);
// Вывод решения
X
Для получения результата рения необходимо выполнить программу с помощью пункта меню редактора Execute, подпункт Load into SCILAB. Результат отобразится в основном окне системы:
X =
- 1.4039333
- 0.6028857
- 0.1027208
- 0.1997401
Пример решения системы нелинейных алгебраических уравнений с помощью системы SCILAB.
Дано: система нелинейных алгебраических уравнений вида:
Требуется: найти корни системы уравнений.
Решение:
особенностью решения нелинейных алгебраических уравнений является применение численных (итерационных) методов, для которых требуется назначение начальных приближений корней. В SCILABдля решения данной задачи используется встроенная функция fsolve([x1, … xn], fun), где x1, … xn – начальные приближения корней, fun – подпрограмма функция, в которой описана решаемая система уравнений. Пред применением исходная система уравнений должна быть представлена в следующей в форме:
Текст SCILABпрограммы для решения задачи, который необходимо ввести в окне редактора имеет следующий вид:
//Описание системы
function[y] = fun(x)
y(1) = 2*x(1)+x(2)-5+2*x(3)^2;
y(2) = x(2)^3 + x(3) - 4;
y(3)=x(1)*x(2)+x(3)-%e^x(3);
endfunction;
// Численное решение
[x]=fsolve([0.5 0.6 1], fun);
// вывод решения
x
Для получения результата рения необходимо выполнить программу с помощью пункта меню редактора Execute, подпункт Load into SCILAB. Результат отобразится в основном окне системы:
x = 1.0271746 1.4642447 0.8606410.
На основе вышеприведенных программ возможно построение более сложных процедур для выполнения всестороннего анализа электронных схем.