2013-01-16 3 views
1

일부 x와 배열 변수의 함수가 있다고 가정합니다.Mathematica - 배열 변수에 대해 최적화

A = Array[a, 2]; 
f[x_] := (x-.5)^2 + a[1]^2 + a[2]^2 

이제 두 가지 모두를 최소화하고 싶습니다. 오류가 발생합니다.

FindMinimum[f[x], {x, A}] 

FindMinimum :: nrlnum : 함수 값 {0.707107,1.41421 A [. 1]} {X, A} = {1로 측정 {2}와 실수의리스트 아니다 1.}. >>

어떻게 작성해야합니까?

대조적으로, 배열이 아닌 변수에서 제대로 작동합니다.

f[x_] := (x-.5)^2 + y^2 + z^2; 
FindMinimum[f[x], {x, y, z}] 
{0., {x -> 0.5, y -> 0., z -> 0.}} 

이상하게도 배열 변수 만 있으면 잘 동작합니다.

A = Array[a, 3] 
f := (a[3] - .5)^2 + a[1]^2 + a[2]^2 
FindMinimum[f, A] 
{0., {a[1] -> 0., a[2] -> 0., a[3] -> 0.5}} 

답변

3

내가 할 줄 :

이 그 것이다
bigA = Array[a, 2]; 
f[x_] := (x - .5)^2 + Total[bigA^2] 

FindMinimum[f[x], Flatten[{x, bigA}]] 
(* {0., {x -> 0.5, a[1] -> 0., a[2] -> 0.}} *) 
+0

, 감사합니다. 사실, 마지막 부분은 충분하다고 보입니다. 함수 정의를 다시 작성하지 않아도됩니다 (함수가 다른 곳에서 자동으로 어셈블 될 수 있기 때문에 일반적인 경우에는 비실용적입니다). 대답을 더 간결하게 만들려면이 내용을 편집하는 것이 좋습니다. – blutfink