主要内容

수치계산의정밀도향상시키기

기본적으로matlab®은16자리의정밀도를사용합니다。정확도를높이려면符号数学工具箱™의vpa함수를사용하십시오。vpa는제한없이가시킬수있는가변정밀도를제공합니다。

가변정밀도연산방식을선택한경우기본적으로vpa는32자리의유효소수점자릿수정밀도를사용합니다。자세한내용은수치연산방식또는기호연산방식선택하기항목을참조하십시오。数字함수를사용하여더높은정밀도를설정할수있습니다。

디폴트정밀도路人32자리를사용하여합을근사화해보겠습니다。하나이상의입력값을vpa이감싸고있는경우다른모든입력값이자동으로가변정밀도로변환됩니다。

Vpa (1/3) + 1/2
Ans = 0.8333333333333333333333333333333333333333

exp (vpa (200))과같이모든내부입력값은vpa로감싸야합니다。그러지않으면입력값이matlab에의해자동으로배정밀도로변환됩니다。

数字를사용하여정밀도를50자리로늘리고数字의이전값을digitsOld에저장합니다。합산을반복합니다。

digitsOld = digits(50);Sum50 = vpa(1/3) + 1/2
Sum50 = 0.833333333333333333333333333333333333333333333

추후계산을위해자릿수를이전값으로복원합니다。

数字(digitsOld)

참고

vpa출력값은기호값입니다。기호값을받지않는matlab함수에기호출력값을사용하려면을사용하여기호값을배정밀도로변환하십시오。

数字를호출하여현재数字설정을확,합니다。

数字
数字= 32

정밀도를vpa의두번째입력값으로지정하여단일vpa호출의정밀도를변경합니다。이 호출은数字에향을주지않습니다。예를들어,πOne hundred.자리로근사화해보십시오。

vpa(π,100)
Ans = 3.14159265358979323846264338327950288419716939937510582097494 4592307816406286208998628034825342117068
数字%数字保持32
数字= 32

가변정밀도는임의로가될수있습니다。π500자리까지구합니다。

digitsOld =数字(500);vpa (pi)数字(digitsOld)
ans = 3.1415926535897932384626433832795028841971693993751058209749 445923078164062862089986280348253421170679821480865132823066 470938446095505822317253594081284811174502841027019385211055 596446229489549303819644288109756659334461284756482337867831 652712019091456485669234603486104543266482133936072602491412 596446229489549303819644288109756659334461284756482337867831 470938446095505822317253594081284811174502841027019385211055 445923078164062862089986280348253421170679821480865132823066248912279381830119491

数字vpa유효소수점자릿수를제어합니다。예를들어,4자리정확도로1/111을근사하면처음두자리숫자가0이기때문에소수점이하여섯자리를반환합니다。

vpa (1/111, 4)
Ans = 0.009009

참고

정밀도를낮춰서성능을향상시키는방법은정밀도를낮춰속도향상시키기항목을참조하십시오。