36421

Символьные вычисления в MatLab

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

Информатика, кибернетика и программирование

Исследование скорости роста символьной функции описывающей некоторые параметры модели объекта анимированная визуализация полученной характеристики. здесь f1 имя функции х имя переменной вводится как строка в апострофах по которой производится дифференцирование n порядок производной. здесь f1_new имя функции х имя переменной вводится как строка по которой производится интегрирование. Здесь f1 имя функции переменной n порядок остаточного члена x имя переменной вводится как строка в апострофах по...

Русский

2013-09-21

357.5 KB

108 чел.

Лабораторная работа 4

Символьные вычисления в MatLab

В ходе выполнения работы будут рассмотрены следующие операции:

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

- Выполнить дифференцировать и интегрировать аналитическое выражение.

- Разложить в ряд Тейлора функцию, заданную аналитическим выражением.

- Работа с командой funtool.

- Исследование скорости роста символьной функции, описывающей некоторые параметры модели объекта, анимированная визуализация полученной характеристики.

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

В именах функций имеет значение высота букв.

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

1. Развертка и свертка выражений.

Под разверткой понимается запись выражения в развернутой форме (с открытыми скобками). Под сверткой понимается обратное действие.

- Начать надо с указания символьных переменных. Для этого применяется функция: syms перечень имен переменных через пробел.

- Затем надо ввести исходную функцию  и отобразить ее в командном окне в естественном виде (команда pretty).

Например,

>> syms x a b

>> f=(sin(x)+a)^2/sqrt(abs(a+b))

f =

(sin(x)+a)^2/abs(a+b)^(1/2)

>> pretty(f)

                                            2

                                (sin(x) + a)

                                -------------

                                         1/2

                                | a + b |

>>

или 

>> f=sym('sin(x)')

f =

sin(x)

>> pretty(f)

                                   sin(x)

>>

- Далее следует выполнить операцию развертки и получить результат с именем f1_new. Для этого используется функция ехраnd(имя переменной). 

- Затем над f1_new нужно выполнить операцию свертки и получить результат с именем f1_old. Для этого используется функция simple(имя переменной). 

- Признаки правильного выполнения операций - при свертке результата развертки восстанавливается исходная функция.

Пример выполнения

f 1 (х)=(а+х)3

f2(x)=sin(x)/x

% Задача 1

% Определить символьные переменные

syms а х;

% Функция

f1=(a+x)^3

pretty(f1)

% Расширить ее

f1_new=expand(f1)

% Свернуть расширенное

f1_old=simple(f1_new)

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

>> c=sym('sqrt(2)');

>> cn=vpa(c)

 cn =

1.4142135623730950488016887242097

 

По умолчанию вычисляется 32 значащие цифры. Второй входной параметр команды vpa() служит для задания точности:

>> cn=vpa(c,70)

 cn =

1.414213562373095048801688724209698078569671875376948073176679737990732

Важно: Выходной аргумент команды vpa() является символьной переменной.

2. Дифференцирование и интегрирование выражений.

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

- Начать надо с указания символьных переменных. Для этого применяется функция: syms перечень имен переменных через пробел).

- Затем надо ввести исходную функцию и отобразить ее в командном окне в естественном виде (команда pretty).

- Далее следует выполнить операцию дифференцирования и получить результат с именем f1_new. Для этого используется функция diff(f1,'x',n). здесь f1- имя функции, 'х' - имя переменной (вводится, как строка, в апострофах), по которой производится дифференцирование, n - порядок производной. Например,

>> P= diff('atan(x)',x,1);

>> pretty(P)

                                      1

                                   ------

                                        2

                                   1 + x

- Затем над f1_new нужно выполнить операцию интегрирования и получить результат с именем f1_old. Для этого используется функция int(f1_new,'x'). здесь f1_new - имя функции, 'х' - имя переменной (вводится, как строка), по которой производится интегрирование.

- Признаки правильного выполнения операций - при интегрировании результата дифференцирования восстанавливается исходная функция.

% Задача 2

% Определить символьные переменные

syms a x;

% Функция

f1=(a+x)^3

pretty(f1)

% Найти первую производную по х

f1_new=diff(f1,'x',1)

% Найти неопределенный интеграл по х

f1_old=int(f1_new,'x')

3. Разложение в ряд Тейлора.

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

- Начать надо с указания символьных переменных. Для этого применяется функция: syms перечень имен переменных через пробел

- Затем надо ввести исходную функцию.

- Далее следует выполнить операцию разложения в ряд Тейлора и получить результат с именем f1_new. Для этого используется функция taylor(f1,n,'x',a). Здесь f1 - имя функции, переменной, n - порядок остаточного члена, , 'x' - имя переменной (вводится, как строка, в апострофах), по которой производится разложение, а - значение переменной, для которого делается разложение (если оно пропускается, то предполагается а=0).

- Затем над f1_new нужно выполнить операцию свертки и получить результат с именем f1_old. Для этого используется функция simple(имя переменной).

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

- Для построения графиков символьных функций имеется процедура ezplot(f2,-h,h);grid on. Здесь f2 - имя символьной функции, (-h h) - нижний и верхний предел значений аргумента, grid on – включает в графике координатную сетку. В заголовок графического окна помещается описание функции. По этой причине в одно графическое окно можно вывести только один график.

% Задача З

% Определить символьные переменные

syms x;

% Функция

f2=sin(x)/x

% Найти разложение Тейлора по х в точке О

f2_new=taylor(f2,5,'x',0)

% Диапазон просмотра

п=4;

% График f2

figure(1);

ezplot(f2,-h,h);grid on

% График f2_new

figure(2);

ezplot(f2_new,-h,h);grid on

4. Оболочка  funtool

 Для работы с символьными функциями предусмотрена функция оболочка - funtool. Она представляет собой интерактивный графический калькулятор, позволяющий быстро построить две функции одной переменной f(x) и g(х). выводятся три автономных окна: два графических и управляющее.

Графики отображаются в отдельных окнах с заголовками.

Управляющее окно содержит:

- Два поля ввода функций.

- Поле ввода пределов переменной х в формате [min.max].

- Поле ввода масштабирующего коэффициента а.

Управление осуществляется кнопками, сгруппированными в 4 ряда:

- Первый - тип символьного преобразования f(x).

- Второй - тип масштабирования f(x): f+a, f-a, f*a, f/a, f^a, f(x+a), f(x*a).

- Третий - тип замены f(x) на комбинацию f(x) и g(x).

- Четвертый - управляющие операции:

—>  Insert - ввести f(x) в библиотеку встроенных функций,

—> Cycle - циклически вызвать f(x) из библиотеки встроенных функций,

—>  Delete - удалить f(x) из библиотеки встроенных функций,

—> Reset - установить утилиту в исходное состояние,

—> Help - вызов справки.

—> Demo - демонстрация использования,

—> Close - закрыть.

Работа с функцией f1 (x)

Работа с функцией f2(x)

Внимание: funtool использует средства символьной математики. Поэтому при вычислении sin(x)/x неопределенность при х=0 раскрывается. Отрабатываются также бесконечно большие значения.

5. Исследование скорости роста символьной функции, описывающей некоторые параметры модели объекта

Построение математической модели для исследования указанной  задачи состоит  в построении касательной функции в некоторой точке X0, затем создания анимации процесса  построения касательной в точках диапазона [X0-1,X0+1].

Алгоритм, реализующий решение поставленной задачи, включает следующие шаги:

1. Определение символьной функции по входной строковой переменной при помощи sym.

2. Нахождение производной в символьном виде.

3. Формирование символьного выражения для касательной.

4. Построение графика символьной функции на некотором интервале [X0-1,X0+1] с шагом 0.1.

5. Построение движущейся точки касания и графика касательной в этой точке.

 Рекомендации по выполнению задания:

A. Следует создать файл-функцию tangent1(‘x^2’,0), возвращающую символьную строку yt, которая содержит символьную запись уравнения производной в некоторой точке X0.

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

1. Для вычисления значения Y0 символьной функции f10, соответствующей строке f1, в точке X0 следует использовать:

sym x

f10=sym(f1);

Y0=subs(f10,’x’,X0);

2. Для символьного задания уравнения касательной следует использовать уравнение прямой, проходящей через точку (x0,y0), и команду sym

>> yt=sym('y0+k*(x-x0)')

yt =

y0+k*(x-x0)

3. Для вычисления коэффициента K наклона касательной следует продифференцировать исходное уравнение и найти его значение в точке X0, используя команды

 f11=diff(f10,’x’,1);

и  K = subs(f11,’x’,X0);

4. Последовательно подставить значения коэффициента k и координат точки x0, y0

>> K=3;  %K – необходимо вычислить на предыдущем шаге

>>   %K=3 выбрано в качестве примера

>> yt=subs(yt,'k',K)

yt =

y0+3*x-3*x0

>> yt=subs(yt,'x0',X0);

>> yt=subs(yt,'y0',Y0);

В.  Построение анимации движения касательной

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

% анимациz

% последовательного построения касательной к графику

% функции y=x^2 в точках x0 от -1 до 1

% h3 – дескриптор, используемый для анимации движения точки касания

% h1 – дескриптор, используемый для анимации положения касательной

clear;

x=[-1:0.1:1];        % интервал изменения переменной х с шагом 0.1

% для построения графика кривой

x1=[-1.5:0.1:1.5]; % интервал изменения переменной х с шагом 0.1

% для построения отрезка касательной

% задать дескриптор точки касаниz

x0=x(1);

y0=x0*x0;        % в лаб. работе

% y0 вычисляется на основе символьной функции

h3=line(x0,y0);

set(h3,'Marker','o');

set(h3,'color','b');

set(h3,'EraseMode','xor');

% задать дескриптор графика функции y=x^2

y2=x.*x;  % в лаб. работе

% y2 вычисляется на основе символьной функции

% команды subs и вектора х

h2=line(x,y2);

set(h2,'color','r');

% задать дескриптор уравнениz касательной в точке (x0,y0)

y1=y0+2*x0*(x1-x0);

h1=line(x1,y1);

set(h1,'color','g');

set(h1,'EraseMode','xor');     %'background');

% зададим диапазон изменениz переменных вдоль осей Х и Y

axis([-2 2 -1 4]);

axis manual;

% принудительный вывод графиков, заданных дескрипторами

pause(0.1);

k=length(x);

% бесконечная анимация, завершить - Ctrl+C

while 1

   for i=1:k

       x0=x(i);

       y0=x0*x0;        % в лаб. работе

% y0 вычисляется на основе символьной функции

       y1=y0+2*x0*(x1-x0);   % 2*x0 – это коэффициент наклона касательной

% для функции x^2

    % в лаб. работе для нахождения y1 надо

% использовать символьную функцию, записанную в строку yt 

% команду subs и вектор х1

% yt – здесь находится для каждой точки х0

 % прорисовка точки и касательной в новом месте

       set(h3,'XData',x0,'YData',y0);

       set(h1,'XData',x1,'YData',y1);

       pause(0.1);

   end

end

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

Задания лабораторной работы

1. Выполнить развертку и свертку аналитического выражения.

Ввести выражение f1 (x).

Вывести в командное окно выражение f1 (x) в естественном виде (команда pretty).

Развернуть выражение f1 (x).

Полученное выражение свернуть.

Сравнить результат c f1(x).

2. Выполнить дифференцирование и интегрирование аналитическое выражение.

Ввести выражение f1 (x) и найти производную по х.

Вывести в командное окно выражение f1 (x) в естественном виде (команда pretty).

Для полученного выражения найти неопределенный интеграл.

Сравнить с f1 (x).

3. Разложить в ряд Тейлора функцию, заданную аналитическим выражением.

Ввести выражение f2(x) и найти его разложение в ряд Тейлора.

Построить XY график для f2(x) и его разложения в ряд Тейлора F2(x).

4. Работа с командой funtool

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

Задать функцию f2 и выполнить с ней операцию символьного дифференцирования.

5. Исследование скорости роста символьной функции, описывающей некоторые параметры модели объекта в точке X0=0  и в диапазоне [X0-1,X0+1].

Необходимо написать следующие файл-функции:

а) файл-функция, входными аргументами которой являются:

-  строка с символьным представлением функции f1(x) одной переменной х,

- числовое значение абсциссы точки, в которой следует провести касательную.

б) файл-функция анимации процесса построения касательной в точках диапазона

[X0-1,X0+1].

Варианты:

Для всех вариантов: a=4, b=5.

f1(x)

f2(x)

1

(1+x)2

ax3+bx2+cx+d

2

(1-х)2

sin(ax)

3

(а+х)2

cos(ax)

4

(а-х)2

sec(x)

5

(1+х)3

exp(ax)

6

(1-х)3

x(ln(x)-1)

7

(а+х)3

-csec(x)

8

(а-х)З

1/(1+x2)

9

(1+x)4

1/(a+bx)

10

(1-х)4

1/(1-x2)

PAGE  1


 

А также другие работы, которые могут Вас заинтересовать

38234. Анализ маркетинговой среды 109.5 KB
  Видовые конкуренты это прочие разновидности того же товара способные удовлетворить конкретное желание покупателя. Конкуренты марки это разные марки одного и того же товара способные удовлетворить его желание. В данном случае разновидностями товара будут трех пяти и десятискоростные велосипеды. расположите по определённым характеристикам характеристики товара при его покупке.
38235. Товарная политика предприятия 82 KB
  Товары в зависимости от цели покупки и категории покупателя разделяют на потребительские и промышленные. Потребительские товары товары которые покупаются физическими лицами для личного некоммерческого потребления. Товары произведенотехнического назначения промышленные товары которые приобретаются предприятиями и организациями для промышленного потребления т. Потребительские товары делятся на группы виды в зависимости от покупательского поведения при их покупке: 1.
38236. Экономическая теория, ответы к экзамену 424.5 KB
  Можно сказать что экономическая наука явилась теоретическим отражением сути капитализма противоречивых явлений жизни людей разделенных на классы когда торжество идей свободы равенства и братства сочеталось с бременем наемного труда. В начальный период возникновения рынка они преимущественно приравнивали друг к другу результаты своего труда продукты созданные их руками или непосредственно полученные у природы и по праву им принадлежащие. В этих условиях основой соизмерения определяющей величину стоимости ценности этих вещей...
38237. Ценовая политика предприятия 68.5 KB
  На значение цены оказывают влияние многочисленные факторы которые можно разделить на внутренние и внешние. Здесь определяют нижнюю границу цены. Спрос определяется верхнюю границу цены чувствительности потребителей цен определяется с помощью показателя ценовой эластичности спроса. Расчёт дуговой эластичности Ер Q объёмы продаж P цена ΔQ изменение спроса ΔP изменение цены ΔQ = Q2 Q1 Знак при коэффициенте эластичности показывает тип связи между данными величинами: ценой и спросом а именно: указывает на прямую зависимость а...
38238. Сбытовая политика предприятия 59 KB
  Каналы распределения Сбытовая деятельность совокупность операций связанных с реализацией товаров: выбор посредников налаживание контактов с покупателем управление сбытовыми запасами транспортировка товаров заключение договоров на реализацию. Сбытовые агенты лица представляющие интересы определенных производителей при сбыте их товаров. Последние занимаются перепродажей товаров на условиях комиссии и получают вознаграждение от продавцов и покупателей. Сегодня услугами розничных магазинов самообслуживания пользуются представители всех...
38239. Маркетинговая коммуникативная политика 107.5 KB
  Телевидение Большой охват сочетание цвета звука изображения; возможность показать товар в действии; избирательность аудитории; чувственное воздействие Высокая стоимость mx из всех навязчивость; перегруженность рекламой; мимолетность рекламного контакта 2. ΔП прирост среднесуточного товарооборота R рентабельность рекламируемой продукции З затраты на рекламную компанию Психология цвета и символов в рекламе Согласно результатам полученным в ходе многочисленных психологических эксперементов учеными был сделан вывод что цвет...