[matlab] 4.matlab으로 그래프 그리기(2)


원 색칠하기



이번 시간에는 저번 시간에 이어서 matlab을 이용해서 그래프를 그려보겠습니다.

반지름이 3인 원을 색칠하는 코드를 작성해보겠습니다.

t=linspace(0,2*pi,50);
figure(1)
for n=0;0.001;3
	hold on
	plot(n*cos(t),n*sin(t),'r-')
	hold off
end
xlim([-3,3])
ylim([-3,3])
axis equal



실행 결과입니다.


image



원리는 간단합니다 반지름을 계속 줄여가면서 그리는 것이죠!!

그래프 그리는 것에 대한 내용은 더 배우면 추가하도록 하겠습니다.

뜬금없지만 수업 중에 퀴즈로 소인수 분해하는 문제가 나왔습니다.

상당히 어려웠는데요…

저번 퀴즈 시간에 나온 소인수 분해하는 코드를 여기다가 써놓겠습니다!


function A=int_factor(n)
    A=[]; %답변 배열
    prime=[]; %n보다 작은 prime을 저장
    t=[]; %n의 소인수를 저장
    pow=[]; %소인수의 차수를 저장
    num=n;
    %먼저 n보다 작은 prime을 구한다.
    for i=1:n
        if isprime(i)
            prime=[prime i];
        end
    end
    s=size(prime);
    %각각의 prime으로 나누어 보면서 소인수와 차수를 구한다.
    for i=1:s(2)
        j=1;
        k=1;
        while k
            if mod(num,prime(i)^j)~=0 %소수로 안 나누어지면 반복문 빠져나옴
                k=0;
            else
                j=j+1;
            end
        end
        if j>=2 %num는 prime(i)^(j-1)로 나누어 떨어진다
            num=num/(prime(i)^(j-1));
            t=[t prime(i)];
            pow=[pow j-1];
        end
        if num<=1
            break
        end
    end
    %t와  pow 구하기 완료
    A=[num2str(t(1)) '^' num2str(pow(1))];
    s1=size(t);
    if s1==1
        return
    end
    for i=2:s1(2)
        A=[A 'x' num2str(t(i)) '^' num2str(pow(i))];    
    end



그리고 코드의 실행시간을 알고 싶으면 tic,tok을 쓰면 됩니다.


 >>tic(), int_factor(12), tok()



다음 시간에는 수치해석학에 필요한 개념인 테일러 정리와 보간법에 대해 알아보겠습니다