为什么即使我不使用 printf,我的循环也会打印每个结果
Why my loop print every results even though im not using printf
即使我没有使用 printf,为什么我的循环会打印每个结果。
这是我的编码。结果被打印为执行的每个循环的矩阵
r1=0.963;
r2=0.764;
r3=0.528;
r4=1.815;
r5=0.778;
phi1=0*(pi/180);
phi2l=0*(pi/180);
phi2u=90*(pi/180);
phi2ro=90*(pi/180);
printf(" phi-1 phi-2 phi-3 x-p y-p\n");
printf("--------------------------------------------------\n");
do
phi2r=((phi2l+phi2u)/2); #CALCULATE PHI2R
fphi2l=((r1*cos(phi1)+r2*cos(phi2l)-r4)^2+(r1*sin(phi1)+r2*sin(phi2l))^2-(r3^2)); #EXECUTE FUNCTION USING PHI2L
fphi2r=((r1*cos(phi1)+r2*cos(phi2r)-r4)^2+(r1*sin(phi1)+r2*sin(phi2r))^2-(r3^2)); #EXECUTE FUNCTION USING PHI2R
check=fphi2l*fphi2r; #CALCULATE VALUE FOR CONDITION
if(check<0)
{
phi2u=phi2r;
}
endif
if(check>0)
{
phi2l=phi2r;
}
endif
error=abs(phi2r-phi2ro)/phi2r; #CALCULATE ERROR
phi2ro=phi2r;
until(error<10^-8)
phi2=phi2r;
phi3=asin((r1*sin(phi1)+r2*sin(phi2))/r3);
phi3c=acos((r1*cos(phi1)+r2*cos(phi2)-r4)/r3);
您的 if 块中存在语法“错误”。在八度音程中,您不需要将 if “块”括在大括号中。您所写的内容有效地将该作业包装在 'cell' 中。因为 'cell' 语句没有以分号结尾(请注意分号在单元格内!),结果单元格会打印在终端上。
您可以改为这样做:
if check > 0
phi2l = phi2r;
endif
即使我没有使用 printf,为什么我的循环会打印每个结果。 这是我的编码。结果被打印为执行的每个循环的矩阵
r1=0.963;
r2=0.764;
r3=0.528;
r4=1.815;
r5=0.778;
phi1=0*(pi/180);
phi2l=0*(pi/180);
phi2u=90*(pi/180);
phi2ro=90*(pi/180);
printf(" phi-1 phi-2 phi-3 x-p y-p\n");
printf("--------------------------------------------------\n");
do
phi2r=((phi2l+phi2u)/2); #CALCULATE PHI2R
fphi2l=((r1*cos(phi1)+r2*cos(phi2l)-r4)^2+(r1*sin(phi1)+r2*sin(phi2l))^2-(r3^2)); #EXECUTE FUNCTION USING PHI2L
fphi2r=((r1*cos(phi1)+r2*cos(phi2r)-r4)^2+(r1*sin(phi1)+r2*sin(phi2r))^2-(r3^2)); #EXECUTE FUNCTION USING PHI2R
check=fphi2l*fphi2r; #CALCULATE VALUE FOR CONDITION
if(check<0)
{
phi2u=phi2r;
}
endif
if(check>0)
{
phi2l=phi2r;
}
endif
error=abs(phi2r-phi2ro)/phi2r; #CALCULATE ERROR
phi2ro=phi2r;
until(error<10^-8)
phi2=phi2r;
phi3=asin((r1*sin(phi1)+r2*sin(phi2))/r3);
phi3c=acos((r1*cos(phi1)+r2*cos(phi2)-r4)/r3);
您的 if 块中存在语法“错误”。在八度音程中,您不需要将 if “块”括在大括号中。您所写的内容有效地将该作业包装在 'cell' 中。因为 'cell' 语句没有以分号结尾(请注意分号在单元格内!),结果单元格会打印在终端上。
您可以改为这样做:
if check > 0
phi2l = phi2r;
endif