Bug with piecewise?
4 次查看(过去 30 天)
显示 更早的评论
I'm no expert at all in mathematics but I wrote a simple program that doesn't seem to get the answer that I'd expect.
It provides:
ans =
6 - time
time + 6
as the only solutions, however shouldn't 0 be a solution assuming time > 6?
This could just be poor programming on behalf of me and if it is how would I get the required answer.
- Is this a bug?
- Am I making a mistake?
- If this is a mistake how can I fix it?
This is supposed to simulate a 1D particle traveling at a fixed velocity of 1 towards origin (0). I understand the answer is relatively simple to do by hand, however I have this repeated with more complicated variables in a larger equation that would be incredably tedious and unmaintainable to solve by hand.
syms position time;
speed = piecewise(position > 0,-1,position < 0,1,0);
solve(int(speed,time) + 6 == position,position) %6 is starting offset
0 个评论
采纳的回答
Walter Roberson
2019-8-28
编辑:Walter Roberson
2019-8-29
When position is 0 then speed is 0. int(0,time) is 0 plus a constant. Add 6 and the result is 6 plus a constant. The result is not equal to 0 unless the constant is -6. Which is possible, but int() always uses constant 0 for indefinite integration.
9 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Assumptions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!