Can't solve function to variable.
Show older comments
Hi Matlab users,
I'm an engineering student currently working on my thesis.
I'm quite new to Matlab and I can't seem to find a solution to my problem. It is as follows: I want to solve this equasion to 'vt', but I tried everything in my knowledge of Matlab without any succes. I also use the MathCAD software for my studies and that doesn't seem to work either (free version). I used functions like solve, root functions, evaluate .. all that seemed usable to me. I might use them incorrectly, but always the same result: that it can't solve the function or that no results have been found. That's why I'm asking you guys for help. I have no knowledge of real numeric methods and have also tried solving it by hand. Only when I assign numbers to the variables except to 'vt' it seems to give results.
Is it possible that this equasion isn't solvable using only symbols? All parameters are variable but known, except for 'vt'.
It is for a system that does a given acceleration starting from a given speed and then a given decceleration to a given position and ending speed within a given time interval. The only parameter I want to know is 'vt' as v-terminus, the terminal speed of the servo drive, to get to the position in time. It's for generating an S-curve from a set of linear functions (position-time) given by the user in a motion controlling tool.
this is the equation in text base:
eqn := ((vt-vo)/a)*(vo+((vt-vo)/2))+vt(tt-((vt-vo)/a)-((ve-vt)/a))+((ve-vt)/a)*(ve+(ve-vt)/2)-tt*vgem = 0
below it's more graphic:


Thank you!
Accepted Answer
More Answers (1)
Patrick Aoun
on 16 Sep 2016
Edited: Patrick Aoun
on 16 Sep 2016
Wait... while rereading your question I noticed something.
Are you trying to solve it analytically? Like, without setting a value for the variables?
MATLAB doesnt do that (Wolfram Alpha might though). All variables apart from vt have to have a value. Your code has to start with:
vo = 10
tt = 5
a = 2
... etc.
If I misunderstood and you want to solve it numerically keep reading bellow:
________________________
If you have the optimisation toolbox, try using fminsearch:
1. Change the function so that it's in the form : 0 = ABS(...) (ABS here means absolute) 2. fminsearch the ABS(...) of the equation. Using v_t as the variable and defining the rest.
Be aware that there might be multiple solutions to your equation. fminsearch will return one, depending on x0.
Basically:
fminsearch( @(vt) abs( ((vt-vo)/a)*(vo+((vt-vo)/2))+vt(tt-((vt-vo)/a)-((ve-vt)/a))+((ve-vt)/a)*(ve+(ve-vt)/2)-tt*vgem ) , x0)
You choose x0. Try multiple ones.
3 Comments
"MATLAB doesnt do that "
In fact that is one of the features of the Symbolic Math Toolbox: "Symbolic Math Toolbox lets you analytically perform differentiation, integration, simplification, transforms, and equation solving."
The Symbolic Math Toolbox uses the MuPad symbolic engine and language, originally developed at Universität Paderborn:
Patrick Aoun
on 16 Sep 2016
!
Cédric Moers
on 16 Sep 2016
Edited: Cédric Moers
on 16 Sep 2016
Categories
Find more on Conversion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!