2017-09-29 15 views
2

의 상징적 인 수에 상징적 합 가장 적절한 방법을 무엇은 'sympy'에 다음과 같이 표현 :sympy 요소

'나'콘크리트 0에서가는 샘플 'X [i]를'을 통해 합 상징적 인 'N'. 'x [i]'자체는 상징적이어야합니다. 즉, 은 항상 변수로 표시됩니다.

목표는 선형 방정식 시스템에서 이러한 표현식을 사용하는 것입니다.

예 (간이 최소 제곱 정도.)

주어 샘플의 세트 (X가 [I], Y가 [I]) 'Y 의해 주어진 라인에 놓여 가정되는 m의 *의 X를 = + a '. 즉, 추정 된 라인은 'm'과 'a'에 의해 으로 결정됩니다. 샘플 및 유도체 'D/DM 오류 (m, A)' 및 'D/DA 오류 제로 천이를 검색하기

error(m, a) = sum((m * x[i] + a - y[i])**2, start_i=0, end_i=N) 

의해 주어질 수있다 추정 라인과의 오차 (m, a) '는 최소 거리를 전달합니다. sym35로 솔루션을 어떻게 찾을 수 있습니까?

+0

당신이 [편집]을 기쁘게 할 수 명확히하기 질문 : 1) 나는 당신이 sum 함수에게 가수의 발현과 (index, lower bound, upper bound)를 제공하면

>>> from sympy import * >>> m, a, x, y, i, n = symbols('m a x y i n') >>> err = summation((m * x(i) + a - y(i)) ** 2, (i, 0, n)) >>> pprint(err) n ___ ╲ ╲ 2 ╱ (a + m⋅x(i) - y(i)) ╱ ‾‾‾ i = 0 

, 당신은 합 놀 이동할 수 있습니다 'x [i]'와 'N'이 추상이되도록 상황을 이해하십시오. 완전히 추상적 인 선형 방정식 시스템을 풀 때와 상황은 어떻게 다른가요? SymPy가 필요한 이유는 무엇이며, SymPy가 무엇을 기대합니까? 2) 만약 내가 이것을 어떻게 든 오해한다면, 표준 파이썬'sum' 또는'sympy.Sum'이 작동하지 않는 이유는 무엇입니까? - 이상적으로 입력에 대한 예와 그로 인해서 무엇을하고 싶은지, 그리고 어떤 종류의 결과를 갖고 싶으십니까? – Wrzlprmft

답변

2

추후 질문을 드리 자면, 대부분의 경우 이미 생각한 것처럼 보이지만 명확하게하기 위해 샘플은 함수로 간주됩니다 (주어진 세트는 실제로 세트의 도메인을 포함하는 함수입니다). 정수])이므로 표기법은 x(i)과 같으며 합계는 summation 함수 또는 Sum 생성자를 사용하여 얻을 수 있습니다 (summation(x, (i, 0, n))과 같이 자동으로 상수 가중치가 확장되므로 첫 번째 값이 더 낫습니다).

>>> diff(err, m) 
Sum(2*(a + m*x(i) - y(i))*x(i), (i, 0, n)) 
>>> diff(err, a) 
Sum(2*a + 2*m*x(i) - 2*y(i), (i, 0, n))