LAB 1
SCILAB. Введение
Работа с редактором Scinotes в ScilabЧто такое Scinotes
Scinotes — встроенный текстовый редактор в среде Scilab для создания и редактирования скриптов (.sci файлы) и функций.

Основные возможности редактора
  • Подсветка синтаксиса
  • Автодополнение кода
  • Отступы и форматирование
  • Поиск и замена
  • Работа с несколькими файлами
  • Закладки
Запуск редактора
Есть несколько способов открыть Scinotes:
  1. Через меню:
  • File → New → Script
  • File → Open для существующего файла
Создание нового скрипта
  1. Откройте Scinotes
  2. Напишите код:
// Пример простого скрипта
disp("Привет, мир!")
x = 5;
y = 10;
z = x + y;
disp(z)

Сохранение файла
  • File → Save или File → Save as
  • Расширение файла должно быть .sci или .sce
  • Рекомендуется использовать осмысленные имена файлов
Запуск скрипта
Способы выполнения кода:
  1. Через меню:
  • Execute → Execute
  • Execute → Execute to end
  1. С помощью клавиш:
  • Ctrl + R — выполнить выделенный участок
  • F5 — выполнить весь файл
  1. Через командную строку:
scilab
exec('имя_файла.sci')

Настройки редактора
Доступны через:
  • Tools → Preferences → Editor
  • Можно настроить:
  • Темы оформления
  • Размер шрифта
  • Отступы
  • Автосохранение
  • Кодировку
Полезные советы
  • Всегда добавляйте комментарии к коду
  • Используйте осмысленные имена переменных
  • Сохраняйте работу регулярно
  • Организуйте код в функции
  • Проверяйте синтаксис перед запуском

Комментарии в коде


В Scilab существует несколько способов добавления комментариев в код. Давайте рассмотрим основные типы комментариев и правила их использования.

1. Однострочные комментарии
Используются для комментирования отдельных строк кода. Начинаются с двух символов //
// Это однострочный комментарий
x = 5; // Комментарий после оператора
y = 10; // Еще один пример комментария в конце строки
2. Многострочные комментарии
Используются для больших блоков текста. Заключаются между / и /

scilab
/* Это многострочный комментарий Он может занимать несколько строк И использоваться для подробных пояснений */
/* Это многострочный комментарий Он может занимать несколько строк И использоваться для подробных пояснений 
3. Документация функций
Для документирования функций используется специальный формат комментариев:
scilab
function [output] = myFunction(input)
    //help
    // ОПИСАНИЕ: Функция выполняет какое-то действие
    // ВХОДНЫЕ ПАРАМЕТРЫ:
    //   input - входной параметр функции
    // ВЫХОДНЫЕ ПАРАМЕТРЫ:
    //   output - результат работы функции
    
    // Тело функции
    output = input * 2;
endfunction
Правила оформления комментариев
  • Комментарии должны быть понятными и информативными
  • Рекомендуется использовать английский язык для документации
  • Комментарии следует размещать перед описываемым кодом
  • Не стоит перегружать код избыточными комментариями
Примеры использования
// Пример расчета площади круга
// Константы
pi = 3.14159; // Число пи

/* 
Функция для расчета площади круга
Принимает радиус в качестве параметра
Возвращает площадь
*/
function area = calculateArea(radius)
    // Формула расчета площади
    area = pi * radius^2;
endfunction

// Пример использования функции
r = 5; // Радиус круга
S = calculateArea(r); // Расчет площади

Вычисления в Scilab


Базовые арифметические операции
Основные операторы:
  • Сложение: +
  • Вычитание: -
  • Умножение: *
  • Деление: /
  • Возведение в степень: ^
// Простые вычисления
a = 5 + 3;        // 8
b = 10 - 4;       // 6
c = 2 * 7;        // 14
d = 20 / 4;       // 5
e = 2^3;          // 8
Математические функции
Встроенные функции:
  • Тригонометрические: sin(), cos(), tan()
  • Экспонента и логарифмы: exp(), log(), log10()
  • Корень: sqrt()
  • Константы: %pi, %e
// Тригонометрические функции
x = sin(%pi/2);     // 1
y = cos(0);         // 1

// Экспонента и логарифмы
z = exp(1);         // e
w = log(10);        // натуральный логарифм

// Корень
r = sqrt(16);       // 4
Вычисления с массивами
  • Работа с векторами и матрицами:
// Создание векторов
v1 = [1 2 3 4];
v2 = [5 6 7 8];

// Поэлементные операции
sum_v = v1 + v2;    // [6 8 10 12]
prod_v = v1 .* v2;  // [5 12 21 32]

// Матрицы
A = [1 2; 3 4];
B = [5 6; 7 8];

// Матричное умножение
C = A * B;

Форматы представления чисел в Scilab

Основные форматы вывода
В Scilab существует два основных формата представления чисел:

Научный формат (Scientific notation)
  • Активируется командой format e
  • Числа отображаются в экспоненциальной форме
  • По умолчанию используется 8 значащих цифр
  • Стандартный формат (Standard notation)
  • Активируется командой format v
  • Scilab автоматически выбирает формат отображения
  • По умолчанию используется 10 значащих цифр

Важные особенности
  • Изменение формата влияет только на отображение чисел на экране
  • Внутренняя точность вычислений остается неизменной
  • Формат не влияет на результаты вычислений
  • Все числа хранятся с фиксированной точностью, определяемой количеством бит
Настройка количества цифр
Можно задать количество значащих цифр при выводе:

format('v', количество_цифр)

или

format('v', 20)  // установка 20 значащих цифр
3/5.5            // результат будет показан с 20 знаками
Работа с тригонометрическими функциями в Scilab в градусах и радианах

Основные функции
В Scilab доступны две группы функций для работы с синусом и косинусом:

Функции для работы с радианами:
  • sin(x) — вычисляет синус угла в радианах
  • cos(x) — вычисляет косинус угла в радиана
Функции для работы с градусами:
  • sind(x) — вычисляет синус угла в градусах
  • cosd(x) — вычисляет косинус угла в градусах
Примеры использования
Работа с радианами
scilab
// Вычисление синуса и косинуса для π/2 (90 градусов)
x = %pi/2;
sin_rad = sin(x)    // Результат: 1
cos_rad = cos(x)    // Результат: 0
Работа с градусами
scilab
// Вычисление синуса и косинуса для 90 градусов
x = 90;
sin_deg = sind(x)   // Результат: 1
cos_deg = cosd(x)   // Результат: 0
Важные особенности
Константа %pi используется для представления числа π

При работе с радианами все углы должны быть заданы в радианах

При работе с градусами углы задаются в градусах

Функции работают как с отдельными числами, так и с массивами

Преобразование между градусами и радианами
Для преобразования можно использовать следующие формулы:

scilab
// Градусы в радианы
rad = deg * %pi/180;

// Радианы в градусы
deg = rad * 180/%pi;
Округление чисел в Scilab

Основные функции округления
В Scilab существует несколько функций для округления чисел:
  1. round() — округление до ближайшего целого
  2. floor() — округление вниз (к меньшему)
  3. ceil() — округление вверх (к большему)
  4. int() — округление к нулю
Функция round()
round(x) — округляет числа до ближайшего целого. В случае равного расстояния до соседних целых:

  • Положительные числа округляются в сторону бесконечности
  • Отрицательные числа округляются в сторону минус бесконечности
Особенности округления
Работает с вещественными и комплексными числами

Для положительных чисел: round(x) = int(x+0.5)

Для отрицательных чисел: round(x) = int(x-0.5)

// Округление положительных чисел
round([1.3 1.5 1.7 2.5 3.7])
// Результат: [1 2 2 3 4]

// Округление отрицательных чисел
round([-1.3 -1.5 -1.7 -2.5 -3.7])
// Результат: [-1 -2 -2 -3 -4]

// Работа с комплексными числами
round([2.2+%i*23, %pi*%i, -%i])
Другие функции округления
floor(x) — округление вниз:
floor(3.7)  // Результат: 3
floor(-3.7) // Результат: -4
Другие функции округления
ceil(x) — округление вверх:
ceil(3.7)   // Результат: 4
ceil(-3.7)  // Результат: -3

int(x) — округление к нулю:
int(3.7)    // Результат: 3
int(-3.7)   // Результат: -3
В Scilab есть несколько способов получить остаток от деления:
Синтаксис:
Оператор % (процент)

остаток = a % b;


Функция modulo()
остаток = modulo(a, b);


Функция pmodulo()

остаток = pmodulo(a, b);
Различия между методами
Оператор % и modulo():

  • Возвращают остаток с тем же знаком, что и делимое
  • Результат может быть отрицательным
Функция pmodulo():

  • Всегда возвращает положительный остаток
  • Результат находится в диапазоне [0, b)
// Пример 1: Положительные числа
a = 10;
b = 3;
disp(a % b);        // 1
disp(modulo(a, b)); // 1
disp(pmodulo(a, b));// 1

// Пример 2: Отрицательные числа
a = -10;
b = 3;
disp(a % b);        // -1
disp(modulo(a, b)); // -1
disp(pmodulo(a, b));// 2

// Пример 3: Работа с массивами
A = [10 15 20];
B = [3 4 5];
disp(A % B);        // [1 3 0]
disp(modulo(A, B)); // [1 3 0]
disp(pmodulo(A, B));// [1 3 0]
Вычисление НОД и НОК в Scilab

Наибольший общий делитель (НОД)
Для вычисления НОД используется функция gcd.
Синтаксис:
[g, u] = gcd(A)

где:

A — вектор целых чисел

g — наибольший общий делитель

u — дополнительный вектор коэффициентов
Наименьшее общее кратное (НОК)

Для вычисления НОК используется функция lcm.
[pp, fact] = lcm(p)

где:

p — вектор целых чисел

pp — наименьшее общее кратное

fact — дополнительный вектор коэффициентовэ




Пример 1: НОД для целых чисел
scilab
// Вычисление НОД для двух чисел
A = [12, 18];
[g, u] = gcd(A)
// Результат: g = 6

// Для нескольких чисел
B = [12, 18, 24];
[g, u] = gcd(B)
// Результат: g = 6


// Вычисление НОК для двух чисел
V = int32([12, 18]);
pp = lcm(V)
// Результат: pp = 36

// Для нескольких чисел
W = int32([12, 18, 24]);
[pp, fact] = lcm(W)
// Результат: pp = 72
Работа с матрицами (БЛОК Б)

Векторы в ScilabОсновные типы векторов
В Scilab существует два основных типа векторов:
  • Вектор-строка — элементы расположены горизонтально
  • Вектор-столбец — элементы расположены вертикально
Создание векторов

Вектор-строка

// Простой способ создания
v1 = 1 2 3 4 5;

// Через двоеточие
v2 = 1:5;

// Через функцию colon
v3 = colon(1, 1, 5);

// Через linspace
v4 = linspace(1, 5, 5);

// Через logspace
v5 = logspace(0, 1, 5);
Вектор-столбец

// Транспонирование вектор-строки
c1 = [1 2 3 4 5]';

// Через точку с запятой
c2 = 1; 2; 3; 4; 5;

// Через квадратные скобки
c3 = [1; 2; 3; 4; 5];

// Преобразование вектор-строки
c4 = v1';
Основные способы создания матриц
  1. Прямое задание элементов
A = [1 2 3; 4 5 6; 7 8 9];
  1. Создание специальных матриц
  • Матрица из нулей: zeros()
  • Матрица из единиц: ones()
  • Единичная матрица: eye()
  • Случайная матрица: rand()
  • Нормальная случайная матрица: randn()
// Прямоугольная матрица
A = [1 2 3; 4 5 6];

// Квадратная матрица
B = [1 2 3; 4 5 6; 7 8 9];

// Матрица из нулей
C = zeros(3, 4);

// Матрица из единиц
D = ones(2, 2);

// Единичная матрица
E = eye(3, 3);

// Случайная матрица
F = rand(2, 3);

// Нормальная случайная матрица
G = randn(3, 3);
Операции с матрицами

Основные операции
  • Сложение: +
  • Вычитание: -
  • Умножение: *
  • Поэлементное умножение: .*
  • Транспонирование: '
A = [1 2; 3 4];
B = [5 6; 7 8];

// Сложение
C = A + B;

// Умножение
D = A * B;

// Транспонирование
E = A';
  1. Доступ к элементам
  • Обращение к элементу: A(i,j)
  • Обращение к строке: A(i,:)
  • Обращение к столбцу: A(:,j)
A = [1 2 3; 4 5 6; 7 8 9];

// Получение элемента
element = A(2,3); // 6

// Получение строки
row = A(1,:); // [1 2 3]

// Получение столбца
column = A(:,2); // [2; 5; 8]
Практические советы
  • Всегда проверяйте размерности матриц перед операциями
  • Используйте скобки для сложных выражений
  • Сохраняйте промежуточные результаты в переменные
  • Используйте функции disp() для проверки содержимого матрицы
  • Для больших матриц используйте специальные функции создания
Функция disp в ScilabОсновное назначение
disp() — это встроенная функция для вывода информации в командное окно Scilab. Она позволяет отображать:
  • Числа
  • Строки
  • Матрицы
  • Структуры данных
  • Переменные
базовый синтаксис
disp(выражение)

вывод чисел и строк


// Вывод числа
disp(42);

// Вывод строки
disp("Привет, мир!");

// Вывод нескольких значений
disp("Число: ", 42);


вывод переменных

x = 3.14;
y = "значение";
disp(x);
disp(y);


вывод матриц и векторов

A = [1 2 3; 4 5 6];
v = [7 8 9];
disp(A);
disp(v);
Особенности форматирования
  1. Автоматическое форматирование
  • Числа выводятся с фиксированной точкой
  • Матрицы выводятся в виде таблицы
  • Строки выводятся как текст
Комбинированный вывод

a = 10;
b = 20;
disp("Сумма: " + string(a + b));


вывод с пояснениями

x = 3.14;
disp("Значение переменной x:");
disp(x);

пример вывод результатов вычислений 

a = 5;
b = 3;
c = a + b;
disp("Результат сложения:");
disp(c);


вывод нескольких значений

x = 1.23;
y = 4.56;
z = x + y;
disp("Значения переменных:");
disp("x = " + string(x));
disp("y = " + string(y));
disp("Сумма = " + string(z));
Задание
  • часть 1:
    описание:
    • задания блок А в соответствии с вариантом
  • часть 2:
    описание:
    • задания блок B в соответствии с вариантом
Made on
Tilda