Променливи и видове променливи

Тази глава със сигурност е най-фундаменталната част, която всеки потребител на Scilab трябва да овладее. Той дефинира операциите по създаване и манипулиране на мултииндексирани обекти, които могат да бъдат матриците (реални, булеви.).

видове

Забележка 1: Променливите се формират от буквено-цифров низ, започващ с буква (но също и% $? #) От 24 знака (освен това те не се вземат предвид).

Забележка 2: Не е възможно да се преназначат предварително дефинирани променливи, както и примитивните функции 2.1 .

След като променливата е дефинирана, за да види съдържанието й, просто въведете името й и проверете:

Забележка 3: При изпълнение на команда се появява отговор ans, това е променлива, която може да бъде преназначена.

Забележка 4: Ако променлива съществува и съдържа например матрица, присвояването на тази променлива на друго количество (не непременно от същия тип) не генерира съобщение за грешка или предупреждение.

Scilab предоставя полезни команди за управление на променливите, които можем да споменем

Функцията who връща списъка с променливи (намираме известни знания „A“, „% i“, „% e“ и „% eps“), информация за заетата и оставаща памет в брой думи (1 дума = 1 номер с двойна точност), а в последния ред броят на използваните и налични променливи (общо).

Командите whos (), whos -name 'старт на име (и) на променливи', whos -type 'type type' връщат по-подробна информация за размера на променливите.

Много полезна функция за матриците и следователно за променливите е функцията за размер. Имайте предвид, че Scilab може да прави матрици от почти всичко! size връща броя на редовете и колоните.

размер (2). Така ? Вижте също: дължина (A), тип (A), a = 2 * A .

По-късно ще уточним съществуването на локални и глобални променливи със съответните им употреби и свойства.

Синтаксис, по-подходящ за създаването на таблици А и Б и следното С други думи

Внимание, тази последна команда трябва да знае две поведения, първото е мястото, където отговорът е празната таблица. Вторият вижда тук, че последната стойност е тази, която е по-ниска от посочената граница. Тази последна спецификация може да причини затруднения, например докато

За да се преодолее тази особеност, има командата linspace, която се използва във формата linspace (начало, край, брой стойности). Този път таблицата с резултати задължително съдържа граничните стойности.

Вижте също пространството за регистрация (начало, край, брой стойности) 2.2 .

Тези достъпи до елементите на масива също правят възможно въздействието върху (цялата или) част от масива:

Извличането и възлагането играят идентична роля, като цялото същество сочи към избрания елемент (и).

Вече използвахме функцията за размер, за масивите функцията за дължина изглежда по-подходяща, връщайки общата дължина на обекта (дори за матрица).

Има обаче малък трик за достигане до последния елемент на масив, това е използването в израза на $:

Тук имаме стандартните функции за извличане, които имат повечето езици за програмиране, но езици като FORTRAN 90 или Matlab 2.3 предлагат възможност за директно насочване към подмножество на масив: тук поставяме в скоби набор от улики. Това е валидно както за извличане, така и за възлагане.

За да се отбележат някои особености, се предлага възможността да има излишък на индексите с две поведения:

- при извличане - при присвояване: с накрая последната присвоена стойност (по реда на индексите).

  • t (1: 2: $),
  • t ($: - 1: 1)
  • т (:)

Нека разгледаме още една особеност. Ако се опитаме да извлечем стойността на 6-ия елемент от t, тогава това, което беше предсказуемо, от друга страна динамично присвоява допълнителна стойност на t. Сега можем да видим, че масив с достатъчен размер се преразпределя автоматично, запълнен с 0 .

Забележка: Интензивното използване на това динамично (пре) разпределение може да генерира непосилни времена за изпълнение.

Възможно е също така да се договори писането на определени задания частта в скоби да се разглежда като набор от индекси, за които присвояваме стойност 2. Съгласно този принцип можем да разпределяме стойности извън размера на масива както преди.

От друга страна, ако променливата не е предварително дефинирана, интерпретаторът връща масив от колона.

Тази форма на писане може да се използва по време на извличане или с различни размери на вектори. Тази договорена писменост може да се използва за размяна на променливи

От друга страна, командата не изтрива променливата, но я запазва празна, за да изчезне променливата, трябва да използвате командата clear .

Има няколко специфични функции:

  • sum (): сума от елементи.
  • prod (): продукт на елементи.
  • mean (): средна стойност на елементите.
  • max (), min (): максималната и минималната стойност.
  • cumsum (), cumprod (): връща масив с първата кумулативна сума на елементите, а втората кумулативния продукт.
  • sort (), gsort (), lex_sort (): различни процедури за сортиране.


Упражнения

  1. Направете сума ([]) .
  2. Направете прод ([]) .
  3. Просто напишете 5! с функцията prod .
  4. Инициализирайте вектора с размер 10 с .
  5. Генерирайте произволен вектор с размер 10 (rand (1,10) и го нормализирайте за евклидовата норма ().
  6. Генериране на таблицата на мощностите от до;
  7. Напишете вектор, съдържащ стойностите на, за .
  8. Обърнете реда на предишния вектор.
  9. Генерирайте вектор от числа, преминаващи от нагоре на стъпки от .
  10. Извличане от предишния вектор на множеството редове на .

    нули (n, p) връща нулевата матрица от n редове и p колони.

one (n, p) както преди, но матрицата се запълва с 1.

око (n, p) матрица за идентичност с размер n p;

diag (v) или diag (v, i) Използвайки вектора или масива v, изградете матрицата с v като основен диагонал. аргумента i, указващ съответния диагонал.

rand (n, p) връща матрица от случайни числа с равномерно разпределение на .

За да получите нормално или друго разпространение, консултирайте се със съответната помощ.

matrix (v, n, p) функция на (пре) форматиране, прегледайте по колона елементите на v, които се поставят колона по колона в изходната матрица

Аргументът -1 може да замени един от номера на реда или колоната, например колонизацията на матрицата

Примитивите ones (), нули () и eye () могат да се използват чрез предаване на матрица като аргумент. Резултатът има същите размери като матрицата в аргумента.

Но човек може да посочи набори от индекси: извлича пресечната точка на подматрицата на редове 1 и 2 с колони 3 и 4. Този синтаксис е идентичен с присвояването

Що се отнася до масивите, можем да използваме излишък от индекси.Забележете използването на: посочване на всички индекси на колони (или редове). Можете също да използвате $

Възможно е да се разглежда матрица като вектор, този вектор се състои от колоните на матрицата, поставени от край до край:

Забележка: Това представяне на матрицата под формата на вектори на колони съответства на режима на съхранение на матриците (колони по колони).

Възможно е да се възползвате от блоковата структура на матрица за нейното дефиниране

Можем да добавим функции за извличане като:

  • diag (A) 2.4: извлича диагонала на матрицата A
  • tril (A) и triu (A): съответно връщане на матрица, съставена от долната (долната) и горната (горната) част на A.