課題挑戦記-1
大学の宿題を記録するために自己記入を開始する
第一の課題は2点間の距離を計算する課題である
sqrtを用いることは容易に解決できるが,平方根を直接生成するためにバビロン法を用いて計算を行った.
#include <stdio.h>
#include <math.h>
void print(int *x, int *y){
printf("(x,y)의 좌표를 입력하세요 : ");
scanf("%d %d",x,y);
}
int coordinateCompression(int coordinateOne, int coordinateTwo){
int coordinate=1;
for(int i=0;i<2;i++){
coordinate*=(coordinateOne-coordinateTwo);
}
return coordinate;
}
double calculDistance(int x, int y){
double tmp = (double)(x+y);
double anyNumber = (double)(x+y)/2;
double sqrtNumber = sqrt(x+y);
for(int i=0;i<16;i++){
anyNumber = (anyNumber+(tmp/anyNumber))/2;//바빌로니아 법
printf("%f \n",(anyNumber-sqrtNumber)/sqrtNumber*100);
}
return anyNumber;
}
int main(void){
int x1,y1;
int x2,y2;
print(&x1,&y1);
print(&x2,&y2);
int x = coordinateCompression(x1,x2);
int y = coordinateCompression(y1,y2);
printf("(%d,%d),(%d,%d)의 거리는 %f입니다.",x1,y1,x2,y2,calculDistance(x,y));
}
print関数は2点を入力する関数です
座標圧縮は2点(x 2-x 1)の2乗で座標圧縮を行う関数である
calculDistanceは平方根で距離を計算する関数であり,バビロン法を用いて解き,平方根と非常に類似した結果を得ることができる.
バビロン法とsqrtの誤差率が見られ,forゲートの回転に伴って現れ,ますます差がなくなった.
Reference
この問題について(課題挑戦記-1), 我々は、より多くの情報をここで見つけました https://velog.io/@kimchiwarrior/과제-도전기-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol