Symbolic dependency apparently sometimes gives wrong answers

7 ビュー (過去 30 日間)
Mohammad Shojaei Arani
Mohammad Shojaei Arani 2022 年 10 月 28 日
Hello,
I have a simple question but could not figour out how to tackle it by myself. Consider the following:
syms p1 y
f=[p1*y;p1];
hasSymType(f,'symfunDependingOn',y)
0
0
I am not happy with this since clearly I expected to get the answer [1,0]. I do not know why it behaves like this!!!
Please not that my actual problem are much more complicated and this is just to explain to you my question. So, please do not give me any answer which
just works for this simple example, rather I would like a generic sort of answer.
Any idea?
thanks in advance!
Babak

採用された回答

Walter Roberson
Walter Roberson 2022 年 10 月 28 日
Not a bug. Your first element is a symbolic expression involving the desired variable, but symfundependingon is for unresolved symbolic functions that have the variable as a parameter.
syms f(x) g(x, y) h(y)
expressions involving f or g would be symfun depending on x, but h would not be.
  7 件のコメント
Steven Lord
Steven Lord 2022 年 10 月 28 日
If you click on the three dots at the right side of the question, an answer, or a comment one of the options is Link. This will give you a hyperlink you can send to Support that the Support staff can use to see the discussion that's taken place here.
For example, if you click on this link you should be directed to the comment you made on John D'Errico's answer.
Mohammad Shojaei Arani
Mohammad Shojaei Arani 2022 年 10 月 28 日
I coontacted them!
Thanks Steven!
And, have a great weekend!

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

その他の回答 (2 件)

John D'Errico
John D'Errico 2022 年 10 月 28 日
編集済み: John D'Errico 2022 年 10 月 28 日
To be honest, this appears to be more of a bug report than anything else, since that option in hasSymType does not apprear to be working as per the documentation. So I would report it as such, but Answers is not the correct place to report bugs.
Could you find some other solution that would work? Even if someone could find something that works here, it does not get past the fact that hasSymType is the correct tool to solve your specidfic problem, and it should work as per the help.
  1 件のコメント
Mohammad Shojaei Arani
Mohammad Shojaei Arani 2022 年 10 月 28 日
Hi John,
Thanks!
Of course, I have my alternative way to tackle this issue (I had to write a rather complicated function which
finds the functional dependencies. I first convert my symbolic expression to a character or string and then detect functional dependencies using character manipulations). But, I would be happier when MATLAB fixes this bug.
Thanks again,
Babak

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


Paul
Paul 2022 年 10 月 28 日
Hi Mohammad,
This works, at least for the examples cited in this comment. Haven't tested for anything but those examples.
syms x y z f(x,y)
F = @(expr,var) cellfun(@(s) any(has(s,var)),arrayfun(@(s) findSymType(s,'variable'),expr,'UniformOutput',false));
E = [x y f(x,y)] % then I expect to get the answer [1 0 1].
E = 
F(E,x)
ans = 1×3 logical array
1 0 1
E =[1 2 x^2;sin(x*y) x z] % then I expect to get the answer [0 0 1;1 1 0].
E = 
F(E,x)
ans = 2×3 logical array
0 0 1 1 1 0
  1 件のコメント
Mohammad Shojaei Arani
Mohammad Shojaei Arani 2022 年 10 月 29 日
Hi Paul,
This is great!
I hope it works always and is not limitted to some case examples.
Thanks!
Babak

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

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by