How can I select between two solutions?

3 ビュー (過去 30 日間)
Fromeros
Fromeros 2011 年 7 月 7 日
Hello everyone,
I've been searching a solution for this problem but I haven't found anything that fits with it. I have the following equation:
dx=(y-x)(C1·y+C2)
I know the values of x, dx, c1 and c2 for 100 steps (x and dx are(100x1)vectors and c1 and c2 constants), so I solve the equation and I substitute those values, but this equation has two solutions for 'y'. I need the solution bounded by 0 and 1. How can I make Matlab to choose the solution I need? This is the code I use to get the two solutions:
sol= solve('dx=(y-x)*(y*C1+C2)')
for i=1:N
dx=ACT_dot(i,1); x=ACT(i1,1) % Set the dx and x values
y_sol(i,1:2)=subs(sol)
end
As you can see 'y_sol' is a (Nx2) matrix where I store the two values. How can I make to chose the right value in each row?
Thanks for your your attention. Best Regards

回答 (1 件)

Ivan van der Kroon
Ivan van der Kroon 2011 年 7 月 7 日
This is a standard quadratic formula, put it in the form
a*y^2+b*y+c=0
and the solutions are
y1=(-b+sqrt(b^2-4*a*c))/(2*a)
y2=(-b-sqrt(b^2-4*a*c))/(2*a)
now that you have both solutions, use operations like
y=(y>=0)*(y<=1)*y;
but you probably have some continuity requirements that you want to implement. If you want to do it quickly for only 100 points I would suggest a for-loop with if-statements.

カテゴリ

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

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by