Making a generalized script, very new MATLAB user!
1 回表示 (過去 30 日間)
古いコメントを表示
Hi, I am a very new to MATLAB and I used python and C a lot for scientific computing. My colleagues encouraged me to get familiar with MATLAB and its powerful symbolic functions, so I have started using it. Anyway, I made a script for some arbitrary purpose and just thinking how to make a generalized one. Here is my code:
syms x1 x2 x3 a;
f=sym('x1^2+x2^2');
point=[1,1];
variable1 = [diff(f,x1),diff(f,x2)];
variable10 = double(subs(variable1,[x1,x2],point));
d=variable1;
variable3=subs(f,[x1,x2],point+a*d);
b=12.56
variable4 = double(subs(variable3,[x1,x2,a],[point,b]));
Here I have written f of only two variables and wish to make it generalized for n variable. Is there any method exists in MATLAB how can I do this? Any ideas or suggestions? Any help much appreciated. Thanks.
0 件のコメント
回答 (2 件)
Walter Roberson
2013 年 10 月 31 日
You can use matlabFunction() together with cell array expansion and num2cell
ThisCell = {'%08f', pi};
fprintf(ThisCell{:})
is equivalent to
fprintf('%08f', pi)
0 件のコメント
sixwwwwww
2013 年 10 月 31 日
Dear Andrew, one way to generalize the code is as follows:
syms a
n = 20; % Number of variables for function f
x = sym('x%d', [1 n]);
f = sum(x.^2);
point = ones(1, n);
variable1 = [];
for i = 1:n
variable1 = [variable1 diff(f, x(i))];
end
variable10 = double(subs(variable1,x,point));
d = variable1;
variable3 = subs(f, x ,point + a * d);
b=12.56;
variable4 = double(subs(variable3,[x, a],[point, b]));
I hope it helps. Good luck!
4 件のコメント
sixwwwwww
2013 年 10 月 31 日
Basically what you are doing is as follow:
d = -1 * variable1;
Now let's look at it. What is variable1? It is as follows:
variable1 = [2*x1, 2*x2, 2*x3, 2*x4]
So d becomes:
d = -1 * variable1 = [-2*x1, -2*x2, -2*x3, -2*x4]
Now we compute point + a * d
point = [1, 1, 1, 1];
point + a * d = [1 - 2*a*x1, 1 - 2*a*x2, 1 - 2*a*x3, 1 - 2*a*x4]
Now when you try evaluate
variable3 = subs(f, x ,point + a * d)
then make following substitutions:
x1 --> 1 - 2*a*x1
...
...
x4 --> 1 - 2*a*x4
Due to this reason variable 3 is function of a, x1,...,x4. Now I hope you can understand the reason. Now if you have some values for x1...x4 and put them in variable3 then it will become function of just 'a'.
I hope it helps you figure out the problem. Good luck!
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!