Постановка задачи. Даны две матрицы А и В.

A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru

1) Создать вектор V1 из второго столбца матрицы А, вектор V2 из третьей строки матрицы В и вектор V3 из первого столбца матрицы B.

Порядок составления программы таков.

Шаг 1. Создаем матрицы перечислением элементов по строкам, разделителем между строками является «;».

Шаг 2. Выводим матрицы в командное окно.

Шаг 3. Формируем вектор V1 из всех строк второго столбца матрицы A, поэтому в качестве номера строки матрицы указываем символ «:», что означает «все», а в качестве номера столбца указываем 2. Аналогично формируются вектора V2 и V3;

Шаг 4. Выводим значения векторов в командное окно.

Программа Результаты расчетов
A=[2 -1 -3; 8 -7 -6; -3 4 2]B=[2 -1 -2; 3 -5 4; 1 2 1]disp(A)disp(B) 2. - 1. - 3. 8. - 7. - 6. - 3. 4. 2. 2. - 1. - 2. 3. - 5. 4. 1. 2. 1.
V1=A(:,2)V2=B(3,:)V3=B(:,1)disp(V1)disp(V2)disp(V3) - 1. - 7. 4. 1. 2. 1. 2. 3. 1.

2) Вычислить V2×V1 и A×V1.

Порядок составления программы таков.

Шаг 1. Выбираем переменные, например, R1 и R2, которые будут являться результатами выполнения операций умножения.

Шаг 2. Так как операции умножения выполняются по законам математики, то точка перед знаком умножения не ставится. Ожидаемый результат умножения двух векторов – одно число, а результат умножения матрицы на вектор – это вектор-столбец из трех элементов.

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

Программа Результаты расчетов
R1=V2*V1disp(R1)R2=A*V1disp(R2) - 11. - 7. 17. - 17.

3) Вычислить A×B, A-1, BT.

Порядок составления программы таков.

Шаг 1. Выбираем переменные, например, W1, W2, W3, которые будут являться результатами выполнения операций.

Шаг 2. Так как операции умножения матриц выполняются по законам математики, то точка перед знаком умножения не ставится. Ожидаемый результат умножения двух матриц – матрица из трех строк и трех столбцов.

Шаг 3. Вычисляем обратную матрицу с помощью стандартной функции inv, выводим результат в командную область с помощью оператора disp.

Шаг 4. Вычисляем транспонированную матрицу матрицу с помощью стандартной операции «апостраф» - B’, выводим результат в командную область с помощью оператора disp.

Программа Результаты расчетов
W1=A*Bdisp(W1)W2=inv(A)disp(W2)W3=B'disp(W3) - 2. - 3. - 11. - 11. 15. - 50. 8. - 13. 24. - 0.6666667 0.6666667 1. - 0.1333333 0.3333333 0.8 - 0.7333333 0.3333333 0.4 2. 3. 1. - 1. - 5. 2. - 2. 4. 1.

4) Вычислить определители А и В.

Порядок составления программы таков.

Шаг 1. Выбираем переменные, например, S1, S2, которые будут являться результатами выполнения операций.

Шаг 2. Определители матриц вычисляем в программе с помощью стандартной функции det. Выводим результат в командную область с помощью оператора disp.

Программа Результаты расчетов
S1=det(A)S2=det(B)disp(S1)disp(S2) - 15. - 49.

5) Вычислить вектор V3 поэлементным умножением векторов V1 и V3.

6) Вычислить матрицу D поэлементным умножением матриц A и B.

Порядок составления программы таков.

Шаг 1. Выбираем переменные, например, Z1, Z2, которые будут являться результатами выполнения операций.

Шаг 2. Так как операция умножения двух векторов выполняется поэлементно, то перед знаком умножения ставится точка. Ожидаемый результат поэлементного умножения двух векторов – вектор из трех элементов.

Шаг 3. Так как операция умножения двух матриц выполняется поэлементно, то перед знаком умножения ставится точка. Ожидаемый результат поэлементного умножения двух матриц – матрица из трех строк и трех столбцов.

Программа Результаты расчетов
Z1=V1.*V3disp(Z1) Z2=A.*Bdisp(Z2) - 2. - 21. 4. 4. 1. 6. 24. 35. - 24. - 3. 8. 2.

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

Таблица 2.4.

1. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru 2. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru
3. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru 4. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru
5. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru 6. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru
7. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru 8. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru
9. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru 10. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru
11. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru 12. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru
13. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru 14. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru
15. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru 16. A= Постановка задачи. Даны две матрицы А и В. - student2.ru B= Постановка задачи. Даны две матрицы А и В. - student2.ru

Задание 4. Вычисление суммы и произведения

Постановка задачи. Вычислить сумму и произведение элементов по заданным формулам.

Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru

Порядок составления программы таков.

Шаг 1. Создаем вектор, который будет изменяться от нижнего предела суммирования до верхнего, например, от 1 до 8.

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

Шаг 3. Находим сумму элементов этого вектора с помощью стандартной функции sum, результат помещаем в переменную SS и выводим ее в командную область с помощью оператора disp.

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

Программа Результаты расчетов Программа Результаты расчетов
i=1:8F=(i+3).*(i-6)SS=sum(F)disp(SS)     - 48. i=1:5F1=(i+2*i-1)PP=prod(F1) disp(PP)   12320.    

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

Таблица 2.5

Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru
Постановка задачи. Даны две матрицы А и В. - student2.ru Постановка задачи. Даны две матрицы А и В. - student2.ru

Задание 5. Решение задач с матрицами

Постановка задачи.Дана матрица Y(3´4). Вычислить сумму элементов третьей строки и произведение элементов второго столбца матрицы Y. Вычислить максимальный элемент матрицы Y.

Порядок составления программы таков.

Шаг 1. Создаем матрицу, элементы которой подберем самостоятельно.

Выведем матрицу в командную область.

Шаг 2. С помощью стандартной функции sum найдем сумму элементов третьей строки, для этого укажем Y(3,:), что означает – третья строка и все столбцы в ней. Поместим сумму в переменную S и выведем результат в командную область.

Шаг 3. Для вычисления произведения проделываем ту же самую последовательность шагов, только воспользуемся стандартной функцией prod и выбираем второй столбец матрицы - Y(:,2). Поместим сумму в переменную S1 и выведем ее в командную область

Шаг 4. Для вычисления максимума воспользуемся стандартной функцией max, и так как нужно вычислить максимум среди всех элементов матрицы, то номер строки и столбца не указываем. Поместим результат в переменную М и выведем его в командную область.

Программа Результаты расчетов
Y=[2 -1 -3 8; -7 -6 -3 4; 2 5 8 2]disp(Y)S=sum(Y(3,:))disp(S)S1=prod(Y(:,2))disp(S1)M=max(Y)disp(M) 2. - 1. - 3. 8. - 7. - 6. - 3. 4. 2. 5. 8. 2. 17. 30. 8.

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

Таблица 2.6

Дана матрица Вычислить
  Y(3´4) Вычислить сумму элементов третьей строки и произведение элементов второго столбца матрицы Y. Вычислить максимальный элемент матрицы Y.
P(4´3)     Вычислить сумму элементов второй строки и произведение элементов третьего столбца матрицы P. Вычислить максимальный элемент матрицы P.
  M(4´4) Вычислить сумму элементов последней строки и произведение элементов первого столбца матрицы M. Вычислить минимальный элемент матрицы M..
A(3´3)     Вычислить сумму элементов второй строки и произведение элементов третьего столбца матрицы А. Вычислить минимальный элемент матрицы A.
  Y(3´4) Вычислить сумму элементов второй строки и второго столбца матрицы Вычислить минимальный элемент матрицы Y.
P(4´3)   Вычислить произведение элементов третьей строки и третьего столбца матрицы P. Вычислить максимальный элемент матрицы P.
M(4´4) Вычислить сумму элементов последней строки и первого столбца матрицы M. Вычислить максимальный элемент матрицы М.
A(3´3)     Вычислить произведение элементов второй строки и третьего столбца матрицы А. Вычислить максимальный элемент матрицы А.
Z(4´3)     Вычислить среднее арифметическое элементов второго столбца матрицы Z. Вычислить минимальный элемент матрицы Z.
P(4´5)     Вычислить среднее арифметическое элементов второй строки матрицы P. Вычислить минимальный элемент матрицы Р.
  M(4´4) Вычислить сумму элементов последней строки и произведение элементов первого столбца матрицы M. Вычислить сумму элементов матрицы М
A(3´3)     Вычислить сумму элементов второй строки и минимальный элемент третьего столбца матрицы А. Вычислить произведение элементов матрицы A.
  Y(3´4) Вычислить максимальный элемент второй строки и произведение элементов второго столбца матрицы Y. Вычислить сумму элементов матрицы Y.
P(4´3)     Вычислить сумму элементов третьей строки и максимальный элемент третьего столбца матрицы P. Вычислить произведение элементов матрицы Р.
  M(4´4) Вычислить сумму элементов последней строки и минимальный элемент первого столбца матрицы M. Вычислить произведение элементов матрицы М.

Программирование в Scilab

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

Для программирования разветвляющихся алгоритмов в Scilab существуют оператор условия и оператор выбора.

Условный оператор представлен в нескольких формах и имеет следующий общий вид.

Полная форма 1

If ЛВ then

ОПЕРАТОР1

else ОПЕРАТОР2,

End

Полная форма 2

If ЛВ

then ОПЕРАТОР1,

elseif ЛВ2 then ОПЕРАТОР2,

else ОПЕРАТОР,

End

Краткая форма

If ЛВ then ОПЕРАТОР1

End

Здесь

ЛВ, ЛВ1, ЛВ2, ЛВ3 – логические выражения;

ОПЕРАТОР1, ОПЕРАТОР2, ОПЕРАТОР– любые операторы или группы операторов языка Scilab.

Разделителями в операторах могут быть запятая или точка с запятой. Если ОПЕРАТОР расположен в следующей строке, то разделитель ставить не обязательно.

Порядок выполнения оператора условия следующий.

Полная форма 1

- Логическое выражение вычисляется до константы (0 или 1).

- Если логическое выражение истинно, то выполняется оператор, стоящий после слова then, а затем следующий за оператором if оператор.

- Если логическое выражение ложно, то выполняется оператор, стоящий после слова else, а затем следующий за оператором if оператор.

Краткая форма

- Логическое выражение вычисляется до константы (0 или 1).

- Если логическое выражение истинно, то выполняется оператор, стоящий после слова then, а затем следующий за оператором if оператор.

- Если логическое выражение ложно, то выполняется следующий за оператором if оператор.

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

Название Знак операции Пример
Равно == x==y
Не равно ~= x~=y
Меньше < x<y
Больше > x>y
Меньше или равно <= x<=y
Больше или равно >= x>=y
Логическое И & x&y
Логическое ИЛИ | x|y
Логическое НЕ ~ ~x

В простых логических выражениях используется знак операции отношения, например: a > b или c <= 5.8. В сложных логических выражениях используются знаки логических операций, например:

A>b | b<0

(a > 0) & (b>0)

Ниже приведен фрагмент программы, в котором с помощью оператора if в командную область выводится либо символьная константа "корни мнимые" либо "корни вещественные" в зависимости от того отрицателен ли результат арифметического выражения b^2 - 4*a*c.

if b^2 - 4*a*c < 0 then disp("корни мнимые") else disp("корни вещественные")end

Операторы цикла предназначены для программирования циклических алгоритмов, они изменяют естественный ход выполнения программы и относятся к операторам управления. Операторы являются взаимозаменяемыми, выбор для применения того или иного оператора зависит от программиста.

Операторы цикла в Scilab можно классифицировать следующим образом:

- оператор цикла с параметрами for;

- оператор цикла с предусловием while.

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

- для программирования циклов с переменной цикла и параметрами;

- для программирования циклов без явно выраженной переменной цикла.

Оператор цикла for предназначен для программирования циклических алгоритмов, когда переменная цикла явно выражена и изменяется от начального значения до конечного значения с постоянным шагом.

Общий вид оператора цикла for

for x= xn : dx : xk

ОПЕРАТОР,

End

Здесь :

x – переменная цикла,

xn – начальное значение переменной цикла,

dx – шаг изменения переменной цикла,

xk – конечное значение переменной цикла,

ОПЕРАТОР – любой оператор или группа операторов рабочей части цикла.

Порядок выполнения оператора цикла:

- проверяется условие xn<=xk;

- если условие не выполняется, то оператор цикла прекращает свою работу, и выполняется следующий за ним оператор программы;

- если условие выполняется, то переменной цикла присваивается ее начальное значение x=xn;

- выполняется оператор рабочей части цикла;

- до тех пор, пока x< = xk переменная цикла увеличивается на шаг dx и выполняется рабочая часть цикла.

Количество повторений цикла вычисляется по формуле:

|xk – xn|/dx +1.

Примеры правильной записи оператора for:

Фрагмент программы for k=1 : 5 disp(k) end Командное окно

Оператор while предназначен для программирования любых циклов, где проверка условия повторения цикла выполняется перед выполнением рабочей части цикла.

Общий вид:

while ЛВ,

ОПЕРАТОР,

End

где

ЛВ – логическое выражение,

ОПЕРАТОР – любой оператор или группа операторов рабочей части цикла.

Порядок выполнения оператора следующий:

- Проверяется истинность логического выражения.

- До тех пор, пока оно истинно, выполняется оператор рабочей части цикла.

- Если логическое выражение стало ложным, то выполняется следующий за оператором цикла оператор программы.

Если логическое выражение в заголовке цикла while заведомо ложно, то цикл может не выполниться ни разу.

Примеры правильной записи оператора цикла while приведены ниже.

Вывести на экран дисплея четные целые числа от 2 до 12.

k=2;

while k<=20

disp(k)

k=k+2;

End

Практическая часть

Задание 1. Программирование разветвляющихся алгоритмов

Постановка задачи. Разработать программу для формирования функции y(x). Подобрать набор тестов для проверки правильности работы программного фрагмента. Вычислить значения функции y(x) для тестовых значений x.

Вид функции
Постановка задачи. Даны две матрицы А и В. - student2.ru

Порядок составления программы таков.

Шаг 1. Программируем ввод исходного данного – переменной х с использованием оператора ввода input.

Шаг 2. Проверяем, выполняется ли условие x > 20, и если оно выполнится, то программируем вычисление y=sqrt(x).

Шаг 3. Продолжаем оператор if, описывая, что будет в случае, если первое условие не выполняется. Для этого воспользуемся полной формой 2 и после elseif формируем второе условие в виде сложного логического выражения.

Шаг 4. Завершаем оператор if, указывая после else, чему равен результат в остальных случаях. Завершаем оператор if словом end.

Шаг 5. Выводим полученный результат в командную область.

Программа Результаты расчетов
x=input("Задайте х=")if x>20 then y=sqrt(x), elseif (x>=1) & (x<=20) then y=x else y=4*x^2 enddisp('y=')disp(y) Задайте х=25 y= 5. Задайте х=15 y= 15. Задайте х=-3 y= 36.

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

Таблица 2.7.

Вид функции Вид функции
1.   Постановка задачи. Даны две матрицы А и В. - student2.ru 2. Постановка задачи. Даны две матрицы А и В. - student2.ru
3. Постановка задачи. Даны две матрицы А и В. - student2.ru 4. Постановка задачи. Даны две матрицы А и В. - student2.ru
5.   Постановка задачи. Даны две матрицы А и В. - student2.ru 6. Постановка задачи. Даны две матрицы А и В. - student2.ru
7. Постановка задачи. Даны две матрицы А и В. - student2.ru 8. Постановка задачи. Даны две матрицы А и В. - student2.ru
9. Постановка задачи. Даны две матрицы А и В. - student2.ru 10. Постановка задачи. Даны две матрицы А и В. - student2.ru
11. Постановка задачи. Даны две матрицы А и В. - student2.ru 12. Постановка задачи. Даны две матрицы А и В. - student2.ru
13. Постановка задачи. Даны две матрицы А и В. - student2.ru 14. Постановка задачи. Даны две матрицы А и В. - student2.ru
15. Постановка задачи. Даны две матрицы А и В. - student2.ru 16. Постановка задачи. Даны две матрицы А и В. - student2.ru

Задание 2. Программирование циклических алгоритмов

Постановка задачи. Задан вектор произвольной длины N. Разработать программу для вычисления результата по индивидуальному заданию. Проверить работу программы на тестовом примере (числовые значения вектора подобрать самостоятельно).

Вычислить произведение отрицательных элементов вектора с четными номерами.

Порядок составления программы таков.

Шаг 1. Программируем ввод исходного данного – вектора X с использованием оператора присваивания. Числа в векторе подбираем таким образом, чтобы встречались и отрицательные и положительные числа. Программа должна выделить отрицательные числа и найти их произведение.

Шаг 2. Для вычисления произведения выбираем переменную P, первоначально присваиваем ей значение 1.

Шаг 3. Для того, чтобы просмотреть элементы, имеющие в векторе четные номера, например, 2, 4, 6 и т.д., организуем цикл с переменной цикла i. Этой переменной первоначально присвоим значение 2, т.е. будем первоначально рассматривать второй элемент вектора.

Шаг 4. Цикл должен выполняться до тех пор, пока текущий номер элемента в векторе (переменная цикла i) меньше общего количества элементов. В данном векторе 10 элементов, поэтому заголовок цикла имеет вид: while i<=10.

Шаг 5. В цикле используется оператор if, чтобы проверить, является ли элемент вектора Х отрицательным, т.е. меньшим нуля. Если это условие выполняется, то переменную Р умножаем на этот элемент и результат помещаем в ту же самую переменную Р. Завершаем оператор if словом end.

Шаг 6. Выводим элементы исходного вектора и полученный результат в командную область.

Программа Результаты расчетов
X=[-2 -3 -6 5 2 -4 8 9 -10 -7]P=1i=2while i<=10 if X(i)<0 then P=P*X(i) end i=i+2enddisp(X)disp(P) - 2. - 3. - 6. 5. 2. - 4. 8. 9. - 10. - 7. - 84.

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

Таблица 2.8.

Наши рекомендации