Материал: Scilab ЛабПрактикум и теория

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рис. 2.1.1-4.Описание левой части уравненияв виде sce-файла

Рассмотрим технологию определения корня с помощью функции solve() на следующем примере, в котором уравнение имеет несколько корней (рис.2.1.1-5).

Пример 2.1.1-2. Решить уравнение ex/5-2(x-1)2=0 .

Отделим корни уравнения ex/5-2(x-1)2=0 и вычислим все корни, последовательно вызывая функцию fsolve() с различными начальными приближениями. Ниже показана возможность задания начальных приближений к корням в виде вектора, и тогда функцию можно вызвать один раз (рис. 2.1.1-5).

Рис. 2.1.1-5. Уточнение нескольких корней уравнения с использованием функции solve()

Функция Scilab roots() используется для вычисления корней полинома вида . Перед ее использованием создается список коэффициентов (даже нулевых), затем выполняется функция

poly(a, ‘x’, [‘fl’]),

где a - это число или матрица чисел, x - символьная переменная, fl – необязательная символьная переменная, определяющая способ задания полинома. Символьная переменная fl может принимать только два значения "roots" или "coeff” (соответственно ‘r’или ‘c’). Если fl=c, то будет сформирован полином с коэффициентами, хранящимися в параметре a. Если же fl=r, то значения параметра a воспринимаются функцией как корни, для которых необходимо рассчитать коэффициенты соответствующего полинома. По умолчанию fl=r.

Теперь можно использовать функцию roots(p), у которой в качестве аргумента указывается имя полинома, созданного функцией poly (рис. 2.1.1-6).

Рис. 2.1.1-6. Уточнение корня уравнения с использованием функции roots()

Вычисление корней полинома с использованием команды roots(а) показало, что у полинома есть четыре действительных корня.

2.1.2. Лабораторная работа по теме «Технология решения нелинейных уравнений средствами пакета Scilab»

1. Вопросы, подлежащие изучению

  1. Постановка задачи решения нелинейных уравнений.

  2. Задание функций и вычисление их производных с использованием средств пакета Scilab.

  3. Получение таблиц значений функций в заданных границах изменения аргумента.

  4. Построение графиков функций средствами Scilab.

  5. Этапы решение нелинейных уравнений: отделение и уточнение корня.

  6. Решение нелинейных уравнений с использованием встроенных функций пакета Scilab: fsolve(), poly() и roots().

2. Общее задание

  1. Изучите материал Темы 2.1 (п. 2.1.1).

  2. Выберите индивидуальный вариант задания из табл. 2.1.2-1.

  3. Отделите корень нелинейного уравнения f(x)=0 с использованием средств пакета Scilab, для чего:

  • Построить графики функции f(x) и ее первой производной;

  • на выбранном отрезке пересечения графика с осью ОХ получить таблицы значений аргумента, функции f(x)и ее первой производной

  • проверить условие существования единственного корня на выбранном отрезке.

  1. Решите 1-е нелинейное уравнение с использованием функций fsolve(), получив значение корня и значение функции в точке корня.

  2. Задайте вектор коэффициентов для 2-го уравнения.

  3. Сформируйте с использованием функции poly() полином с коэффициентами, хранящимися в векторе.

  4. Вычислите корни полученного полинома, используя функцию roots().

  5. Предъявите результаты выполнение задания на ПК преподавателю.

  1. Варианты индивидуальных заданий

Таблица 2.1.2-1

№

Уравнение

№

Уравнение

1

16

2

=0

17

3

18

4

=0

19

5

20

6

21

7

22

8

=0

23

9

24

10

25

11

26

=0

12

27

13

28

14

29

15

=0

30

Тема 2.2. Технология аппроксимации интерполяции функций в среде пакета Scilab

2.2.1. Аппроксимация и интерполяция функций

2.2.2. Лабораторная работа

2.2.3. Контрольные вопросы по теме

2.2.1. Аппроксимация и интерполяция функций

Пусть имеется набор узловых точек xk (где k=1,2,…,n) и значения функции y(xk)в этих точках, а также некоторая функция f(x,a1, a2, …,am), которая кроме аргумента х зависит еще и от параметров as(где s=1, 2, …m). Задача аппроксимации состоит в том, чтобы подобрать такие значения параметров as, что функция f(x, a1, a2, …am)наилучшим образом описывала бы исходную функцию. Как правило, m<<n, поэтому добиться, чтобы функция f(x, a1, a2, …am) давала точные результаты даже в узловых точках не удастся. Нужен критерий, который оценивает точность аппроксимации таблично заданной функции. Например, в методе наименьших квадратов в качестве такого критерия используется среднеквадратическое отклонение

Частным случаем задачи аппроксимации является задача интерполяции функции. В этом случае также имеем набор узловых точек xk (где k=1,2,…,n) и значения функции yk в этих точках. Однако, в соответствии с критерием интерполяции, требуется построить такую функцию f(x), которая в узловых точках x1, x2,…,xnпринимала бы значения y1, y2, …,yn, то есть f(xk) = ykдля всех kот 1 доn.Чаще всего функцию f(x) ищут в виде полинома, степень которого n-1. Поэтому задача сводится к определению коэффициентов интерполяционного полинома на основании значений функции в базовых точках.

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

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

[a,S]=datafit(f,z,a0),

где f - функция, с помощью которой можно вычислить разницу между заданными и расчетными значениями (y-f(x,a0, a1, …ak);

z - матрица исходных данных (первая строка - массив х, вторая строка – массив y);

a0 - вектор начальных коэффициентов (нулевой вектор из k элементов);

a – вектор коэффициентов, используемых в аппроксимирующей функции) (a0, a1, …ak);

S - сумма квадратов отклонений измеренных значений от расчетных данных.

Функция datafit(f,z,a0)возвращает вектор коэффициентов полинома степени k, который с наименьшей среднеквадратичной погрешностью аппроксимирует функцию, заданную таблично. Результатом является вектор ­строка длиной k+1, содержащий коэффициенты полинома в порядке увеличения степеней. Как правило, степень полинома много меньше количества узлов (k<<n).

На рис.2.2.1-1 приведен пример линейной аппроксимации функции, заданной таблицей. Функция R(a,z) рассчитывает разности между исходной и аппроксимирующей функцией(y-(a1+a2x)=y-a1-a2x).

  1. Содержание отчета

  1. В форме комментариев:

  • Название лабораторной работы

  • ФИО студента, номер группы

  • № варианта

  • Индивидуальное задание

  1. Протокол вычислений (сессии) в окне Командного окна, снабженный необходимыми комментариями.

2.1.3. Контрольные вопросы по теме

  1. Что называется, нелинейным уравнением?

  2. Этапы решения нелинейного уравнения.

  3. Графическое отделение корней нелинейного уравнения средствами Scilab.

  4. Аналитическое отделение корней нелинейного уравнения средствами Scilab.

  5. Способы задания функции нелинейного уравнения.

  6. Назначение и формат функции poly().

  7. Назначение и формат функции fsolve().

  8. Назначение и формат функции roots().

Рис. 2.2.1-1. Пример линейной аппроксимации функции

Добавим необходимые команды для кубической аппроксимации (рис.2.2.1-2). Здесь разности между исходной и аппроксимирующей функцией вычисляются функцией R3(с,z)

y-(с1+c2x+c3x2+c4x3)=y-c1-c2x-c3x2-c4x3.

На рис.2.2.1-3 приведены графики исходной и аппроксимирующих функций.

Рис. 2.2.1-3. Графики исходной и аппроксимирующих функций

Зададим теперь две аппроксимирующие функции в явном виде и вычислим с их помощью значение функции в точке x=1.85 (рис. 2.2.1-4).

Рис. 2.2.1-4. Вычисление значений аппроксимирующих функций в точке x=1.85

Чтобы использовать функцию datafit() для решения задачи интерполяции необходимо, чтобы степень этого полинома была на единицу меньше количества узловых точек.

Пример 2.2.1-1. Используя в качестве узлов интерполяции x=1,2,4,5, построить полином, интерполирующий функцию

и вычислить значение полинома в точке a=2,5.

В начале, получим таблицу значений функции и проведем ее интерполяцию ее с использованием функции datafit() (рис. 2.2.1-5). Графики интерполяционных узлов и интерполяционного полинома приведены на рис. 2.2.1-6.

Рис. 2.2.1-5. Интерполяция таблично заданной функции

с использованием функции Scilab datafit()

Рис. 2.2.1-6. Графики интерполируемой и интерполирующей функций

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

Источник: https://studfile.net/preview/16689967/