2017-01-08 10 views
0

Я хочу, чтобы определить вектор, X, с пятью элементами:Как определить вектор, который его элементы создаются в цикле For?

syms a 
X = zeros(1,5) 
X(1) = 1; 
for k=1:4 
    X(k+1)=X(k)+a^2; 
end 

На самом деле мне нужно иметь вектор X, что его элементы должны быть основаны на переменной а. Но я сталкиваюсь с ошибкой в ​​Matlab, когда я пишу код выше:

The following error occurred converting from sym to double: 
Error using symengine (line 58) 
DOUBLE cannot convert the input expression into a double array. 
If the input expression contains a symbolic variable, use VPA. 

Error in Code2 (line 5) 
X(k+1)=X(k)*a^2; 

Как это исправить?

+0

Удалить 'syms a' и дать' a' значение? Почему вы используете символическую математику здесь? – beaker

+0

@ beaker, элементами вектора «X» будут коэффициенты многочлена: 'x (t, a) = X (1) + X (2) t + X (3) t^2 + ...' , Таким образом, результатом должна быть функция 'x (a, t)' 'a' и 't'. И тогда я должен вычислить частную производную от x (t, a) 'относительно' a '. Поэтому я не могу просто поставить значение вместо «a». – Alireza

ответ

0

Вы смешиваете символьные переменные с удвоениями, Удваивает значение, вы можете использовать цикл, который вы написали, только если a является двойным и уже имеет значение (значение может быть введенным функцией). , например:

function ret=testFunc(a) 
X = zeros(1,5) 
X(1) = 1; 
for k=1:4 
    X(k+1)=X(k)+a^2; 
end 
ret=X 
end 

, если вы хотите работать с Симс (для другого символического анализа) можно определить й как символ тоже, например:

syms a x 
x(1)=1; 
for i=2:5 
x(i)=x(i-1)+a.^2; 
end 

теперь х является функцией а, если вы печатаете й вы получите:

[ 1, a^2 + 1, 2*a^2 + 1, 3*a^2 + 1, 4*a^2 + 1] 

оценить значение х, то все равно нужно ввести значение для а.

Matlab помощь предложить функцию Subs для замены в разыскиваемого стоимости следующим образом:

y = subs(x,a,4) 

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

double(y)