Substitute 3 variables in this symbolic equation

2 次查看(过去 30 天)
Hi, i have a big symbolic equation containing w, x, y as the symbolic variables.
I now want to substiute w in the equation also. The previous answer to my question was
subs(subs(Wnet, x, 5:5:30)', y, 1100:100:1500) subs(subs(SFC, x, 5:5:30)', y, 1100:100:1500)
However, i want to add w to it from 1:0.5:3 How do i do it?

回答(4 个)

Christopher Creutzig
And then, there's always
>> [X, Y, W] = ndgrid(5:5:30, 1100:100:1500, 1:0.5:3);
>> subs(Wnet, {x, y, w}, {X, Y, W})
  3 个评论
Vaibhav
Vaibhav 2012-5-11
Example of what i meant to say above through an example script.
clear
h=[1,2,3,4,5,]; %height
syms w x y
t0=w; %temperature (depends on h, there's no equation to it!)
p0=x; %pressure (depends on h, there's no equation to it!)
m=y; %another variable which is completely independent
Wnet=3.*t0 + 2.*p0 + m.^2;
x1=subs(subs(Wnet, {w,x}, {250:10:280,15000:5000:30000})', y, 0.5:0.5:3);
%means for h = 1,t0=250,p0=15000
%h = 2,t0=260,p0=20000
%so in real, h and y is what i want to get in the 5x5 array.
Vaibhav
Vaibhav 2012-5-11
h=[1,2,3,4] ***
i think the code i typed works :P
evaluating my answers

请先登录,再进行评论。


Alexander
Alexander 2012-5-11
Maybe in this case the suggestion from Walter scales better:
[X, Y, Z] = ndgrid(5:5:30, 1100:100:1500, 1:0.5:3);
WnetF = matlabFunction(Wnet, 'vars', [x, y, z]);
WnetN = double(arrayfun(WnetF, X, Y, Z));
  1 个评论
Vaibhav
Vaibhav 2012-5-11
i made a mistake in my question
Example of what i meant to say above through an example script.
clear
h=[1,2,3,4,5,]; %height
syms w x y
t0=w; %temperature (depends on h, there's no equation to it!)
p0=x; %pressure (depends on h, there's no equation to it!)
m=y; %another variable which is completely independent
Wnet=3.*t0 + 2.*p0 + m.^2;
x1=subs(subs(Wnet, {w,x}, {250:10:280,15000:5000:30000})', y, 0.5:0.5:3);
%means for h = 1,t0=250,p0=15000
%h = 2,t0=260,p0=20000........
%so in real, h and y is what i want to vary and substitute to get the 5x5 array.

请先登录,再进行评论。


Christopher Creutzig
Or, expanding on the thing you have:
>> syms x y z
>> f = 3*x + 2*y + z;
>> subs(subs(subs(f, x, 1:4), y, (1:3)'), z, reshape(1:3,1,1,3))
ans(:,:,1) =
6 9 12 15
8 11 14 17
10 13 16 19
ans(:,:,2) =
7 10 13 16
9 12 15 18
11 14 17 20
ans(:,:,3) =
8 11 14 17
10 13 16 19
12 15 18 21
(For symmetry, you could also write the (1:3)' as reshape(1:3,1,3).)
Compared to Alexander's solution (which works just fine, afaics), this may (or may not) be faster, since it only inserts each x-value once. It is also a way in which you can get symbolic results, e.g., a result still containing a. (Alexander's solution has the advantage of doing most of the work in MATLAB, not in symbolics, which often is faster.)
  1 个评论
Vaibhav
Vaibhav 2012-5-11
I made a mistake in expressing my question.
I have to substitute 3 variables, but i have to convert 2 variables to one.
i have a matrix for height which is h=[1,2,3,4,5]
Now for h=[1,2,3,4,5]
the values of w and x are
w=[0.5:0.5:3]
x=[5:5:30]
They correspond to the same values of h
y is as it is.
What i somewhat mean is
subs(subs(Wnet, {w,x}, {0.5:0.5:3,5:5:30})', y, 1100:100:1500)
subs(subs(SFC, {w,x}, {0.5:0.5:3,5:5:30})', y, 1100:100:1500)
How do i tackle this?

请先登录,再进行评论。


Vaibhav
Vaibhav 2012-5-11
The code i type worked :D
But still, i got to learn lots for your answers above.
Lots of codes and stuff to try and learn.
Thanks for the help guys =)
clear
h=[1,2,3,4,5,]; %height
syms w x y
t0=w; %temperature (depends on h, there's no equation to it!)
p0=x; %pressure (depends on h, there's no equation to it!)
m=y; %another variable which is completely independent
Wnet=3.*t0 + 2.*p0 + m.^2;
x1=subs(subs(Wnet, {w,x}, {250:10:280,15000:5000:30000})', y, 0.5:0.5:3);
%means for h = 1,t0=250,p0=15000
%h = 2,t0=260,p0=20000
%so in real, h and y is what i want to get in the 5x5 array.

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by