problems about solve exponential function
Mostrar comentarios más antiguos
Hi,
please have a look at a part of my code in the function maxmin0. The general idea is that I use solve to get the solution for a exponential function funcion, and then assign the solution to a variable called pf5, which is the output for maxmin0. The function runs well itself. But when I call this function in another function, it always show a error message . I am doubting it is the way I write the this function is not smart and so there is problem when it is being called...Could you help to check that?
Here is the code
if true
% p1=1-lb2-lb3;
p2=lb2;
p3=lb3;
if (d2(i,3)==d2(i,1))
pf5(2,i)=[0;0];
eu(i)=-Inf;
else
coef1=d1(i,1)+(d1(i,1)-d1(i,3))*d2(i,1)/(d2(i,3)-d2(i,1));
coef2=d1(i,2)+(d1(i,1)-d1(i,3))*d2(i,2)/(d2(i,3)-d2(i,1));
coef3=d1(i,3)+(d1(i,1)-d1(i,3))*d2(i,3)/(d2(i,3)-d2(i,1));
syms x
f5=simplify(p1*coef1*exp(-r*coef1*x)+p2*coef2*exp(-r*coef2*x)+p3*coef3*exp(-r*coef3*x));
y5(i)=solve(f5,x);
pf5(1,i)=double(y5(i));
end
and here is the error message
Warning: Explicit solution could not be found.
> In solve at 169
In maxmin0 at 138
In maxmin at 15
In beta at 18
In C:\Program Files\MATLAB\R2012a\toolbox\shared\optimlib\finDiffEvalAndChkErr.p>finDiffEvalAndChkErr at 26
In C:\Program Files\MATLAB\R2012a\toolbox\shared\optimlib\finitedifferences.p>finitedifferences at 128
In C:\Program Files\MATLAB\R2012a\toolbox\optim\optim\private\computeFinDiffGradAndJac.p>computeFinDiffGradAndJac at 28
In C:\Program Files\MATLAB\R2012a\toolbox\optim\optim\barrier.p>barrier at 135
In fmincon at 841
In main at 6
Error using mupadmex
Error in MuPAD command: Subscripted assignment dimension mismatch
Error in sym/subsasgn (line 1638)
C = mupadmex('symobj::subsasgn',A.s,B.s,inds{:});
Error in maxmin0 (line 138)
y5(i)=solve(f5,x);
Error in maxmin (line 15)
[PF0,eu0]=maxmin0(sub,DD);
Error in beta (line 18)
mu = maxmin(sub,DD);
Error in C:\Program Files\MATLAB\R2012a\toolbox\shared\optimlib\finDiffEvalAndChkErr.p>finDiffEvalAndChkErr (line 26)
Error in C:\Program Files\MATLAB\R2012a\toolbox\shared\optimlib\finitedifferences.p>finitedifferences (line 128)
Error in C:\Program Files\MATLAB\R2012a\toolbox\optim\optim\private\computeFinDiffGradAndJac.p>computeFinDiffGradAndJac (line 28)
Error in C:\Program Files\MATLAB\R2012a\toolbox\optim\optim\barrier.p>barrier (line 135)
Error in fmincon (line 841)
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] = barrier(funfcn,X,A,B,Aeq,Beq,l,u,confcn,options.HessFcn, ...
Error in main (line 6)
[x,fval,exitflag,output,lambda,grad] = fmincon(@beta,[0.2,0.2,0.2,0.01,20,0.1,20,0.1],A,b,[],[],lb,ub,[],options)
4 comentarios
Walter Roberson
el 15 de Feb. de 2013
At the point of the solve(), could you show us what f5 is? I want to check for solutions myself.
xueqi
el 16 de Feb. de 2013
TUHAME STEVEN
el 28 de Oct. de 2015
it is fine thank you
Respuesta aceptada
Más respuestas (1)
Carlos
el 13 de Feb. de 2013
Editada: Walter Roberson
el 14 de Feb. de 2013
In the warning message displayed by Matlab it says no solution has been found(just as it happens if the function has no roots), and exp(-ax) has no roots, this is what happens when I try the following code in Matlab
>> syms x;
>> f=-10*exp(-x);
>> solve(f,x)
Warning: Explicit solution could not be found.
> In solve at 81
ans =
[ empty sym ]
However if there is no problem with Matlab 2010 this might not be the case, I just wanted you to consider the possibility the function has no roots.
1 comentario
xueqi
el 13 de Feb. de 2013
Categorías
Más información sobre Common Operations en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!