2017-07-17 95 views
1

我得到這些錯誤:功能手柄未進行轉換 - MATLAB

Conversion to function_handle from double is not possible.

已經搜索一下,並試圖改變我的代碼,但沒有sucess。你能幫忙嗎?由於

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)[email protected](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
  • 的其他線路相同...
+0

你有什麼triying一起acomplish'= @(X){....}'?只是填滿陣列'Valor'?然後就刪除,並留下內側 –

+0

@AnderBiguri是的,我想填滿基勇氣。我把「{...}」放在了一邊,因爲我認爲這是解決我的錯誤的方法之一。即使我抹去我有一些錯誤。 –

+0

@AnderBiguri已經詳細說明了。你能幫忙嗎?我這個工作,因爲週五和無法找到一個辦法來解決我的代碼 –

回答

0

就相關部分:

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 

勇氣有待predefinded爲象徵性的,與Valor(i,1)=0;你去到一個雙。


哦差點忘了,你的解決需要看起來像這樣:

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

但方式MATLAB未計算矢量_Valor_。心不是那可能有這樣的結果:'勇猛= 3441 /(1-0.00302 + X1)+ 3441 /(1-0.00261 + X2)^ 2 + 301720.5 /(1-0.00208 + X3)^ 3'?謝謝 –

+0

已經deitaled我想要的。你能幫忙嗎? –

+0

@ArleteFerreira做SOE的變化,現在對我的作品,你額外的代碼。唉,我不知道解決COMAND應該如何在這裏工作...... –