Unknown variable within an equation
Show older comments
Hello,
I have an equation of the form P*dawson(sqrt(log(P)-log(A)))== sqrt(B)*T to be solved.
Variable A and B are scalar, but variable T is a vector. I need to solve for P in the equation.
This is the code I have written
syms P
T=5:5:500;
A=2;
B=0.5;
eqn = P*dawson(sqrt(log(P)-log(A)))== sqrt(B).*T ;
s = solve(eqn,P)
s =
Empty sym: 0-by-1
That is the solution for s I got.
Please advise what can be done.
Thanks.
Accepted Answer
More Answers (2)
Image Analyst
on 3 Oct 2018
0 votes
dawson needs to be defined also.
2 Comments
Image Analyst
on 4 Oct 2018
Edited: Image Analyst
on 4 Oct 2018
Olufemi's "Answer" moved here:
@Image analyst, sorry I don't get what you mean by Dawson needs to be defined. Dawson is a function in MATLAB. For example, you can have dawson(2) = 3.013403889237920e-01 when solved.
Thank you for the response.
Image Analyst
on 4 Oct 2018
OK, it wasn't in my help. It must be in a toolbox that you have that I don't have.
Walter Roberson
on 4 Oct 2018
syms P
T=5:5:500;
A=2;
B=0.5;
s = arrayfun( @(t) vpasolve(P*dawson(sqrt(log(P)-log(sym(A))))== sqrt(sym(B)).*t, P), T);
plot(T, s)
You have to loop solving one value at a time. With the code you had, you were trying to find a single value for P that satisfied all of the equations at the same time.
3 Comments
Shozeal
on 4 Oct 2018
Edited: Walter Roberson
on 4 Oct 2018
Walter Roberson
on 4 Oct 2018
You should not have changed the t to T on the line.
You appear to be using R2015a or earlier (I think it was... I would need to check), as a few releases ago arrayfun() started being able to handle sym variables.
syms P
T=5:5:500;
A=2;
B=0.5;
scell = arrayfun( @(t) vpasolve(P*dawson(sqrt(log(P)-log(sym(A))))== sqrt(sym(B)).*t, P), T, 'uniform', 0);
s = double([scell{:}]);
plot(T, s)
Nearly a straight line.
Shozeal
on 5 Oct 2018
Categories
Find more on Mathematics in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!