function handle is not converting
Ältere Kommentare anzeigen
I'm getting these error:
Conversion to function_handle from double is not possible.
Already searched about it and tried to change my code but without sucess. Could u help? Thanks
A=[99.23;100.05;91;107.71;104.1];
B=[3441 3441 301720.5;68750 1068750 0;170040 13085020 0;229350 229350 5729350;34194000 0 0];
N=[300000;1000000;13000000;5500000;32800000];
E=[-0.00302;-0.00261;-0.00208];
[c3,r3]=size(A);
[c4,r4]=size(B);
x=sym ('x',[1 c3]);
x=transpose(x);
for i=1:c3
Valor(i,1)=0;
for j=1:r4
Valor(i,1)=@(x)((Valor(i,1)/((1+E(j,1)+x(j,1))^j))+(B(i,j)/((1+E(j,1)+x(j,1))^j)));
end
end
What I want is to find the vector x given that I already have a vector Valorantigo that I will use to apply solve.
Valorantigo(1:c3,1)=A(1:c3,1).* N(1:c3,1) ./100;
eqn=Valor(1:c3,1)==Valorantigo(1:c3,1);
[solx, param, cond] = solve(eqn, x, 'ReturnConditions', true);
Basically x would be the solution of
- Valorantigo(1,1)=3441/(1-0.00302+x1) + 3441/(1-0.00261+x1)^2 + 301720.5/(1-0.00208+x1)^3
- Valorantigo(2,1)=68750/(1-0.00302+x2) + 1068750/(1-0.00261+x2)^2 + 0/(1-0.00208+x2)^3
- Valorantigo(3,1)=170040/(1-0.00302+x1) + 13085020/(1-0.00261+x1)^2 + 0/(1-0.00208+x1)^3
- the same fot the other lines...
2 Kommentare
Guillaume
am 17 Jul. 2017
What are you trying to do? At the moment you're trying to put a function into a matrix, which is not allowed.
Furthermore even if it was possible, you're creating a different function for each j yet try to put them all in the same matrix element, overwriting the previous function. I assume it's not your intent.
Mariana Ferreira
am 17 Jul. 2017
Antworten (1)
Jan
am 17 Jul. 2017
Valor(i,1) is a double, while
@(x){(Valor(i,1)/((1+E(j,1)+x(j,1))^j))+(B(i,j)/((1+E(j,1)+x(j,1))^j))}
is a function handle. (By the way: are you sure you want curly braces here?) You cannot assign a function handle to an element of a double vector.
I'm not sure if it is intented to define "x" as symbolic variable at first, but then to redefine it as input of the anonymous function. It is also very strange, that "Valor(i,1)" appears on the left and right hand side of the assignment.
Because you did not explain, what you want to achieve (comments are useful!), I cannot guess, how the code should be changed.
5 Kommentare
Mariana Ferreira
am 17 Jul. 2017
Bearbeitet: Mariana Ferreira
am 17 Jul. 2017
Mariana Ferreira
am 17 Jul. 2017
Jan
am 17 Jul. 2017
I do not have the symbolic toolbox and unfortunately I still do not understand, what you want to achieve. I do not see the meaning of:
create a vector Valor , then I have an already build vector
Valorantigo that I will use to equal Valor to find the x vector
Mariana Ferreira
am 17 Jul. 2017
Kategorien
Mehr zu Matrix Indexing finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!