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

Основы работы в SciLab. На примере экзаменационных вопросов по КСВЭ

Завтра мне сдавать экзамен по такому предмету как КСВЭ(Компьютерный сервис вычислительного эксперимента). А лучший способ подготовки — это написание статьи. Я рассмотрю часть вопросов к экзамену, которые связаны с SciLab.
Статья больше подходит для студентов, использующих scilab для проверки решения, для или для сдачи экзамена по дисциплине КСВЭ. Для более подробного изучения надо читать литературу, указанную в конце статьи

Основные термины
Scilab (читается Сайлэб) — пакет прикладных математических программ, предоставляющий мощное открытое окружение для инженерных (технических) и научных расчётов.
CeCILL (от «CEA CNRS INRIA Logiciel Libre») — это лицензия на свободное программное обеспечение, адаптированная к интернациональному законодательству и законодательству Франции, подобная GNU General Public License и сохраняющая совместимость с ним.
Система m линейных алгебраических уравнений с n неизвестными (или, линейная система, также употребляется аббревиатура СЛА́У) в линейной алгебре — это система уравнений вида
Решение квадратного уравнения в scilab
Обыкнове́нные дифференциа́льные уравне́ния (ОДУ) — это дифференциальное уравнение вида
Решение квадратного уравнения в scilab
где — неизвестная функция (возможно, вектор-функция, тогда, как правило, тоже вектор-функция со значениями в пространстве той же размерности; в этом случае говорят о системе дифференциальных уравнений), зависящая от независимой переменной, штрих означает дифференцирование по. Число (порядок старшей производной, входящей в данное уравнение) называется порядком дифференциального уравнения (1)

1. Система компьютерной математики SciLab: История разработки. Возможности и ключевые особенности. Достоинства и недостатки.

История
С 1994 года распространяется вместе с исходным кодом через Интернет. В 2003 году для поддержки Scilab был создан консорциум Scilab Consortium. Сейчас в него входят 25 участников, в том числе Mandriva, INRIA и ENPC (Франция).

Scilab содержит сотни математических функций, и есть возможность добавления новых, написанных на различных языках (C, C++, Fortran и т. д.). Также имеются разнообразные структуры данных (списки, полиномы, рациональные функции, линейные системы), интерпретатор и язык высокого уровня.
Scilab был спроектирован как открытая система, и пользователи могут добавлять в него свои типы данных и операции путём перегрузки.
В системе доступно множество инструментов:
2D и 3D графики, анимация
Линейная алгебра, разреженные матрицы (sparse matrices)
Полиномиальные и рациональные функции
Интерполяция, аппроксимация
Симуляция: решение ОДУ и ДУ
Scicos: гибрид системы моделирования динамических систем и симуляции
Дифференциальные и не дифференциальные оптимизации
Обработка сигналов
Параллельная работа
Статистика
Работа с компьютерной алгеброй
Интерфейс к Fortran, Tcl/Tk, C, C++, Java, LabVIEW
Scilab имеет схожий с MATLAB язык программирования. В состав пакета входит утилита, позволяющая конвертировать документы Matlab в Scilab.
Scilab позволяет работать с элементарными и большим числом специальных функций (Бесселя, Неймана, интегральные функции), имеет мощные средства работы с матрицами, полиномами (в том числе и символьно), производить численные вычисления (например, численное интегрирование) и решение задач линейной алгебры, оптимизации и симуляции, мощные статистические функции, а также средство для построения и работы с графиками.
Для численных расчётов используются библиотеки Lapack, LINPACK, ODEPACK, Atlas и другие.
В состав пакета также входит Scicos — инструмент для редактирования блочных диаграмм и симуляции (аналог simulink в пакете MATLAB). Имеется возможность совместной работы Scilab с программой LabVIEW.

Ключевые особенности
Отличия от некоторых коммерческих программ:
Бесплатность.
Свободность (с версии 5.0).
Маленький размер — дистрибутив 4 версии занимал менее 20 МБ против более чем двухгигабайтного пакета MATLAB. Инсталлятор 5 версии (5.4.0) увеличился в объёме до 108 МБ.
Возможность запуска в консоли без использования графического интерфейса, в том числе в версии под Windows (в UNIX и Windows версиях MatLab-а эта возможность присутствует тоже). Это позволяет производить автоматизированные вычисления, есть пакетный режим.

Достоинства и недостатки
Поиски достоинства и недостатков на просторе интернета ни чего не дали. Так что расскажу о том, что я заметил сам.
Если говорить о достоинствах, тут самым основным для меня является бесплатность данного пакета, по сравнению с той же Mathematic, когда для выполнения лабораторных работы приходилось искать серийник или crack. Далее — это кросплатформеность, т.к. я больше предпочитаю использовать Gentoo, чем Windows. В принципе большенство достоинств описано в пункте Ключевые особенности.
Из недостатков я вижу только 2: Это нет такой визуализации программирования как в Mathematic, а так же система использует прежде всего численные подходы, для вычисления, что может сказаться на точности.

2. Основы работы в SciLab. Пользовательские и системные переменные. Математические выражения. Коментарии

При написании данной статьи я использую версию scilab-5.3.3 под windows.
SciLab 5.3.3
Операционные системы: Windows, Linux, MacOS
Пользовательские и системные переменные
Год/Дата Выпуска: 2011
Версия: 5.3.3
Разработчик: Free Open Source Software for Numerical Computation
Сайт разработчика: www.scilab.org
Разрядность: 32bit+64bit
Лицензия: CeCILL
По характеристикам данных не нашёл, но могу сказать, что данный пакет грузится без глюков на моём ноутбуке
Процессор: Intel Celeron Dual-Core T3300 2.0 ГГц
Оперативная память 2Гб DDR3
Видеоадаптер Intel GMA4500M

Прежде чем перейти дальше, рассмотрим сам интерфейс. При запуске открывается командное окно.
Решение квадратного уравнения в scilab
Есть 2 варианта работы: 1 — это работа в том же командном окне, 2 — открыть SciNotes(что-то вроде блокнота с подсветкой) где можно написать код, который позднее запустить, результат выполнения появится в командном окне.

Для примера я рассмотрю вывод Hellow world.

Командная строка. Используем функцию вывода на дисплей disp()
Решение квадратного уравнения в scilab

При работе в SciNotes вы получите что то похожее
Решение квадратного уравнения в scilab
для выполнения кода, надо или нажать на стрелочку в право 🙂 (как во многих средах разработки)
или Выполнение->… без отображение команд
в принципе можно использовать и другие методы выполнения, и не использовать вывод на экран
Результатом выполнения будет:
Решение квадратного уравнения в scilab
т.к. можно сказать что интерфейс изучен, далее я буду приводить просто код и результат выполнения

SciLab чувствителен к реестру, т.е. А и а — разные переменные переменные.

a=1,A=3
//Каждая операция начинается с новой строки или через запятую
//коментарии можно оставлять после двух символоф слэш
b=3
c=a+b
disp©

Основные операции:
+ сложение
— вычитание
* умножение
/ деление справа, т.е. x/y = xy^(-1)
деление слева, т.е. xy = x^(-1)y
^ возведение в степень, т.е. x^y
** возведение в степень (эквивалентно ^)
’ эрмитово сопряжение (комплексное сопряжение и транспонирование)

3. Основы работы в SciLab. Функции и их типы. Способы объявления пользовательских функций. Использование функций. Файлы-сценарии и их применение для хранения функций.

Элементарные математические функции.

acos acosd acosh acoshm acosm acot acotd acoth
acsc acscd acsch asec asecd asech asin asind
asinh asinhm asinm atan atand atanh atanhm atanm
cos cosd cosh coshm cosm cotd cotg coth
cothm csc cscd csch sec secd sech sin
sinc sind sinh sinhm sinm tan tand tanh
tanhm tanm
exp expm log log10 log1p log2 logm max
maxi min mini modulo pmodulo sign signm sqrt
sqrtm

y = int8(x) 8-битовое число со знаком [-2^7; (2^7)-1] = [-128; 127]
y = uint8(x) 8-битовое число без знака [0; (2^8)-1] = [0; 255]
y = int16(x) 16-битовое число со знаком [-2^15; (2^15)-1] = [-32768; 32767]
y = uint16(x) 16-битовое число без знака [0; (2^16)-1] = [0; 65535]
y = int32(x) 32-битовое число со знаком [-2^31; (2^31)-1] = [-2147483648; 2147483647]
y = uint32(x) 32-битовое число без знака [0; (2^32)-1] = [0; 4294967295]

iconvert преобразование к целочисленному представлению
inttype определение типа целого числа

простейший способ вызова пользовательской функции:

пример пользовательской фунции:

function y = myfunction ( x )
y = 2 * x
endfunction

Сохраняем её. Далее приведён пример вызова данной функции

4. Определение одномерный и многомерных массивов. Основные действия над массивами.

Пример, как задаётся одномерный массив:

квадратные скобки ”[” и ”]” обозначают начало и конец перечисления
элементов матрицы,
запятой ”,” отделяются элементы матрицы, находящиеся в одной строке,
точка с запятой ”;” разделяет строки матрицы.

size определить размер матрицы
matrix изменить размер матрицы
resize_matrix создать новую матрицу заданного размера и скопировать
в нее элементы из исходной матрицы

Операции над матрицами:
Обращение к элементам матрицы
i = 1; 2, а j = 3; 4
для этого возьмём уже готовую матрицу

—>A = testmatrix (» hilb «, 5)
A =
25. — 300. 1050. — 1400. 630.
— 300. 4800. — 18900. 26880. — 12600.
1050. — 18900. 79380. — 117600. 56700.
— 1400. 26880. — 117600. 179200. — 88200.
630. — 12600. 56700. — 88200. 44100.
—>A(1: 2, 3: 4)
ans =
1050. — 1400.
— 18900. 26880

A матрица целиком
A(. ) матрица целиком
A(i:j,k) элементы матрицы в k-ом столбце с i-ой по j-ую строку
A(i,j:k) элементы матрицы в i-ой строке с j-ого по k-ый столбец
A(i,:) i-ая строка матрицы
A(:,j) j-ый столбец матрицы

Генерация единичной матрицы

Операции над матрицами
+ сложение .+ поэлементное сложение
— вычитание .- поэлементное вычитание
* умножение .* поэлементное умножение
/ деление справа ./ поэлементное деление справа
деление слева . поэлементное деление слева
^ или * возведение в степень :^ поэлементное возведение в степень
’ эрмитово сопряжение (комплексное сопряжение и транспонирование)
.’ транспонирование без сопряжения

пример умножения числа на еденичную матрицу 2 на 2

5. Определение одномерный и многомерных массивов. Специальные матричные функции

функции работы с матрицами
chol разложение Холесского
companion сопровождающая матрица
cond число обусловленности
det определитель матрицы
inv обратная матрица
linsolve решение систем линейных уравнений
lsq метод наименьших квадратов
lu LU-разложение с выбором опорного элемента
qr QR-разложение
rcond обратное число обусловленности
spec собственные значения и векторы
svd разложение по сингулярным числам матрицы
testmatrix генерация специальных матриц (Гильберта, Франка и др.)
trace след матрицы

6. Определение одномерный и многомерных массивов. Решение СЛАУ. Символьные массивы и операции над ними

Текст файла–сценария с решением задачи по формулам Крамера

—>A=[2 1 -5 1;1 -3 0 -6;0 2 -1 2;1 4 -7 6];//Матрица коэффициентов
—>b=[8;9;-5;0]; //Вектор свободных коэффициентов
—>//Первая вспомогательная матрица
—>A1=A;A1(:,1)=b;
—>//Вторая вспомогательная матрица
—>A2=A;A2(:,2)=b;
—>//Третья вспомогательная матрица
—>A3=A;A3(:,3)=b;
—>//Четвертая вспомогательная матрица
—>A4=A;A4(:,4)=b;
—>//Главный определитель отличен от нуля
—>D=det(A);
—>//Определители вспомогательных матриц
—>d(1)=det(A1);
—>d(2)=det(A2);
—>d(3)=det(A3);
—>d(4)=det(A4);
—>//Вектор неизвестных
—>x=d/D
x =
3.
— 4.
— 1.
1.
—>//Проверка
—>P=A*x-b
P =
0.
0.
— 8.882D-16
2.665D-15

—>A=[2 -1 1;3 2 -5;1 3 -2];
—>b=[0;1;4];
—>//Приведение расширенной матрицы к треугольному виду
—>C=rref([A b]);
—>//Выделение последнего столбца из матрицы,
—>//x — решение системы
—>x=C(1:3,4:4)
x =
0.4642857
1.6785714
0.75
—>A*x //Проверка
ans =
— 5.551D-16
1.
4.

7. Численное интегрирование. Подходы к интегрированию. Интегрирование функций заданных пользователем

Численное интегрирование (историческое название: (численная) квадратура) — вычисление значения определённого интеграла (как правило, приближённое). Под численным интегрированием понимают набор численных методов отыскания значения определённого интеграла.
Интегрирование по методу трапеций
проинтегрируем функцию, корень из 2*x-1 на отрезке от 1 до 10 с разбиением в 1 шаг

—>x=1:10
x =
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
—>y=sqrt(2*x-1)
y =
column 1 to 6
1. 1.7320508 2.236068 2.6457513 3. 3.3166248
column 7 to 10
3.6055513 3.8729833 4.1231056 4.3588989
—>inttrap(x,y)
ans =
27.211585

Квадратурные формулы Ньютона Котеса

8.Численное дифференцирование. Подходы к дифференцированию.

Численное дифференцирование — совокупность методов вычисления значения производной дискретно заданной функции.
В основе численного дифференцирования лежит аппроксимация функции, от которой берется производная, интерполяционным многочленом. Все основные формулы численного дифференцирования могут быть получены при помощи первого интерполяционного многочлена Ньютона (формулы Ньютона для начала таблицы).
в точке

9. Решение ОДУ средствами SciLab. Функции применяемые для решение ОДУ. Решение краевых задач.

Существует 4 способа для решения ОДУ:
1. С помощью команды ode, которая является солвером для решения обыкновенного
дифференциального уравнения.
2. С помощью команды odedc, которая вычисляет решение смешанной дискретно-
непрерывной системы.
3. Команда dassl, которая дает решение неявно выраженного дифференциального уравнения.
4. С помощью команды impl, которая дает решение неявно выраженного линейного
дифференциального уравнения.

—>y0=1;
—>t0=1;
—>t=1:0.01:1.5;
—>deff(«[ydot]=f(t,y)»,«ydot=y^(1/3)*t»)
—>y=ode(y0,t0,t,f);
—>y_exact=((t^2+2)/3)^(1.5);// это функция точного решения для сравнения
—>my_er=y-y_exact;
—>plot(t,y-y_exact) // это график ошибки вычисления от аргумента t

результатом является такой график
Решение квадратного уравнения в scilab
за одно можно увидеть Графическое окно. Построение графиков будет подробно рассмотрено далее.

10. Построение двухмерных графиков в системе SciLab. Основные функции и типы графиков.

Функция plot
рассмотрим пример:

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

Функция plot2d
Рассмотрим функцию опять на примере:

Решение квадратного уравнения в scilab
как мы можем увидеть, у этой функции намного больше функционала.
фунции передаются сразу массивом, так же можно указать цвет линий и отрезок.

Функция polarplot
Служит для построения графика в полярных координатах

получается ромашка
Решение квадратного уравнения в scilab
параметры похожи как и в случае с plot2d

11. Построение трёхмерных графиков в системе SciLab. Основные функции и типы графиков.

Существует 4 способа построение графика:
Способ 1.
С помощью команды plot3d. Команда создает 3D график по точкам, заданным матрицами
x, y и z.
Способ 2.
С помощью команды plot3d1. Команда создает 3D график по точкам, заданным
матрицами x, y и z с помощью уровней цвета. Вещь в общем избыточная: величина
координаты z дополнительно еще и покрашена, в зависимости от принимаемого значения
z.
Способ 3.
С помощью команды fplot3d. Это аналог команды fplot3d, но изображаемая поверхность
задана с помощью внешней функции.
Способ 4.
С помощью команды fplot3d1. Это аналог команды plot3d1, но изображаемая поверхность
задана с помощью внешней функции.
Синтаксис этих команд смотри с помощью help.

Решение квадратного уравнения в scilab
забыл указать, что в графическом окне есть возможность экспорта данных, т.е. сохранить картинку

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

Результат такой же как в примере 1

результат такой же, как в примере 2

12. Задача полиномов в SciLab. Символьные операции с полиномами. Решение алгебраический уравнений. Сравнение функций fsolve и roots.

Рассмотрим на примере решения уравнения 2x^4-8x^3+8x^2-1=0

Для решения трансцендентных уравнений в применяют функцию Scilab fsolve(x0,f)
задача Решение квадратного уравнения в scilab

Надеюсь данная статья послужит толчком, для дальнейшего изучения SciLab или решения своих задач/лабараторных

Видео:Решение квадратных уравнений. Дискриминант. 8 класс.Скачать

Решение квадратных уравнений. Дискриминант. 8 класс.

Учебное пособие Москва 2008 Тропин И. С., Михайлова О. И., Михайлов А. В. Т 742

Главная > Документ

Информация о документе
Дата добавления:
Размер:
Доступные форматы для скачивания:

Видео:5 способов решения квадратного уравнения ➜ Как решать квадратные уравнения?Скачать

5 способов решения квадратного уравнения ➜ Как решать квадратные уравнения?

Встроенные функции в Scilab


Встроенные математические функции

Система Scilab имеет достаточный набор встроенных функций. В него входят:

Встроенные функции Scilab

Область определения x

Диапазон возвращаемых значений

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

x задается в радианах.

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

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

x задается в радианах.

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

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

n =Решение квадратного уравнения в scilab,

х задается в радианах.

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

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

n =Решение квадратного уравнения в scilab,

х задается в радианах.

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

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

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

результат — в радианах

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

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

результат — в радианах

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

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

результат — в радианах

Число е, возведенное в степень х

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

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

Продолжение табл. 4.1

Натуральный логарифм x

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

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

Логарифм x по основанию 2

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

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

Десятичный логарифм х

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

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

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

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

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

Для примера вычислим значение выражения Решение квадратного уравнения в scilabпри x= 4,5, y= 8,09.

В приведенной выше таблице области определения функций соответствуют правилам, принятым в школе. Однако Scilab способен вычислить, например, квадратный корень или логарифм и для отрицательных чисел. В этом случае ответом будет так называемое комплексное число. Если попытаться вычислить, например, lg(Решение квадратного уравнения в scilab), то Scilab выдаст в качестве ответа Решение квадратного уравнения в scilab. Поскольку комплексный анализ в школе не изучается, то получение ответов вида Решение квадратного уравнения в scilab, где Решение квадратного уравнения в scilabи Решение квадратного уравнения в scilab– некоторые числа, будет означать ошибку либо в условии задачи, либо в ходе ее решения.

Несколько необычным, пожалуй, может показаться поведение функции atan( x ). В качестве ответа эта функция выдает углы только из первого и четвертого квадранта. Если требуется получить значение угла в правильном квадранте, следует использовать разновидность функции арктангенса вида atan( y, x ), где y — синус угла или длина противолежащего катета в прямоугольном треугольнике, x — косинус угла или длина прилежащего катета. Область значений этой функции находится в диапазоне (Решение квадратного уравнения в scilab;Решение квадратного уравнения в scilab].

Задание для самоконтроля:

Вычислите значение выражения Решение квадратного уравнения в scilab.

Вычислите значение выражения Решение квадратного уравнения в scilab.

Вычислите значение выражения Решение квадратного уравнения в scilab.

Функция вывода на экран printf

Функция printf служит для вывода на экран значений переменных и текстовых комментариев. Формат вывода определяется аргументами функции. Назначение и использование printf в Scilab полностью аналогично использованию одноименной функции в языке C. Читатель, знакомый с языком C, может пропустить этот раздел.

Обращение к printf выглядит следующим образом:

printf(»текст для вывода %символ1 %символ 2 . %символ n’ ‘,переменная1,переменная2. переменная n )

В результате обращения к функции printf на экран вводится текст, указанный в кавычках, и значения переменных (переменная1,переменная2. переменная n ) , на месте соответствующих символов (%символ1 %символ2 . %символ n ) , определяющих формат вывода. Значение переменной будет находиться в той части выведенного текста, где находится соответствующий ей символ. Символ всегда ставится после знака % . При вызове функции printf используются символы s и f . Символ s используется, если переменная, значение которой необходимо вывести, содержит строку символов. Если переменная содержит число, используется символ f . Запись % .nf означает, что число должно быть выведено с n знаками после запятой. Текст, содержащийся в кавычках, выводится без изменений, а на месте символов выводятся значения соответствующих переменных. Текст, содержащийся в кавычках, выводится в виде одной строки. Если есть необходимость перенести часть текста на следующую строку, то перед этим участком текста необходимо ввести символ n . Это неотображаемая «буква», которая вызывает перемещение курсора в начало следующей строки.

Рассмотрим примеры использования printf .

Зададим переменную h, в которой будет храниться строка символов variable и выведем значение переменной на экран при помощи функции printf (Листинг 9).

В данном случае первая строка определяет переменную h для хранения строки символов — variable. При вызове функции printf текстом для ввода является запись «text:». Символ s в кавычках означает, что на его месте будет выведено значение переменной, содержащей строку символов. После кавычек указана переменная — h , именно ее значение выведено в тексте на месте % s .

Выведем на экран значения числовых переменных в сочетании с текстом (Листинг 10).

—>printf(»znachenie d — %.5f n e=%.7f» ,d,%e)

znachenie d — 3.61283

При вызове функции printf текстом для вывода является запись: znachenie d — e= , она будет выведена без изменений. В кавычках содержатся символы %.5f и %.7f , это означает, что на их месте будут выведены значения числовых переменных с пятью и семью знаками после запятой соответственно. После кавычек через запятую указаны имена переменных, их значения будут выведены в тексте на месте символов %.5f и %.7f . Переменная d указана первой, соответственно ее значение будет выведено на месте первого символа — %.5f , а значение переменной %e — на месте второго. В кавычках также присутствует символ n , как видно, текст, стоящий после него, перенесен на следующую строку.

Примечание: Если необходимо вывести на экран значение математического выражения, то это выражение можно поставить после кавычек вместо имени переменной. Значение выражения будет вычислено и выведено на месте соответствующего символа (Листинг 11). При этом значение результата вычисления не будет присвоено никакой переменной.

Символ %.5 f в кавычках означает, что на его месте на экран предполагается вывести число с пятью знаками после запятой. После кавычек указано выражение — деление Решение квадратного уравнения в scilab. Его значение вычисляется и выводится на экран на месте соответствующего символа. При этом значение вычисления не присваивается никакой переменной.

Задания для самоконтроля:

Выведите на экран:

Текст: znachenie funczii.

Значение числа Решение квадратного уравнения в scilabс тремя знаками после запятой.

Значение переменной h , предварительно присвоив ей значение Решение квадратного уравнения в scilab.

Видео:Решение уравнений в ScilabСкачать

Решение уравнений в Scilab

Функции, определяемые пользователем

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

Рассмотрим, для начала, описание функций с использованием оператора deff . В качестве примера используем deff для определения функции двух переменных:

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

Для вычисления значения этой функции необходимо задавать пары значений x и y. В программировании говорят, что функция имеет два входных параметра. В математике значением функции является число, в программировании это число должно быть присвоено переменной, определенной внутри функции. Такую переменную называют выходным параметром.

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

Заметим, что в Scilab функция может возвращать более одного значения. В этом случае каждому возвращаемому значению должен быть поставлен в соответствие выходной параметр. Такие функции в программировании называют подпрограммами. Однако, программисты часто используют термины «функция» и «подпрограмма» как синонимы.

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

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

где c – переменная, которая представляет собой выходной параметр; fun – имя функции; две переменных в круглых скобках, разделенные запятыми, задают имена входных параметров. Во втором параметре строка2 следует написать выражение для функции и присвоить вычисленное значение выходному параметру. При этом должны использоваться имена переменных, определенные в переменной строка1. В соответствии с этими правилами, второй параметр запишется в виде

В этой строке выходной параметр, названный c , в результате операции присваивания получит значение, вычисленное по заданной формуле. При вычислении используются входные параметры с именами x и y , указанные в параметре строка1.

Листинг 12 демонстрирует определение функции fun с помощью оператора deff и использование fun для вычисления значения при Решение квадратного уравнения в scilabи Решение квадратного уравнения в scilab.

Первая строка листинга содержит определение функции с помощью оператора deff . Во второй строке производится присваивание значения Решение квадратного уравнения в scilabи Решение квадратного уравнения в scilabпеременным а и b соответственно. Причем, результаты выполнения этих двух операций не отображаются на экране, поскольку запись каждой из них заканчивается символом «;». Далее, переменной g присваивается результат выполнения функции fun . Первым параметром при вызове функции указано значение переменной a , вторым – значение переменной b .

Переменные, которые используются при вызове функции, в данном случае a и b , называют фактическими параметрами. Входные параметры x и y , определенные внутри функции, называют формальными параметрами. При вызове функции в Scilab происходит неявное присваивание формальным параметрам значений параметров фактических.

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

После того как значение переменной g будет определено, оно отображается на экране, поскольку завершающий символ «;» в последнем выражении отсутствует.

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

Как видно, упрощение программы не повлияло на ответ, он остался тем же, что и на предыдущем листинге.

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

Другой способ задания функции — использование служебного слова function. Преимущество этого способа заключается в том, что размер описания функции не ограничен одной строкой. Рассмотрим простой пример создания функции, вычисляющей значение квадрата аргумента.

Следуя рецепту, приведенному выше, определяем, что функция имеет один входной и один выходной параметр, дадим функции имя f . Описание функции приведено в Листинге 14.

Из листинга видно, что описание функции начинается со служебного слова function (функция) и завершается словом endfunction (конец функции). Первое выражение, следующее за function , является полным аналогом параметра строка1 в операторе deff , с той лишь разницей, что выражение не требуется заключать в кавычки. Так что запись c=f ( x ) означает, что выходной параметр у функции один, и он имеет имя c , функция называется f , и она имеет один формальный входной параметр x .

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

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

Способы, рассматриваемые ниже, позволяют задавать внешние функции, которые могут быть использованы в любом сеансе. Эти приемы окажутся особенно полезными, если создаваемая функция будет часто использоваться в работе.

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

Набранный текст необходимо сохранить в файле с произвольным именем и расширением sce . SciPad предлагает это расширение по умолчанию. Теперь, для того чтобы использовать функцию в сеансе можно загрузить ее из файла. Это можно сделать следующими способами:

Выполнить в командной строке команду exec. Ее единственным аргументом является строка с указанием положения сохраненного файла в файловой системе. Например, если файл f.sce был сохранен в домашнем каталоге пользователя, то команда загрузки будет выглядеть следующим образом: exec(‘

/f.sce’) . После этого функция, описанная в файле, может быть вызвана в текущей сессии. Листинг 15 демонстрирует еще один пример загрузки подпрограммы.

polinom ne imeet nulei

polinom razlozen na mnojiteli

В этом примере загрузка производится из файла RZL.sce, находящегося в подкаталоге pr пользовательского каталога. Текст подпрограммы RAZL, реализующей разложение на множители многочлена второй степени, приведен в Листинге 16. Реализация функции RAZL будет обсуждаться в конце раздела.

Использовать графический интерфейс редактора SciPad. Для этого нужно запустить редактор SciPad, нажав мышью кнопку Edit(Редактор) в верхней части основного окна Scilab, открыть в редакторе текстовый файл, содержащий подпрограмму. Затем в меню SciPad нажать мышью кнопку Execute(Выполнить) и в выпадающем меню выбрать пункт Load into Scilab (Загрузить в Scilab). В результате текст программы, отображающийся в окне редактора, будет выполнен в основном окне. С этого момента функция может использоваться в текущем сеансе.

Во время сеанса, последовательно выполняя команды в командной строке, можно видеть результат выполнения каждой введенной команды. В зависимости от результата можно планировать ту или иную последовательность действий.

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

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

Рассмотрим, например, задачу о разложении на множители полинома второй степени вида

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

И зададимся целью написать такую функцию в Scilab. Пусть функция в качестве входных параметров получает коэффициенты a 0 , a 1 и a 2 . Ее задачей будет печатать представления полинома на экране в виде.

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

где Решение квадратного уравнения в scilab, Решение квадратного уравнения в scilab— нули полинома.

Разложение на множители требует определения нулей полинома, которые находятся решением квадратного уравнения. Существование и количество корней такого уравнения в школьной программе ставятся в зависимость от значения дискриминанта. Это означает, что внутри функции нужно вычислить дискриминант D , затем, основываясь на его значении, принять решение о дальнейших действиях. Если окажется, что Решение квадратного уравнения в scilab, то следует вычислить корни и напечатать результат разложения полинома на множители на экране. В противном случае (Решение квадратного уравнения в scilab) необходимо вывести сообщение об отсутствии решения.

Пример реализации функции разложения на множители квадратичного полинома приведен в Листинге 16.

1. function d=RAZL(a0,a1,a2)

2. printf(«n%.1f x^2+(%.1f) x+(%.1f)», a2,a1,a0);

7. d=’polinom razlojen na mnojiteli’;

9. else d=’polinom ne imeet nulei’;

Строки программы пронумерованы, но эти номера не являются частью программы и приведены для удобства чтения.

Из первой строки программы можно видеть, что функция имеет один выходной параметр, названный d . Функция названа RAZL . Функция имеет три формальных входных параметра с именами Решение квадратного уравнения в scilab.

В строке 2 с использованием функции printf на экран выводится исходное выражение полинома.

В строке 3 переменной D присвоено значение дискриминанта квадратного уравнения, вычисленное по значениям формальных параметров.

Теперь ход дальнейших вычислений зависит от значения D . Эта зависимость реализована в конструкции условного выполнения if – then – else – end, которая занимает сроки 4 — 10.

Для выяснения семантики этого выражения приведем тот же фрагмент программы, заменив английские служебные слова if-then. их русским переводом (Листинг 17).

7. d=’polinom razlojen na mnojiteli’;

9. ИНАЧЕ d=’polinom ne imeet nulei’;

При такой записи легко видеть, что после слова if (ЕСЛИ) по смыслу должно следовать условие.

Операция отношения «больше или равно» в Scilab записывается двумя символами >=, так что в данном примере условие имеет вид D>= 0.

Если условие окажется истинным, выполняется ветвь then (TO). В данном примере она содержит вычисление двух корней уравнения, их значения присваиваются переменным x 1 и x 2 (строки 5 и 6). В строке 7 выходной параметр функции d получит строковое значение ‘polinom razlojen na mnojiteli’. Функция printf в строке 8 напечатает символ «=» и, затем, полином в виде Решение квадратного уравнения в scilab.

На этом ветвь then (ТО) завершится и выполнение программы продолжится с первого оператора после слова end (КОНЕЦ). В данном случае функция завершит свою работу, значение строковой переменной d будет передано вызывающей программе.

При невыполнении условия, следующего за оператором if (ЕСЛИ), выполнение программы переходит в ветвь else (ИНАЧЕ). В этой ветви корни уравнения не вычисляются. Переменной d присваивается строка ‘polinom ne imeet nulei’.

Описание альтернативных ветвей выполнения программы завершается словом end (КОНЕЦ).

Пример выполнения функции RAZL представлен в Листинге 15.

Задания для самоконтроля:

Задайте пользовательскую функцию для вычисления Решение квадратного уравнения в scilab, входными параметрами функции должны являться значение числа x значение числа n .

Задайте пользовательскую функцию для вычисления проекций вектора по его длине и углу между направлением вектора и положительным направлением оси Ox . Входными параметрами функции должны являться значение длины вектора, угол между направлением вектора и положительным направлением оси Ox .

Видео:Решение биквадратных уравнений. 8 класс.Скачать

Решение биквадратных уравнений. 8 класс.

Основы программирования в системе Scilab

В Scilab встроен мощный язык программирования с поддержкой объектов. Работа в Scilab может осуществляться как в режиме командной строки, так и в программном режиме. Для создания программы (программу в Scilab иногда называют сценарием) необходимо:

1. Вызвать команду Editorиз меню.

2. В окне редактора Scipadнабрать текст программы.

3. Сохранить текст программы с помощью команды File /Saveв виде файла с расширением sce, например file.sce.

4. После этого программу можно будет вызвать, набрав в командной строке exec, например exec(«file.sce»), или вызвав команду меню File/Exec. или, находясь в окне Scipad, выполнить команду Execute/Load into Scilab(Ctrl+l).

Программный режим достаточно удобен, так как он позволяет сохранить разработанный вычислительный алгоритм в виде файла и повторять его при других исходных данных в других сессиях. Кроме обращений к функциям и операторов присваивания, в программных файлах могут использоваться операторы языка программирования Scilab (язык программирования Scilab будем называть sci-языком).

Основные операторы sci-языка

Функции ввода-вывода в Scilab

Для организации простейшего ввода в Scilab можно воспользоваться функциями

Функция input выводит в командной строке Scilab подсказку title и ждет пока пользователь введет значение, которое в качестве результата возвращается в переменную х.

Функция x_dialog выводит на экран диалоговое окно с именем title, после чего пользователь может щелкнуть OKи тогда stroka вернется в качестве результата в переменную x, либо ввести новое значение вместо stroka, которое и вернется в качестве результата в переменную x.

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

Набрав вместо strokа число 45 и распечатав х, получим:

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

Функция input преобразовывает введенное значение к числовому типу данных, а функция x_dialog возвращает строковое значение. Поэтому при использовании функции x_dialog для ввода числовых значений, возвращаемую ею строку следует преобразовать в число с помощью функции evstr. Поэтому можно предложить следующую форму использования функции x_dialog для ввода числовых значений.

Можно сразу набрать

Для вывода в текстовом режиме можно использовать функцию disp следующей структуры disp(b). Здесь b — имя переменной или заключенный в кавычки текст.

Оператор присваивания

Оператор присваивания имеет следующую структуру

здесь a – имя переменной или элемента массива, b — значение или выражение. В результате выполнения оператора присваивания переменной a присваивается значение выражения b.

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

Одним из основных операторов, реализующим ветвление в большинстве языков программирования, является условный оператор if. Существует обычная и расширенная формы оператора if в Scilab. Обычный if имеет вид

ifЛогическое_выражение then

Else

End

Инструкции в списке разделяют оператором,(запятая)или ;(точка с запятой).

Логические выражения состоят из констант, переменных и функций, соединенных операциями отношения: больше (>), больше или равно (>=), равно (==), не равно (

=) , меньше ( 2 >y. Логические выражения принимают значения «истина» или «ложь». Например, при x=2 и y=8 значение выражения x 2 >y является ложью. Несколько логических выражений могут быть объединены в одно операторами & и |. Например: x.^2>y | y>7. Если несколько логических выражений соединены оператором &, то значение такого выражения является истиной, если каждое логическое выражение, входящее в него, является истиной. Если несколько логических выражений соединены оператором |, то значение такого выражения является истиной, если хотя бы одно логическое выражение, входящее в него, является истиной.

Зачастую при решении практических задач недостаточно выбора выполнения или невыполнения одного условия. В этом случае можно, конечно, по ветке else написать новый оператор if, но лучше воспользоваться расширенной формой оператора if.

ifЛогическое_выражение_1 then

elseifЛогическое_выражение_2 then

Else

End

В этом случае оператор if работает так: если логическое выражение_1истинно, то выполняются инструкции_1, а затем инструкции, стоящие после оператора end. Если логическое выражение_2 является истиной, то выполняются инструкции 2, а затем инструкции, стоящие после оператора end. Если ни одно из логических выражений не является истиной, то выполняются инструкции, стоящие после слова else.

1) if Логическое_выражение then Инструкции , end

—>if x>5 then y=8, end

—>if x>5 then y=8;t=6; end

2) if Логическое_выражение then Инструкции_1, else Инструкции_2, end

—>if x>5 then y=8,t=6; else y=x^2 ,end

3) if Логическое_выражение then

End

Замечание: слово thenв составе условного оператора ifне является обязательным.

Пример. Вычислить функцию y при x=0.397, если

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

Найти все корни квадратного уравнения можно и без оператора if, воспользовавшись тем, что в Scilab определены операции над комплексными числами.

📸 Видео

КВАДРАТНОЕ УРАВНЕНИЕ дискриминантСкачать

КВАДРАТНОЕ УРАВНЕНИЕ дискриминант

Комплексные корни квадратного уравненияСкачать

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

Как решать квадратные уравнения без дискриминантаСкачать

Как решать квадратные уравнения без дискриминанта

Быстрый способ решения квадратного уравненияСкачать

Быстрый способ решения квадратного уравнения

Формула корней квадратного уравнения. Алгебра, 8 классСкачать

Формула корней квадратного уравнения. Алгебра, 8 класс

Неполные квадратные уравнения. Алгебра, 8 классСкачать

Неполные квадратные уравнения. Алгебра, 8 класс

34 Задача: Найти корни квадратного уравнения при помощи PythonСкачать

34 Задача: Найти корни квадратного уравнения при помощи Python

Квадратное уравнение. 1 урок.Скачать

Квадратное уравнение. 1 урок.

Алгебра 8. Урок 9 - Квадратные уравнения. Полные и неполныеСкачать

Алгебра 8. Урок 9 - Квадратные уравнения. Полные и неполные

Как решать квадратные уравнения. 8 класс. Вебинар | МатематикаСкачать

Как решать квадратные уравнения. 8 класс. Вебинар | Математика

Решение задач с помощью квадратных уравненийСкачать

Решение задач с помощью квадратных уравнений

Квадратное уравнение. 8 класс.Скачать

Квадратное уравнение. 8 класс.

Как решать любое квадратное уравнение Полное Неполное квадр ур x^2+2x-3=0 5x^2-2x=0 2x^2-2=0 3x^2=0Скачать

Как решать любое квадратное уравнение Полное Неполное квадр ур x^2+2x-3=0 5x^2-2x=0 2x^2-2=0 3x^2=0

Квадратные уравнения #shorts Как решать квадратные уравненияСкачать

Квадратные уравнения #shorts  Как решать квадратные уравнения

8 класс. Квадратное уравнение и его корни. Алгебра.Скачать

8 класс. Квадратное уравнение и его корни. Алгебра.

Введение в ScilabСкачать

Введение в Scilab
Поделиться или сохранить к себе: