2014-02-10 1 views
1

I가 다음 함수Func을의 부정을 가지고 <이중 [] 더블 []>

public Func<double[], double> Function { get; set; } 
this.Function = (x) => 
    Math.Exp(-Math.Pow(x[0] - 1, 2)) + Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)); 

public Func<double[], double[]> Gradient { get; set; } 
this.Gradient = (x) => new double[] 
{ 
    // df/dx = -2 * e^(-(x - 1)²)(x - 1). 
    -2 * Math.Exp(-Math.Pow(x[0] - 1, 2)) * (x[0] - 1), 

    // df/dy = -e^(-1/2(y - 2)²) * (y - 2). 
    -Math.Exp(-0.5 * Math.Pow(x[1] - 2, 2)) * (x[1] - 2) 
}; 

상기 함수의 편미분이 이행되는 그래디언트 내가

Func<double[], double> oldFunc = this.Function; 
this.Function = (x) => -oldFunc(x); 

내 질문 할 수있는 function의 부정은 각각의 부정을 취할 수있는 방법이다 같은 방법으로 gradient의 부분 파생 상품?

+0

왜 투표가 실패합니까? 나는이 사이트의 모든 것이 좋은 질문이라고 생각했다. – MoonKnight

답변

2
using System.Linq;  

Func<double[], double[]> oldFunc = this.Gradient; 
this.Gradient = (x) => oldFunc(x).Select(y => -y).ToArray(); 
+0

정말 고마워, 네 시간을 주셔서 감사합니다 ... – MoonKnight

+0

이것은 작동하지 않습니다. '암시 적으로 형식'double [] '을'System.Func ''...로 변환 할 수 없습니다. – MoonKnight

+1

이 파일은 문제없이 LINQPad에서 컴파일되고 실행되므로 복사하여 붙여 넣을 때 어딘가에 엉망이되었습니다 그것 ... – Nuffin

관련 문제