函数句柄未转换 - matlab



我收到这些错误:

无法从双精度转换为function_handle。

已经搜索了它并试图更改我的代码但没有成功。你能帮忙吗?谢谢

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

我想要的是找到向量x,因为我已经有一个向量Valorantigo,我将用它来应用求解。

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);

基本上x将是的解决方案

  • 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+x3( + 13085020/(1-0.00261+x3(^2 + 0/(1-0.00208+x3(^3
  • 其他线路也是如此...

只是相关的部分:

Valor(1,1)=symfun(0,x);
for i=1:c3
Valor(i,1)=symfun(0,x);
for j=1:r4
Valor(i,1)=symfun( Valor(i,1)/(1+E(j,1)+x(j,1))^j+(B(i,j)/((1+E(j,1)+x(j,1))^j)),x);
end
end

勇气需要预先确定为象征性,Valor(i,1)=0;你做到了双重。


哦,差点忘了,你的解决方案需要看起来像这样:

[solx1,solx2,solx3,solx4, solx5, param, cond] = solve(eqn, x, 'ReturnConditions', true);

最新更新