フィルターのクリア

Strange behaviour of simplify

4 ビュー (過去 30 日間)
Maximilian Schönau
Maximilian Schönau 2020 年 5 月 4 日
コメント済み: Star Strider 2020 年 5 月 4 日
Hello, when solving a math Problem today i noticed a strange behaviour of simplify and I cannot explain myself what I did wrong. Basically I do have two terms and want to compare if they are equal, but Matlab returns false, altough they actually are. Is there a syntax thing I did false?
syms a b c t
f1 = sqrt((a^2+b^2+c^2)/3) / t;
f2 = sqrt(((a/t)^2+(b/t)^2+(c/t)^2)/3);
pretty(simplify(f1==f2))
Here you can see, that both expressions are equal, but Matlab returns false:
logical(simplify(f1==f2))

採用された回答

Star Strider
Star Strider 2020 年 5 月 4 日
use the isAlways function to compare symbolic expressions:
syms a b c t
f1 = sqrt((a^2+b^2+c^2)/3) / t;
f2 = sqrt(((a/t)^2+(b/t)^2+(c/t)^2)/3);
pretty(simplify(f1==f2, 'Steps',500))
equalityTest = isAlways(f1 == f2)
here:
equalityTest =
logical
0
and:
Warning: Unable to prove '(a^2/3 + b^2/3 + c^2/3)^(1/2)/t == (a^2/(3*t^2) + b^2/(3*t^2) +
c^2/(3*t^2))^(1/2)'.
.
  2 件のコメント
Maximilian Schönau
Maximilian Schönau 2020 年 5 月 4 日
Thank you so much, I needed that function!
As for the assumed equality it is totally my fault that i did not notice the difference, in my function I use only Values bigger than zero...
Star Strider
Star Strider 2020 年 5 月 4 日
As always, my pleasure!
You can set conditions in the syms call, for example:
syms a b c t positive real
f1 = sqrt((a^2+b^2+c^2)/3) / t;
f2 = sqrt(((a/t)^2+(b/t)^2+(c/t)^2)/3);
pretty(simplify(f1==f2, 'Steps',500))
equalityTest = isAlways(f1 == f2)
however that does not change the ‘equalityTest’ result.

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

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2020 年 5 月 4 日
they are not the same. think about negative t

カテゴリ

Help Center および File ExchangeAssumptions についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by