2014-04-30 2 views

답변

1

그 함수 내에하고자 구분이되지 않으며, 이는 소프트웨어에 의해 나타내 어질 수 없다. 이론적으로 불가능합니다. 당신이 할 수있는 최선은 이성을 표현하기 위해 (0,1)에서 (1,1)까지의 선분을 그리는 것입니다.

0

이것은 이전 질문이지만 "합리적인"및 "비합리적인"컴퓨터 프로그램이 의미하는 바를 명확히하기에 좋은 곳입니다.

f1 := x -> `if`(x::rational, 1, 0): 

는 몇 가지 테스트 사례가 우리에게주는 것 같다 우리가 원하는 것을 :

> f1(3), f1(3/2), f1(Pi), f1(sqrt(2)); 
       1, 1, 0, 0 

것은 그러나 우리는 다음을 실행하여 원하는 기능이 방법을 정의하는 당신이 시도 할 수있는 첫 번째 시도로

에 입력 :

> f1(1.5); 
        0 

무엇을 제공합니까? f (3/2) = 1이므로, f (1.5)가 동일 할 것으로 예상 할 수 있습니다. 설명은 x :: rational 체크가 입력 x가 정수 또는 분수 인 합리적인 Maple 유형인지 확인하는 것입니다. Maple 분수는 부동 소수점 숫자와 구조적으로 다른 정수 (분자 및 분모)의 정렬 된 쌍입니다.

'합리적인'수학적 의미의 더 넓은 해석에는 부동 소수점 숫자가 포함됩니다. 따라서 우리는 그 정의를 넓히고 다음과 같이 쓸 수 있습니다. 그러면 원하는 f2 (1.5) = 1이됩니다.

그러나이 두 가지 모두 플로팅에 쓸모가 없습니다. Maple이 무언가를 그릴 때, 지정된 간격에서 샘플 포인트 세트를 생성합니다.이 샘플 포인트는 모두 부동 소수점 숫자입니다. 이전에 정의한 함수 중 f1은 모든 점에 대해 0을 반환하고 f2는 1을 반환합니다.

다른 소프트웨어에서는 더 이상 도움이되지 않습니다. 실제 간격으로 n 포인트의 진정으로 균일 한 샘플을 얻으려면 결과 포인트가 비합리적인 것입니다 (사실, 초월적인). 거의 모든 이러한 숫자는 컴팩트 한 형식으로 표현할 수 없으므로 컴퓨터에서 표현할 수 없으므로 그러한 샘플링을 시도하는 소프트웨어는 십진수를 끝내는 결과로 n의 결과를 단순히 반환합니다. 칼은

> plot([0,1]); 
으로 원하는 플롯을 닮은 무언가를 생성 할 수 있습니다

제안으로

관련 문제