Scilab

Материал из ALT Linux Wiki

Установка:

apt-get install scilab

Общее

Если не описывается очистка экрана, значений, начало и конец цикла, в конце строки всегда ставится точка с запятой.

Ввод

x=input('Введите икс:');

Вывод

Числа:

disp(a);

Текста:

mprintf('Решений нет.')

Текста и числа:

mprintf('Текст%f\n',a)
Пример:

Код:

a=3;
mprintf('А а равно2:%f\n',a)

Вывод:

А а равно2:3.000000

Цикл

for k=1:3,
   <тело>
end

Условный оператор

if <усл> then
        <тело>
end

Очистка экрана, значений

Очистка переменных

clear

Очистка экрана

clc

Закрытие экранов графиков

close

Математика

Операции

   + — Плюс
   & — Логическое И
   : — Двоеточие
   .\ — Поэлементное левое деление
   .* — Поэлементное умножение
   .^ — Поэлементная экспонента
   ./ — Поэлементное правое деление
   .' — Поэлементное транспонирование
   == — Логическое равно
   > — Больше, чем
   >= — Больше или равно
   \ — Левое деление
   < — Меньше, чем
   <= — Меньше или равно
   * — Умножение
   ~ — Отрицание
   ~= — Не равно
   | — Логическое ИЛИ
   ^ — Экспонента
   / — Правое деление
   - — Минус
   ' — Транспонирование 

Числа

   %e - экспонента
   %pi - 𝜋

Переменная

a=3; b=0.2; c=0.563;

Матрица

Простая с тремя элементами в строчку:

a=[1 2 4]

Простая с двумя элементами в столбец:

b=[-7;2];

Трехстрочная:

b=[1,2,3; 4,5,6; 7,8,9];

От -2 до 5:

c=[-2:5]

Использование элемента

Первая строка, второй столбец матрицы a:

a(1,2)

Сумма матрицы

sum_a=sum(a);

Операции над матрицами

Так же над матрицами можно выполнять математические операции.

Поворот вправо/влево
A(:,$:-1:1)
Поворот вверх/вниз
A($:-1:1,:)
Обратная матрица
inv(A)

Длина матрицы

m=length(a)

Min значение

min=min(a);

Max значение

max=max(a);

Тригонометрия

sin

sin(a)

cos

cos(a)

tg

tan(a)

ctg

cotg(a)

arcsin

asin(a)

arccos

acos(a)

arctg

atan(a)

arcctg

acot(a)

Остаток

Остаток деления первого значения на второе.

pmodulo(a,b)

Разложение на простые числа

factor(a)

Степень

a в степени n:

a^n

Корень квадратный

sqrt(x)

Корень

nthroot(x,n)

Абсолютная величина

abs(x)

Описание функции

function name(a)

        <тело>

endfunction

Вывод графика

plot(x,y), xgrid

Случайное число

Генерируется матрица с размером указанным в скобках и из него берется случайное число.

r = rand(5,2)

Факториал

f = factorial (n)

Логарифм

Натуральный

y=log(x)

Десятичный

y=log10(x)

Конвертирование чисел

Можно подставлять как числа, так и матрицы.

  • из двоичной в десятичную:
y=bin2dec(str)
  • из десятичной в двоичную:
y=dec2bin(x)
  • из десятичной в шестнадцатеричную:
h=dec2hex(d)
  • из десятичной в восьмеричную:
o=dec2oct(d)
  • из шестнадцатеричной в десятичную:
d=hex2dec(h)
  • из восьмеричной в десятичную:
d=oct2dec(o)

Строки

Обработка строк

ASCII в код:

code2A=ascii(str1)
code2A=ascii('word')

Примеры программ

Построить график линейной функции

y=x+2 x∈[-2:5]

source code:
clear, clc, close
x=[-2:5];
y=x+2;
plot(x,y), xgrid

Построить график параболы

y=(x-2)^2 x∈[-2:5]

source code:
clear, clc, close
x=[-2:6];
y=(x-2)^2;
plot(x,y), xgrid

Решение квадратного уравнения

source code:
clear, clc
a=input('a=');
b=input('b=');
c=input('c=');
d=b^2-4*a*c;
if d>0 then
    x1=(-b+sqrt(d))/2/a;
    x2=(-b-sqrt(d))/2/a;
    mprintf('x1=%f\n',x1,'\n');
    mprintf('x2=%f\n',x2);
else
    if d==0
        x1=(-b+sqrt(d))/2/a;
        mprintf('x=%f\n',x1);
    else
        mprintf('Решений нет.');
    end
end

Проверка:

  • Два решения:
    • a=1, b=2, c=-3
  • Одно решение:
    • a=1, b=2, c=1
  • Нет решений:
    • a=1, b=1, c=1

Графическое решение квадратного уравнения

source code:
clc, clear, close;
deff('y2=fn(x) ','y2=(x-2)^2-7') //описывается функция и формула
x=linspace(-3,7,100); 
x0 = [-3;3]
xk = fsolve(x0,fn) //решение функции
plot(x,fn(x),xk,fn(xk),'o') //построение графика

Точки пересечения графиков

1.Строим графики

source code:
x=[-2:5];
y=x+2;
plot(x,y), xgrid
x2=[-2:5];
y2=(x-2)^2;
plot(x2,y2), xgrid

2.Инструменты>Увеличить область

Не выделяем/ не нажимаем!

Наводим на точки пересечения графиков и в строке состояния смотрим их координаты.