이놈의 허수는 컴터로는 만드는것이 느리다
이
이녀석을 만드는 방법이 없음
이게 원 방정식인데
이걸 y = 으로 만들수가 없음
https://youtu.be/C1sNow9MHGo?t=1103
이거 보면 왜인이 암
https://www.desmos.com/calculator/hjexlhyavu
sin cos
www.desmos.com
대충 비슷하게 만들어봣는데 값이 안맞다 그냥 테일러 급수 쓰는게 날듯?
테일러 급수
적당히 길이를 잡아서 소수 구하는 방식
https://www.youtube.com/watch?v=ZWwdAidVsZ8&t=213s
이거보면 됨 ㅇㅇ
https://ko.wikipedia.org/wiki/%EC%98%A4%EC%9D%BC%EB%9F%AC_%EA%B3%B5%EC%8B%9Dck
오일러 공식 - 위키백과, 우리 모두의 백과사전
ko.wikipedia.org
참고자료
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_sin.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: kyoulee <kyoulee@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/28 02:11:57 by kyoulee #+# #+# */
/* Updated: 2022/06/28 02:11:59 by kyoulee ### ########.fr */
/* */
/* ************************************************************************** */
#include <libft.h>
double ft_sin(long double angle)
{
int over = 0;
int i = 1;
long double tmp;
long double result;
while (angle < (-3.141592 * 2))
angle += 3.141592 * 2;
while (angle >= (3.141592 * 2))
angle -= 3.141592 * 2;
angle = (int)(angle * 10000);
angle = 1 + (angle / 10000);
tmp = angle;
result = 1;
while (over++ < ft_abs(angle * 10))
{
if (i % 2)
result += tmp - 1;
else
result -= tmp - 1;
tmp = (tmp - 1) * ((angle - 1) * (angle - 1) / (2 * i) / ((2 * i) + 1)) + 1;
i++;
}
return (result - 1);
}
조금 오차가 있긴함 근데 제일 많이 잡은거임
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_cos.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: kyoulee <kyoulee@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/28 02:27:32 by kyoulee #+# #+# */
/* Updated: 2022/06/28 02:27:35 by kyoulee ### ########.fr */
/* */
/* ************************************************************************** */
#include <libft.h>
double ft_cos(long double angle)
{
int over = 0;
int i = 1;
long double tmp;
long double result;
while (angle < (-3.141592 * 2))
angle += 3.141592 * 2;
while (angle >= (3.141592 * 2))
angle -= 3.141592 * 2;
angle = (int)(angle * 1000);
angle = 1 + (angle / 1000);
tmp = 1 + 1;
result = 1;
while (over++ < ft_abs(angle * 10))
{
if (i % 2)
result -= tmp - 1;
else
result += tmp - 1;
tmp = (tmp - 1) * ((angle - 1) * (angle - 1) / (2 * i) / ((2 * i) - 1)) + 1;
i++;
}
return (-(result - 1));
}
큰수의 오차도 제거하여주었다