2017-10-29 15 views
0

NMinimize関数を使用しようとすると、次のエラーが発生します。完全なコードについては、画像を参照してください。NMinimize-目的関数はスカラー値である必要があります

NMinimize::objfs: The objective function {{a (0.000081 a-0.0000169425 b-2.78856*10^-6 c)+b (-0.00001692 a+0.000025 b+0.0000113 c)+(-2.78856*10^-6 a+0.0000113 b+0.000064 c) c}} should be scalar-valued. 

enter image description here わかりましたので、私はこの問題は、それを修正する方法ですが、ないものを考え出しました。行列の乗算は正しく行われますが、スカラーを返す代わりに、MathematicaはArgMinでエラーを引き起こす1つの項目を含むリストを返します。リストの最初の(唯一の)項目を返す別の関数を追加しなければ、これを回避する方法はありますか?私はむしろ、行列 - ベクトル演算がスカラー値を返すようにするでしょう。

enter image description here

+0

'トランスポーズ[{A、B、C} ] 'はエラーメッセージを表示するはずです。 'Y = {a、b、c}; r = {{1。* .009 * .009、-0.376 * .009 * .005、-0.03873 * .009 * .008}、 {-0.3765 * .009 * .005,1 * .005 *。 005,0.2825 * .005 * .008}、 {-0.3873 * .009 * .008,0.2825 * .005 * .008,1 * .008 * .008}};NMinimize [{Y.r.、a + b + c == 1 && 0 Bill

答えて

0

単一の行の2DマトリックスとしてYを定義し、あなたの線形代数式を使用するには:あなたがY.r.Transpose[Y]を行うことができます

Y={{a,b,c}} 

。 ( - 0.0000169425 B - 0.0000278856 C 0.000081)+ B(-0.00001692 A + 0.000025 B + 0.0000113 C

(Y.r.Transpose[Y])[[1,1]] 

:結果は、そうあなたのスカラー結果を得るために、単一要素の深2アレイであります)+(-2.78856×10^-6 A + 0.0000113 B + 0.000064 C)

C(これは、コメントにアプローチと同じ結果である。)

関連する問題