problem with taking Differentiate from variable with counter !
2 次查看(过去 30 天)
显示 更早的评论
dear all
i need to write a code that have x symbolic variable that contain x=[x1 x2 x3 .... xn] and also x is depended to variable t (time).at last i want to Differentiate from x. for 3 or 4 x it is easy to write code like below :
>> syms x1(t) x2(t) x3(t) >> x=[x1 x2 x3]
x(t) =
[ x1(t), x2(t), x3(t)]
>> diff(x,t)
ans(t) =
[ diff(x1(t), t), diff(x2(t), t), diff(x3(t), t)]
now when i want to write code that contain 30 x it is difficult to this in this way
i also try this but it doesnt work :
>> syms t >> x(t) = sym('x%d',[1 4])
x(t) =
[ x1, x2, x3, x4]
>> diff(x,t)
ans(t) =
[ 0, 0, 0, 0]
is there any way to do this in this way and if it is i also need a way to call the specific x
for example :
for i=1:3 for j=1:3 xij(t)=... end end
i know writing in this way is wrong but just for clearing my idea i really appreciated if someone could help me
0 个评论
采纳的回答
Birdman
2018-4-26
编辑:Birdman
2018-4-26
Well, the approach would be as follows:
n=30;
x=sym(zeros(1,n));%preallocation
syms t
for i=1:n
x(i)=str2sym(sprintf('x%d(t)',i));
end
Now, you can easily take derivative of x as
diff(x,t)
and observe the result you want.
3 个评论
Birdman
2018-4-26
Then use sym instead of str2sym:
n=30;
x=sym(zeros(1,n));%preallocation
syms t
for i=1:n
x(i)=sym(sprintf('x%d(t)',i));
end
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Assumptions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!