Problem with solving a quadratic equation
3 ビュー (過去 30 日間)
古いコメントを表示
Hello everybody!:)
I would need some help in solving a quadratic equation, where I have to find the two solutions for the variable "z" in function of many parameters
the equation is pretty long and I did the following steps:
syms d N m h b c A U R P k y z
I = ((d+1)/d)*z^(1/d)*N^(1/d)*b-3*c*z^2-U*A*h^k+P*h+R*A-m-h*P^(1+y); (I is the long euqation)
solve(I)
; the answer I got was:
ans =
log(-(m - P*h + 3*c*z^2 - A*R + A*U*h^k - (N^(1/d)*b*z^(1/d)*(d + 1))/d)/h)/log(P) - 1
Now, are the two solutions coincident? (I do not understand why I only got one of them)
But, main issue, how come I have the variable (z) in the root???? It should not be there!
Maybe I did some mistake..I don't know:/ Any help would be really appreciated!
I apologize if maybe this looks stupid but I am a beginner with matlab
Thank you!
Kodi
0 件のコメント
採用された回答
Walter Roberson
2013 年 12 月 15 日
編集済み: Walter Roberson
2013 年 12 月 15 日
You did not specify which variable to solve for, so it picked "y".
Note: because of the z^(1/d) term, the expression is not quadratic in z.
0 件のコメント
その他の回答 (2 件)
Kodi
2013 年 12 月 15 日
4 件のコメント
Walter Roberson
2013 年 12 月 15 日
You can do the solve(). It will return a form involving RootOf(), which the symbolic toolbox knows how to reason about. RootOf(f(x),x) means "the set of values, x, such that f(x) is 0".
When you eventually substitute in enough actual values for your parameters, the Symbolic Toolbox is sometimes able to break down the expression into closed form solutions. When all parameters have been given values, the Symbolic Toolbox is able to find numeric solutions, if you use vpa() or double(). However, the Symbolic Toolbox is often unable to find all solutions in such situations; in some cases it is not able to find any numeric solutions at all even though real-valued solutions exist.
Kodi
2013 年 12 月 15 日
4 件のコメント
Walter Roberson
2013 年 12 月 16 日
Then you will need to work numerically, which is not unexpected. Use fsolve or something like that.
Define values for all of your variables except z. Then
initial_guess = 1; %why not
fun = @(z) ((d+1)/d)*z^(1/d)*N^(1/d)*b-3*c*z^2-U*A*h^k+P*h+R*A-m-h*P^(1+y);
approximate_z = fsolve(fun, initial_guess);
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!