posted by 써니루루 2007. 7. 17. 20:21

제곱근을 구하기 위해서는 다음과 같은 공식을 만족합니다.


x = root(a) 라면

x^2 = a 입니다.

따라서 x = a/x가 됩니다.

이에 의해서

임의의 x에 의해서 a의 제곱근 값은

x < root(a) < a/x 거나
a/x < root(a) <x 의 범위에 있게 됩니다.

따라서 a와 a/x의 평균값을 구하는

(a+b)/2 공식을 이용해 x = (x + a/x)/2 의 식을 이용하면

대부분의 수는 10번을 돌기 이전에 루트 값을 구할 수 있습니다.

간단하게 아래 C#으로 코딩해본 소스입니다.

using System;
using System.Collections.Generic;
using System.Text;

namespace Sqrt
{
    class SqrtMain
    {
        static double Sqrt(double aa, double xx)
        {
            try
            {
                for (int i = 0; i < 10; i++)
                    Console.WriteLine(xx = (xx + aa / xx) / 2);
            }
            catch(Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return xx;
        }

        static void Main(string[] args)
        {
            Console.WriteLine(Sqrt(2341, 3));
        }
    }
}

posted by 써니루루 2007. 7. 16. 23:30
마방진 클래스다이어그램


오늘 1시간 시험으로 봤던 마방진 홀수 / 마방진 4의 배수 알고리즘을 이용한 마방진 소스

조금은 어렵지만 한번 분석해보시길 ^ ^

.NET 2.0 C# Console 응용 프로그램으로 제작했습니다.

사용 IDE는 Visual studio 2007 orcas


posted by 써니루루 2007. 7. 16. 17:35
11을 입력하면 1이 2개
그래서 12가 출력되고 다음은

1이 1개 2가 1개 이므로
1121이 출력되고

1이 2개 2가 1개 1이 1개 이므로
122111 이런식으로 증가되는 숫자 계산이 개미퀴즈이다.

이를 코딩으로 옮기는 작업..;
사용자 삽입 이미지


소스가 어렵지만;;

posted by 써니루루 2007. 7. 16. 16:30
클래스 다이어그램
예전에 짜본 야구게임 다시한번 짜봤다.

소스코드는 넘 쪼개놔서 압축해서 올렸으니 참고하시길..

Visual studio 2007 Orcas로 개발했으면 .NET Framework 2.0을 기준으로 제작했습니다.
posted by 써니루루 2007. 7. 13. 19:03
바이오리듬 -ㅁ- ;

내가 만든 바이오리듬을 쓰고 싶었다;;

posted by 써니루루 2007. 7. 13. 12:19

상당히 많은 시행착오를 거쳐 완성된 소스

꽤 걸렸다 ㅠㅠ

4의 배수 크기의 마방진 알고리즘은 한번 찾아보시길 ~

아무튼 소스는 아래와 같습니다.

            int qSize = Size / 4;

            for (int i = 0; i < Size * Size; i++)
            {
                x = i / Size;
                y = i % Size;

                if ((x / qSize == y / qSize) || (x / qSize + y / qSize + 1 == 4))
                    this.data[x, y] = i + 1;
                else
                    this.data[Size - x - 1, Size - y - 1] = i + 1;
            }

posted by 써니루루 2007. 7. 12. 22:46

Sin 을 처리하는 함수를 유사하게 만들어봅니다.

이상하게 255' 이상은 값이 제대로 나오질 않는군요 ㅎㅎ

문제 해결하시게 되면 트랙백 좀 해주세요 ㅎㅎ

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ruru.Math
{
    public class Sin
    {
        public static double GetSin(double x)
        {
            double sum = 0.0;
            double r = 1.0;

            for (int i = 1; i < 13; i++)
            {
                r *= x / (1.0 * i);

                switch (i % 4)
                {
                    case 1: sum += r; break; // 1
                    case 3: sum += (-1) * r; break; // -1
                    case 2:
                    case 4: break; // 0
                }
            }
            return sum;
        }

        public static void PrintSin()
        {
            for (int i = 0; i < 180; i++)
                Console.WriteLine("Sin({0}) = {1}", i, GetSin(System.Math.PI*i/180.0));
        }
    }
}


 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ruru.Math
{
    class SinMain
    {
        static void Main(string[] args)
        {
            Sin.PrintSin();
        }
    }
}


posted by 써니루루 2007. 7. 12. 16:42
http://mathworld.wolfram.com/TaylorSeries.html


e^x = e^a[1+(x-a)+1/2(x-a)^2+1/6(x-a)^3+...]



Exp(x) 를 C#으로 짜려면 위 식으로 짜야하는데 10번정도까지만 돌려보면 적당히 비슷한 값이 나온다.

빡시다 -_ -;;


소스는 다음과 같다

        /// <summary>
        /// 1+1x/1! + 1x2/2! + 1x3/3!
        /// </summary>
        /// <param name="x"></param>
        /// <returns></returns>
        public static double Expo(double x)
        {
            double sum = 1.0;
            double r = 1.0;

            for (int i = 1; i < 13; i++)
            {
                r *= x / (1.0 * i);
                sum += r;
            }

            return sum;
        }

posted by 써니루루 2007. 7. 11. 10:57
http://www.onlamp.com/pub/a/onlamp/2005/06/09/rails_ajax.html

자주보는 Ajax 관련된 사설입니다.

Ajax on Rails 시간날 때 한번 해석해 보시길..