36421

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

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

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

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

Русский

2013-09-21

357.5 KB

109 чел.

Лабораторная работа 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


 

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

38437. Многокритериальный синтез позиционного управления на основе многопрограммной стабилизации 2.76 MB
  Комбинированный метод многокритериального синтеза позиционного управления формирует аналитический вид управления, как набор параметров и известных функций состояния из состава «сетевого оператора» конечной сети этих функций и операций над ними
38438. Разработка моделирование процесса поддержки заданных климатических условий в помещении в системе InTouch 2.09 MB
  Трехдиапазонный регулятор температуры 60 3. Ведь отапливать рабочие помещения в выходные и праздничные дни не следует так интенсивно как по будням или скажем интенсивность отопления должна зависеть от температуры за окном а не от календарного времени года: вспомним хотя бы минувшую зиму когда в январе была плюсовая температура а отопление по интенсивности было “зимним†приходилось открывать окна в зданиях а можно было всего лишь снизить мощность обогрева тем самым сэкономить значительные средства. Возможные колебания...
38439. Синтез системы управления спуском космического аппарата на поверхность Марса методом интеллектуальной эволюции 1.52 MB
  Преодолеть указанные ограничения в данной работе предлагается путем ухода от построения оптимального управления как функции времени, так как оно не учитывает поведения системы уже в процессе функционирования и влияния этого поведения на дальнейшее состояние всей системы.
38440. Информационной безопасности облачных сервисов на базе мобильных облачных вычислений с использованием метода PP-CP-ABE 2.51 MB
  Целью данной работы является анализ существующих методов информационной безопасности и выбор соответствующего метода который должен подходить под соответствующие требования: Обеспечение надёжного шифрования данных при передаче их от пользователя к провайдеру услуг по хранению данных Минимизация нагрузки на облачные сервисы Возможность применения метода для лёгких мобильных устройств. Эффективные и безопасные операции по хранению данных для мобильного облачного вычисления. Параметры для хранения данных....
38441. Многокритериальный синтез позиционного управления с моделью 6-го порядка на основе метода формирования притягивающих многообразий 4.39 MB
  Можно выделить три типовых подхода в которых сгруппирован ряд известных методов. Это, так называемые, прямые интерактивные методы, например, на основе конусов доминирования и генетического программирования; методы скаляризации, такие как, свертка показателей, пороговая и лексикографическая оптимизация
38442. Исследование экономических показателей предприятия при помощи систем СТЭК 2.3 MB
  Исходные данные для среднестатистического предприятия олигополии В работе имеют место следующие исходные данные: годовая характеристика спроса на товар определяемая бюджетными ограничениями потребителей их предпочтениями и эластичностью вычислить по предложенной методике на базе Const=40 млн. год; доля капитала уплачиваемая за аренду оборудования = 150 год; показатели технологического процесса фирм ; ; планируемые производственные затраты фирм млн. допустимые значения ресурсов труда и капитала: чел; млн. 1 2 3 СТЭК 1 7 1...
38443. Разработка и исследование метода грамматической эволюции для структурно-параметрического синтеза системы управления динамическим объектом 1.63 MB
  Цель синтеза управления заключается в том, чтобы найти такое управление, при котором поведение объекта управления удовлетворяло бы заданным критериям. Данная задача до сих пор не решена аналитически в общем виде.
38444. Разработка и исследование метода сетевого оператора для логического вывода экспертной системы 1.29 MB
  Экспертные системы обычно определяют как программы ЭВМ, моделирующие действия эксперта-человека при решении задач в узкой предметной области на основе накопленных знаний, составляющих базу знаний. ЭС выдают советы, проводят анализ, дают консультации, выполняют классификацию и т.д. Практическое применение ЭС на предприятиях способствует значительному увеличению эффективности работы.
38445. Расчёт плиты опертой по контуру 210.72 KB
  22:2006 для торгових приміщень 15 12 18 Всего p=15 p=18 Полная Всего gp=8219 gp=9313 Поле плиты в осях 15АД: Нагрузка приходящая на всё поле плиты: Максимальные изгибающие моменты на полосе шириной 1м: для пролётных моментов: для опорных моментов: де табличные коэффициенты для опирания плиты. Для пролетных моментов: Для опорных моментов: Определяем пролетную арматуру в направлении lк: Rs = 355 МПа расчетное сопротивление арматуры растяжению для...