Octave_Moon_250319
Visualization 중심의 Octave 학습 예제
ex-recv/01/01-MJY-20250319/Octave_Moon_250319.m
전체 코드
전체 코드를 복사해서 Octave에서 바로 실행할 수 있습니다.
clc;clear
% 1. 다항식을 하나 정의하라. (poly)
% f(x) = 3x^3 - 3x^2 + 2x + 2)
p = [3 -3 2 2];
## p_poly = poly([3 -3 2 2]); → 3,-3,2,2의 근을 가지고 있는 다항식
% 2. 정의역과 공역을 정하라. (xlim, ylim)
x = 0:0.5:100;
y = polyval(p, x);
% 3. 다항식의 곡선을 그려라. (polyval)
figure(1)
plot(x, y, '-', 'Color', 'k', 'LineWidth', 2); hold on
legend('기존 다항식');xlabel('x'); ylabel('f(x)');
grid on;
hold off
% 4. 다항식의 미분을 구하고 그 곡선을 그려라. (polyder)
p_polyder = polyder(p); % polyder: 연속적인 미분
y_polyder = polyval(p_polyder, x);
figure(2)
plot(x, y_polyder, '-', 'Color', 'b', 'LineWidth', 2); hold on
legend('미분');xlabel('x'); ylabel('f(x)');
grid on;
hold off
% 5. 차분의 정의에 의해 차분 곡선을 그려라.
dx = x(2) - x(1);
y_diff_definition = diff(y) / dx; % 미분 근사(수치 미분) % diff:비연속성
x_decrease = x(1:length(x)-1); % 차분 시, x의 개수 감소
figure(3)
plot(x_decrease, y_diff_definition, '-', 'Color', 'r', 'LineWidth', 2); hold on
legend('차분 정의');xlabel('x'); ylabel('f(x)');
grid on;
hold off
% 6. 차분을 계산하는 함수를 사용하여 차분 곡선을 그려라. (diff)
y_diff = diff(y); % 단순 차분(단순 변화량)
figure(4)
plot(x_decrease, y_diff, '-', 'Color', 'g', 'LineWidth', 2); hold on
legend('차분');xlabel('x'); ylabel('f(x)');
grid on;
hold off
% 7. 모든 곡선을 하나의 축에 그려라.
figure(5)
plot(x, y, '-', 'Color', 'k', 'LineWidth', 2); hold on
plot(x, y_polyder, '-', 'Color', 'b', 'LineWidth', 2); hold on
plot(x_decrease, y_diff_definition, '-', 'Color', 'r', 'LineWidth', 2); hold on
plot(x_decrease, y_diff, '-', 'Color', 'g', 'LineWidth', 2); hold on
legend('기존 다항식', '미분', '차분 정의', '차분');
xlabel('x'); ylabel('f(x)');
grid on;
hold off; 코드 해설
목적
Visualization 중심의 Octave 학습 예제
입력
- 스크립트 상단에서 정의한 파라미터/입력 데이터를 사용합니다.
출력
- 그래프/figure 출력
실행 흐름
- 핵심 연산
- 시각화
핵심 함수/주제
plotfigurelegendxlabelylabeldiffpolyvallength
실습 과제
- 축 범위와 라벨을 바꿔 그래프 해석성이 어떻게 달라지는지 확인해보세요.
- 핵심 함수 plot의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.
- "핵심 연산 -> 시각화" 흐름을 함수 단위로 분리해 리팩터링해보세요.
학습 팁
- 그래프 비교 시 축 범위(XLim/YLim)와 단위를 먼저 고정하면 해석 오류를 줄일 수 있습니다.
같은 카테고리의 다른 코드
- 수치미분
ex-recv/01/01-CJW-20250321/수치미분.m - main_cjw
ex-recv/01/01-CJW-20250321/main_cjw.m - main-my_diff
ex-recv/01/01-JKH-20250319/main-my_diff.m - hw_1_kim-gpt
ex-recv/01/01-KSG-20250318/hw_1_kim-gpt.m - hw_1_kim
ex-recv/01/01-KSG-20250318/hw_1_kim.m - [Octave] HW#1
ex-recv/01/01-LSH-20250319/[Octave] HW#1.m - Octave01_Park,jm_250319
ex-recv/01/01-PJM-20250319/Octave01_Park,jm_250319.m - [Octave]250318_RYU_poly,dff
ex-recv/01/01-RJW-20250321/[Octave]250318_RYU_poly,dff.m - 과제1_신찬영연구원
ex-recv/01/01-SCY-20250319/과제1_신찬영연구원.m - main_chan_01
ex-recv/01/01-SCY-20250319/main_chan_01.m