소수와 분수의 출력 형식이 달라지는 경우
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
왜 un_A가 출력에서는 소수가 아닌 분수로 나타나는 것인가요?
clear
mL=[200 202 201 199 198];
avg_mL=mean(mL);
std_mL=std(mL);
un_A=round(std_mL/sqrt(length(mL)),3);
un_A % un_A=0.707
syms Li Lr;
LL=Li+Lr;
Ldiff=diff(LL,Li);
c_mL=vpa(subs(Ldiff,Lr,1));
un_mag=un_A*c_mL;
v_mL=length(mL)-1;
syms A1 A2 A3 A4 A5 A6
mA=[A1 avg_mL; A2 un_A; A3 A3; A4 c_mL; A5 un_mag; A6 v_mL] % un_A=707/1000
<출력>
mA =
[A1, 200]
[A2, 707/1000] % un_A=707/1000
[A3, A3]
[A4, 1.0]
[A5, 0.707]
[A6, 4]
0 comentarios
Respuesta aceptada
Angelo Yeo
el 14 de Feb. de 2024
올려주신 스크립트에서 un_A와 un_mag가 각각 707/1000, 0.707로 다르게 보이는 이유는 vpa 함수의 사용 유무에 의한 것입니다. vpa 함수를 이용하면 소수를 이용해 숫자를 표현해주며 특정 유효 자릿수에 맞게 정밀도 연산 방식을 사용합니다. c_mL을 계산하는 코드에서 vpa 함수를 떼주면 un_A와 마찬가지로 분수로 표현됩니다.
clear
mL=[200 202 201 199 198];
avg_mL=mean(mL);
std_mL=std(mL);
un_A=round(std_mL/sqrt(length(mL)),3);
%%
syms Li Lr;
LL=Li+Lr;
Ldiff=diff(LL,Li);
c_mL=subs(Ldiff,Lr,1);
un_mag=un_A*c_mL;
v_mL=length(mL)-1;
syms A1 A2 A3 A4 A5 A6
mA=[A1 avg_mL; A2 un_A; A3 A3; A4 c_mL; A5 un_mag; A6 v_mL] % un_A=707/1000
컴퓨터에서 숫자를 계산할 때에는 2진수를 이용합니다. 10진수로 간결하게 표현되는 숫자더라도 2진수로는 간결하게 표현되지 않을 수 있습니다. 예를 들어, 십진수 0.1을 이진수로 표현하면 0.000110011001100… 과 같이 반복되는 숫자입니다. Symbolic Math Toolbox에서는 유효 자릿수를 포함하여 이진수 연산으로 근사적으로 계산하기 보다는 정확한 숫자 계산을 수행하기 위해 분수를 그대로 표현해주고자 합니다. 그런데, vpa 함수를 이용하면 비로소 유효 자릿수에 맞는 소수로 변환시켜 줍니다.
Más respuestas (0)
Ver también
Categorías
Más información sobre 기호와 수치 간 변환 en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
