특정 함수의 수치 적 차를 계산하려고합니다. 이 함수는 다를 수 있습니다 (예 : 선 또는 원이 될 수 있음). 나는이 메소드에서,분화를 계산하는 함수를 설계하는 방법
Function myFunc = new Function(LinearLine);
Derivative(myFunc, 3); //Derivative at x=3
그러나 : 내가 전화
double LinearLine(double arg)
{
double m = 2.0; double c = 1.0;
return m*arg + c;
}
: 선형 라인
delegate double Function(double arg);
static double Derivative(Function f, double arg)
{
double h = 10e-6;
double h2 = h*2;
return (f(arg-h2) - 8*f(arg-h) + 8*f(arg+h) - f(arg+h2))/(h2*6);
}
:
내 첫번째 생각은 일반적인 함수를 정의하는 것입니다 m
및 c
을 LinearLine()
기능에 하드 코딩해야합니다. 나는 LinearLine
인수 목록에 m
및 c
를 전달하면
대안 : LinearLine(double m, double c)
, 나는 다른 기능을 호출 Derivative()
기능 반환 값을 매번 다시 작성해야합니다. (예 : Circle(double radius, double x, double y)
).
내 질문에 그런 경우, 그런 클래스/기능을 디자인하는 좋은 방법은 무엇입니까?
참고 : 원은 함수가 아닙니다 ... 엄격하게 말하기 ... –
이것은 1 차 미분의 정확한 미분은'(f (x + h) -f (x-h))/(2 * h)'입니다. – ja72
원이있는'g (x, y) = 0'와 같은 암시 적 함수의 구별에 대해 읽어보십시오. https://www.math.ucdavis.edu/~kouba/CalcOneDIRECTORY/implicitdiffdirectory/ImplicitDiff.html – ja72