Main Content

double

기호 값을 MATLAB 배정밀도 값으로 변환

설명

예제

d = double(s)는 기호 값 s를 배정밀도 값으로 변환합니다. MATLAB® 함수가 기호 값을 허용하지 않는 경우, 기호 값을 배정밀도 값으로 변환하는 것이 유용합니다. 기호 숫자와 배정밀도 숫자와의 차이점에 대해서는 수치 연산방식 또는 기호 연산방식 선택하기 항목을 참조하십시오.

예제

모두 축소

double을 사용하여 기호 숫자를 배정밀도 값으로 변환합니다. 배정밀도 숫자는 반올림 오차가 있는 반면 기호 숫자는 정확합니다.

π13을 기호 형식에서 배정밀도로 변환합니다.

symN = sym([pi 1/3])
symN = 

(π13)

doubleN = double(symN)
doubleN = 1×2

    3.1416    0.3333

반올림 오차에 대한 자세한 내용은 반올림 오차를 인식하고 방지하기 항목을 참조하십시오.

vpa에 의해 생성된 가변 정밀도 수치는 기호 값입니다. MATLAB 함수에서 기호 값을 허용하지 않는 경우 double을 사용하여 가변 정밀도를 배정밀도로 변환하십시오.

π13을 가변 정밀도 형식에서 배정밀도로 변환합니다.

vpaN = vpa([pi 1/3])
vpaN = (3.14159265358979323846264338327950.33333333333333333333333333333333)
doubleN = double(vpaN)
doubleN = 1×2

    3.1416    0.3333

double을 사용하여 행렬 symM의 기호 숫자를 배정밀도 숫자로 변환합니다.

a = sym(sqrt(2));
b = sym(2/3);
symM = [a b; a*b b/a]
symM = 

(22322323)

doubleM = double(symM)
doubleM = 2×2

    1.4142    0.6667
    0.9428    0.4714

내부 소거 또는 반올림 오차가 있는 기호 표현식을 변환할 때는 숫자를 변환하기 전에 digits를 사용하여 계산 정밀도를 높이십시오.

수치적으로 불안정한 표현식인 Ydouble을 사용하여 변환합니다. 그런 다음 digits를 사용하여 정밀도를 100자리로 늘리고 Y를 다시 변환합니다. 이 고정밀도 변환은 정확하지만 저정밀도 변환은 정확하지 않습니다.

Y = ((exp(sym(200)) + 1)/(exp(sym(200)) - 1)) - 1;
lowPrecisionY = double(Y)
lowPrecisionY = 0
digitsOld = digits(100);
highPrecisionY = double(Y) 
highPrecisionY = 2.7678e-87

추후 계산을 위해 digits에서 사용한 이전 정밀도를 복원합니다.

digits(digitsOld)

solve를 사용하여 삼각 함수 방정식 sin(2x)+cos(x)=0을 풉니다. ReturnConditions 옵션을 true로 설정하여 완전해, 해에 사용된 파라미터, 그러한 파라미터에 적용된 조건을 반환합니다.

syms x
eqn = sin(2*x) + cos(x) == 0;
[solx,params,conds] = solve(eqn,x,ReturnConditions=true)
solx = 

(π2+πk2πk-π67π6+2πk)

params = k
conds = 

(kZkZkZ)

솔버는 MATLAB® 작업 공간에 파라미터에 대한 변수 k를 만들지 않습니다. 이 변수를 만듭니다. 그리고 subs를 사용하여 k=2의 해를 구합니다.

syms k
sols_k2 = subs(solx,k,2)
sols_k2 = 

(5π223π631π6)

이 해는 정확한 기호 숫자입니다. 이러한 숫자를 배정밀도 숫자로 변환합니다.

doublesols_k2 = double(sols_k2)
doublesols_k2 = 3×1

    7.8540
   12.0428
   16.2316

A2-2A+I2를 나타내는 기호 표현식 S를 만듭니다. 여기서 A는 2×2 기호 행렬 변수입니다.

syms A 2 matrix
S = A*A - 2*A + eye(2)
S = I2-2A+A2

A에 기호 숫자 [cos( π5)sin(π4)-10]을 대입합니다.

Aval = [cos(sym(pi)/5) sin(pi/4); -1 0];
symS = subs(S,A,Aval)
symS = 

-2Σ1+Σ12+I2where  Σ1=(54+1422-10)

결과를 배정밀도 행렬로 변환합니다.

doubleS = double(symS)
doubleS = 2×2

   -0.6706   -0.8422
    1.1910    0.2929

입력 인수

모두 축소

기호 입력값으로, 기호 숫자, 기호 숫자로 구성된 배열 또는 숫자로 구성된 기호 행렬 변수로 지정됩니다. 입력값에 숫자형 값만 포함되어 있는 경우(기호 숫자가 포함되어 있지 않음) MATLAB double 함수가 호출됩니다.

데이터형: sym | symmatrix

버전 내역

R2006a 이전에 개발됨

모두 확장