Output Management

3 次查看(过去 30 天)
mkeehan
mkeehan 2011-7-18
Hi!
I am asking matlab to do this:
iP = 0; % this is a cell in the dark
iSat = 1e-8;
rS = .5;
rSh = 300;
n = 20000;
subTotal = solve('iP - iSat * (exp(38.66976*(x+dcellCurrent(1)*rS)/n)-1) -(dcellCurrent(1)*rS + x)/rSh - dcellCurrent(1) = 0',x)
So, I have asked it to print the value of x and store the value of x in subTotal, yes?
But when it prints, it says:
subTotal =
iP*rSh - 1.0*rSh*dcellCurrent(1) - 1.0*rS*dcellCurrent(1) + iSat*rSh - 0.025860000165504001059225606779044*n*lambertw(0, (120843*iSat*rSh*exp((120843*rS*dcellCurrent(1))/(3125*n))*exp((120843*rSh*(iP + iSat - dcellCurrent(1) - (rS*dcellCurrent(1))/rSh))/(3125*n)))/(3125*n))
All I want it to print is the number, not the constants and such.
How do I go about changing the output from an expression to a simple number?

回答(1 个)

Walter Roberson
Walter Roberson 2011-7-18
Leave out the '' around the expression, and leave out the = 0
subTotal = solve(iP - iSat * (exp(38.66976*(x+dcellCurrent(1)*rS)/n)-1) -(dcellCurrent(1)*rS + x)/rSh - dcellCurrent(1), x);
  2 个评论
mkeehan
mkeehan 2011-7-19
After doing so, it says:
Warning: List of equations is empty.
> In solve at 70
In transcendentalTesting at 19
??? Error using ==> mupadmex
Error in MuPAD command: Either base or exponent must be a scalar.
Error in ==> sym.sym>sym.mpower at 207
B = mupadmex('symobj::mpower',A.s,p.s);
Error in ==> transcendentalTesting at 19
subtotal = (solve(iP - iSat * (exp(38.66976*(x+dcellCurrent(1)*rS)/n)-1) -(dcellCurrent(1)*rS + x)/rSh -
dcellCurrent(1),x)-dcellVoltage(1))^2 ;
Comments?
Walter Roberson
Walter Roberson 2011-7-19
Make sure you
syms x
before executing the solve.
double() around the solve() call, and use .^2 instead of ^2

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by