Построение композиции двух функций в Matlab

Я не могу понять, что не так с моим кодом здесь, в Matlab:

syms t
x=[1 2 3];
g=t*t;
f=sin(x);
y=compose(g,f);
plot(x,y,'o')

этот код, который я написал для построения y=sin(x)^2 . Поскольку у меня нет matlab на моем компьютере, поэтому он запускался на онлайн-компиляторе Octave, он выдает ошибку 'syms' undefined near line 1 column 1,

Пожалуйста, если кто-нибудь может помочь объяснить, где я не прав в коде?

1 ответ

Решение

Похоже, у вас не установлен символический набор математических инструментов, поэтому вы не можете использовать compose, Хотя есть способ обойти это. Помните, состав двух функций при вызове compose(f,g) таков, что мы возвращаемся f(g(y)) за f = f(x) а также g = g(y),

Что вы можете сделать, это построить это численно, не полагаясь на syms, Объявите числовой вектор времени, который... скажем... из t = 0 в t = 5 по шагам 0.01, После, объявите свои собственные дескрипторы функций, которые будут вычислять каждую функцию. Дескрипторы функций или анонимные функции - это небольшие однострочные функции, которые обычно представляют собой математические или вычислительные операторы, которые могут принимать входные данные любого размера, будь то одно значение, вектор или матрица, и применяют этот вычислительный оператор к каждому значению в ваших входных данных., Вы обозначаете анонимную функцию с помощью @ символ, затем в круглых скобках вы указываете переменные, которые будут составлять оператор, который вы хотите вычислить. В этом случае есть только одна переменная, которую мы будем называть t, но это может быть любая переменная на самом деле.

Поэтому я определяю функцию g который выполняет t^2 к каждому элементу в нашем входе. Обратите внимание, что я должен делать поэлементные операции. Если бы мы только что сделали t*tЕсли я предоставлю вектор или матрицу, это будет интерпретироваться как умножение матрицы, а это не то, что вы хотите. Точно так же мы определяем анонимную функцию f такой, что он производит sin(t) в качестве выхода.

С этим определенным, все, что вам действительно нужно сделать, это:

t = 0 : 0.01 : 5;
g = @(t) t.*t;
f = @(t) sin(t);
y = g(f(t)); %// Composition of the two functions (compose(g,f));
plot(t, y, 'o');
Другие вопросы по тегам