syms c  A(t) v(t)
A(t) =
            0
 c*sin(tt(t))
 c*cos(tt(t))

Jak mogę uzyskać X = A(2) = c*sin(tt(t)); (funkcja w drugim rzędzie)? Jeśli wpiszę A(2), wynik będzie jak poniżej (zastępuje stałą dla funkcji, która nie jest moim pragnieniem):

>> A(2)
ans =
            0
 c*sin(tt(2))
 c*cos(tt(2))
1
Karim 16 luty 2017, 14:59

2 odpowiedzi

Najlepsza odpowiedź

Problem polega na tym, że zdefiniowałeś A jako funkcję symboliczną ({{ X1}}), a nie jako tablica symbolicznych wyrażeń. Zamiast:

syms c A tt(t)
A = [0;
     c*sin(tt(t));
     c*sin(tt(t))];

Teraz A(2) powróci c*sin(tt(t)).

Alternatywnie, jeśli nie możesz zmienić definicji A(t), musisz przypisać go do zmiennej pośredniej, aby przekonwertować go na tablicę symbolicznych wyrażeń:

syms c  A(t) tt(t)
A(t) = [0;
        c*sin(tt(t));
        c*cos(tt(t))];
B = A(t);

Następnie B(2) powróci c*sin(tt(t)). Możesz także użyć formula, aby wyodrębnić wyrażenia podstawowe:

B = formula(A):
1
horchler 16 luty 2017, 15:22

W MATLAB musisz użyć funkcji "Subs (f)" do oceny funkcji.

Najpierw utwórz funkcję:

syms g(x)
g(x) = x^3;

Następnie przypisuje wartość x:

x=2;

Następnie jeśli oceniasz G za pomocą funkcji Subs, wynikiem jest wartość oczekiwana 8, ale jest przypisana do funkcji symbolicznej, śnieżyna. Ta nowa funkcja symboliczna formalnie zależy od zmiennej x.

gnew = subs(g)

Wywołanie funkcji, g (x), zwraca wartość g dla bieżącej wartości x. Na przykład, jeśli przypisałeś wartość 2 do zmiennej X, wywoływanie G (X) jest równoważne wywołaniu G (2)

g2 = g(x)

g2 =
4

g2 = g(2)

g2 =
4
0
Alexis Kowalczuk 16 luty 2017, 12:24