function handle is not converting
显示 更早的评论
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 个评论
Guillaume
2017-7-17
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
2017-7-17
回答(1 个)
Jan
2017-7-17
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 个评论
Mariana Ferreira
2017-7-17
编辑:Mariana Ferreira
2017-7-17
Mariana Ferreira
2017-7-17
Jan
2017-7-17
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
2017-7-17
类别
在 帮助中心 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!