【发布时间】:2017-07-17 09:19:02
【问题描述】:
我收到以下错误:
无法从 double 转换为 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
- 其他行也一样...
【问题讨论】:
-
你想用
=@(x){ .... }完成什么?只是填充数组Valor?然后将其移除并留下内部 -
@AnderBiguri 是的,我想填充矩阵 Valor。我放了
{...},因为我认为这是解决我的错误的一种方法。即使我删除了我有一些错误。 -
@AnderBiguri 已经详细说明了。你能帮忙吗?我从星期五开始就在处理这个问题,但找不到修复我的代码的方法
标签: matlab for-loop vector symbolic-math function-handle