Help with symbolic substitution

2 ビュー (過去 30 日間)
Richard Fiifi Annan
Richard Fiifi Annan 2021 年 7 月 27 日
I have created zz that has 3 symbols, x_1, x_2 and x_3. I later generated 3 random numbers, xx, to replace the symbols and calculate zz.
My problem now is how to substitute the 3 random numbers such that the 1st, 2nd and 3rd numbers respectively replace x_1, x_2 and x_3 in order to calculate a value for zz as pp.
%
syms x_1 x_2 x_3
y = (x_1 + x_2 + x_3)^2;
yy = expand(y)
numerator = (x_1*x_1) + (x_1*x_2) + (x_1*x_3);
zz = numerator / yy
% Generate a random number for each of x_1, x_2 and x_3:
xx = randi(10,[1 3]);
% Use xx to calculate zz:
pp = subs(zz, xx) % ouput is incorrect. Help is needed!

採用された回答

Yongjian Feng
Yongjian Feng 2021 年 7 月 27 日
%
syms x_1 x_2 x_3
y = (x_1 + x_2 + x_3)^2;
yy = expand(y)
numerator = (x_1*x_1) + (x_1*x_2) + (x_1*x_3);
zz = numerator / yy
% Generate a random number for each of x_1, x_2 and x_3:
x_1=randi(10);
x_2=randi(10);
x_3=randi(10);
pp = subs(zz)
  1 件のコメント
Richard Fiifi Annan
Richard Fiifi Annan 2021 年 7 月 27 日
Thanks very much @Yongjian Feng

サインインしてコメントする。

その他の回答 (1 件)

KSSV
KSSV 2021 年 7 月 27 日
Why don't you use anonymous function ?
zz = @(x) (x(1) + x(2) + x(3))^2/(x(1)^2 + x(1)*x(2) + x(1)*x(3)) ;
% Generate a random number for each of x_1, x_2 and x_3:
xx = randi(10,[1 3]);
% Use xx to calculate zz:
pp = zz(xx)
pp = 1.2857
  1 件のコメント
Richard Fiifi Annan
Richard Fiifi Annan 2021 年 7 月 27 日
Thanks for the quick response @KSSV. Surely your answer solves the problem. My reason for posting the question was because zz is a product of some other calculations upstream. So I thought perhaps there might be an MATLAB in-built function for solving it.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeConversion Between Symbolic and Numeric についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by