函数句柄未转换 - matlab

function handle is not converting - matlab

我收到这些错误:

Conversion to function_handle from double is not possible.

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

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 是

的解

仅相关部分:

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