이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

라이브 편집기로 대화형 방식 이야기 만들기

다음은 라이브 편집기를 사용하여 대화형 저작물을 만드는 방법에 대한 예제입니다. 대화형 저작물을 만들어 문제를 푸는 데 사용한 계산에 대한 이야기를 들려줄 수 있습니다. 이 예제에서는 다음을 어떻게 수행하는지 보여줍니다.

  • 서식 지정된 텍스트를 사용하여 접근 방식 설명

  • MATLAB 코드와 함께 출력값 표시

  • 수식을 사용하여 기본적인 수학 원리 설명

  • 이미지를 포함시켜 중요한 사항 설명

  • 배경 자료에 대한 하이퍼링크 제공

  • 독자가 파라미터를 수정하고 분석을 다시 실행할 수 있도록 함

  • 시각화를 위한 플롯 포함

  • 동료를 초대하여 분석 확장

전반적인 접근 방식

라이브 편집기에서 서식 지정된 텍스트를 대화형 저작물의 일부로 포함시킬 수 있습니다. 굵은 텍스트, 기울임꼴 텍스트, 밑줄이 표시된 텍스트를 사용하여 중요한 단어 또는 아이디어를 강조 표시하고, 글머리 기호나 번호를 사용하여 목록의 형식을 지정할 수 있습니다.

이 예제에서는 태양 전지판 설치 후의 전력 출력을 추정해 보겠습니다. 보스턴의 6월 1일 정오를 기준으로 다음 값을 계산하는 방법을 보여주겠습니다.

  • 태양시

  • 태양 적위와 태양 고도

  • 대기 질량과 지표면에 도달하는 태양 복사열

  • 위치, 기울기, 효율성을 고려한 태양 전지판의 복사열

  • 1일 및 1년 동안 생산된 전력

다음 공식들을 사용하여 특정 날짜의 태양 복사열과 태양 전지판 복사열을 플로팅한 다음, 태양 전지판의 1년간 예상 전력 생산량을 플로팅해 보겠습니다. 분석을 간소화하기 위해, 이 분석을 위해 생성한 두 개의 MATLAB 함수 solarCorrectionpanelRadiation을 사용하겠습니다.

태양시

출력값을 생성한 코드와 출력값을 함께 표시하십시오. 코드의 섹션을 실행하려면 라이브 편집기 탭으로 이동하여 섹션 실행 버튼을 클릭하십시오.

태양 전지판의 전력 생산은 태양 전지판에 도달하는 태양 복사열의 양에 따라 결정되며, 결과적으로 태양 복사열의 양은 태양 전지판을 기준으로 한 태양의 위치에 따라 달라집니다.

lambda = -71.06;                              % longitude
phi = 42.36;                                 % latitude
UTCoff = '-5';                              % UTC offset 
TZ = ['UTC' UTCoff];
january1  = datetime(2016,1,1,'TimeZone',TZ);              % January 1st
localTime = datetime(2016,6,1,12,0,0,'TimeZone',TZ)        % Noon on June 1
localTime = datetime
   01-Jun-2016 12:00:00

지정된 날짜와 시간의 태양 위치를 계산하려면 태양시를 사용해야 합니다. 정오 태양시는 태양이 가장 높은 곳에 위치한 시간으로 정의합니다. 태양시를 계산하려면 현지 시간을 보정해야 합니다. 보정은 두 개의 항으로 구성됩니다.

  • 관찰자의 위치와 현지 자오선 간 오차를 보정하는 항

  • 지구 궤도와 자전축 기울기의 이심률과 관련한 궤도 항

이 분석을 위해 생성한 MATLAB 함수 solarCorrection을 사용하겠습니다. 예를 들어, 6월 1일 정오의 태양시는 다음과 같이 계산합니다.

d = caldays(between(january1,localTime,'Day'));            % Day of year
solarCorr = solarCorrection(d,lambda,str2double(UTCoff));              % Correction to local time
solarTime = localTime + minutes(solarCorr)
solarTime = datetime
   01-Jun-2016 12:18:06

태양 적위와 태양 고도

기본적인 수학 원리를 설명하기 위해 수식을 포함시키십시오. LaTeX 명령을 사용하여 수식을 만드십시오. 새로운 수식을 추가하려면 라이브 편집기 탭으로 이동하여 수식 버튼을 클릭하십시오. 수식 하나를 클릭하여 편집기에서 편집합니다.

태양 적위(δ)는 지구 적도면을 기준으로 한 태양의 각도입니다. 태양 적위는 춘분과 추분에 0이며 하지에 최댓값 23.45에 도달합니다. 1년 중 지정된 날짜(d)의 적위는 다음 공식으로 계산할 수 있습니다.

δ=sin-1(sin(23.45)sin(360365(d-81)))

적위(δ)와 위도(ϕ)를 사용하여 현재 시간의 태양 고도(α)를 계산할 수 있습니다.

α=sin-1(sinδsinϕ+cosδcosϕcosω)

여기서 ω시간각으로, 현재 태양시와 정오 사이의 지구 회전 각도를 말합니다.

delta = asind(sind(23.45)*sind(360*(d - 81)/365));          % Declination
omega = 15*(solarTime.Hour + solarTime.Minute/60 - 12);     % Hour angle
alpha = asind(sind(delta)*sind(phi) + ...                   % Elevation
     cosd(delta)*cosd(phi)*cosd(omega));
disp(['Solar Declination = ' num2str(delta) '   Solar Elevation = ' num2str(alpha)])
Solar Declination = 21.9634   Solar Elevation = 69.2589

태양 적위와 현지 위도를 알면 일출 시간과 일몰 시간을 계산할 수 있습니다. 일출 시간과 일몰 시간은 표준시로 계산됩니다.

sunrise=12-cos-1(-tanϕtanδ)15-TC60sunset=12+cos-1(-tanϕtanδ)15-TC60

midnight = dateshift(localTime,'start','day');
sr  = 12 - acosd(-tand(phi)*tand(delta))/15 - solarCorr/60;
sunrise = timeofday(midnight + hours(sr));
ss   = 12 + acosd(-tand(phi)*tand(delta))/15 - solarCorr/60;
sunset = timeofday(midnight + hours(ss));
disp(['Sunrise = ' datestr(sunrise,'HH:MM:SS') '   Sunset = ' datestr(sunset,'HH:MM:ss') ])
Sunrise = 04:15:34   Sunset = 19:08:11

대기 질량과 태양 복사열

이야기의 중요 사항을 그림으로 보여주기 위해 이미지를 포함시키십시오. 파일의 이미지를 포함시키려면 다른 곳의 이미지를 복사하여 붙여넣거나 라이브 편집기 탭으로 이동하여 이미지 버튼을 클릭하십시오.

태양 광선이 지구의 대기를 통과할 때 일부 태양 복사열은 흡수됩니다. 대기 질량은 태양 고도(α)로 구성된 함수입니다. 아래 도식에 표시된 것처럼, 태양 고도가 90일 때 태양 광선이 통과하는 최단 경로(X)를 기준으로 하여 현재 태양 고도에서 태양 광선이 대기를 통과하는 경로(Y)의 길이를 측정한 값입니다.

대기 질량이 클수록 지표면에 도달하는 복사열의 양이 줄어듭니다. 대기 질량은 다음 식으로 계산할 수 있습니다.

AM=1cos(90-α)+0.5057(6.0799+α)-1.6364.

그런 다음, 지표면에 도달하는 태양 복사열(단위: Kw/m^2)은 다음 실험식을 사용하여 계산할 수 있습니다.

sRad=1.353*0.7AM0.678.

AM = 1/(cosd(90-alpha) + 0.50572*(6.07955+alpha)^-1.6354);
sRad = 1.353*0.7^(AM^0.678);                                % kW/m^2
disp(['Air Mass = ' num2str(AM) '   Solar Radiation = ' num2str(sRad) ' kW/m^2'])
Air Mass = 1.0688   Solar Radiation = 0.93164 kW/m^2

고정된 태양 전지판의 태양 복사열

다른 곳의 추가 정보를 참조하도록 하이퍼링크를 사용하십시오. 하이퍼링크를 추가하려면 라이브 편집기 탭으로 이동하여 하이퍼링크 버튼을 클릭하십시오.

태양 추적 장치와 함께 설치된 태양 전지판은 태양의 위치에 따라 이동하여 태양 복사열을 100% 흡수할 수 있습니다. 하지만 가장 많이 사용되는 태양 전지는 설치하면 태양 전지판의 방위각(Azimuth)과 기울기가 고정되어 있습니다. 태양 전지의 경우, 태양 전지판에 도달하는 실제 복사열의 양은 태양의 방위각에 따라 달라집니다. 태양 방위각(γ)은 하늘에서 태양이 위치한 나침반 방향입니다. 북반구에서 정오에 태양 방위각은 180(남쪽)입니다. 태양 방위각은 다음 식으로 계산합니다.

\gamma=łeft{\beginarrayll\cos^-1łeft(\frac\sin\delta\cos\phi-\cos\delta\sin\phi\cosømega\cos\alpha\right) & \mboxfor solar time 12

gamma = acosd((sind(delta)*cosd(phi) - cosd(delta)*sind(phi)*cosd(omega))/cosd(alpha));
if (hour(solarTime) >= 12) && (omega >= 0)
    gamma = 360 - gamma;
end
disp(['Solar Azimuth = ' num2str(gamma)])
Solar Azimuth = 191.8568

북반구에서 일반적으로 태양 전지판을 설치하면 전지판은 남쪽을 향해 180의 방위각(β)으로 고정됩니다. 북위 지역에서 일반적인 기울기 각도(τ)는 35입니다. 고정된 전지판의 경우, 태양 전지판 복사열의 양은 다음 식을 사용하여 총 태양 복사열의 양을 기준으로 계산됩니다.

pRad=sRad[cos(α)sin(τ)cos(β-γ)+sin(α)cos(τ)]

beta = 180;                                                 % Panel azimuth
tau = 35;                                                   % Panel tilt
pRad = sRad*max(0,(cosd(alpha)*sind(tau)*cosd(beta-gamma) + sind(alpha)*cosd(tau)));
disp(['Panel Radiation = ' num2str(pRad) ' kW/m^2'])
Panel Radiation = 0.8989 kW/m^2

태양 전지판 크기와 효율성

분석에 사용된 파라미터 값을 독자가 변경하여 여러 파라미터 값이 어떻게 결과에 영향을 미치는지를 확인할 수 있도록 하십시오.

지금까지의 계산에는 전력으로 변환할 수 있는 이론적인 최대 태양 복사열의 양이 반영되었습니다. 하지만 태양 전지판은 들어오는 태양 복사열을 모두 전기로 변환하지는 못합니다. 태양 전지판의 효율성은 전지판에 도달한 복사열 중 전기로 변환된 복사열의 비율로 나타냅니다. 이는 태양 전지의 설계와 재료에 따라 달라집니다.

일반적으로 가정용으로 설치할 경우에는 효율성이 25%인 20m2 태양 전지판이 사용됩니다. 아래 파라미터를 수정하여 태양 전지판의 효율성과 크기가 전력 생산에 어떻게 영향을 미치는지를 확인할 수 있습니다.

eff = 0.36;                          % Panel efficiency
pSize = 25;                          % Panel size in m^2
pElec = eff*pSize*pRad;                                     % Panel electric output in kW
disp(['Expected electical output = ' num2str(pElec) ' kW'])
Expected electical output = 8.0901 kW

시간에 따른 전력 생산

플롯을 생성하는 코드와 플롯을 라이브 편집기에 함께 생성하십시오. 플롯을 별도의 Figure 창에 열려면 더블 클릭하십시오.

이제 1년 중 특정 날짜에 태양 전지판이 생산하는 전력량을 계산할 수 있습니다. 분석을 단순화하기 위해 위의 식을 함수 panelRadiation 을 사용하는 식으로 변경하고, 지정된 날짜와 위치에 대한 시간별 총 태양 복사열의 양과 태양 전지판 복사열의 양을 계산해 보겠습니다. 파라미터 isFixed는 고정된 태양 전지판의 경우에는 1로, 추적 장치가 있는 태양 전지판의 경우에는 0으로 설정되도록 합니다. 다른 날짜를 지정하여 연중 시기에 따라 태양 복사열과 태양 전지판 복사열이 어떻게 변하는지 확인해 보십시오.

[time, sRad, pRad] = panelRadiation(date, longitude, latitude, UTCoff, panelTilt, panelAzimuth, isFixed)

isFixed = 1;
selectedYear = 2016;
selectedMonth = 1;
selectedDay = 1;
date = datetime(selectedYear,selectedMonth,selectedDay,'TimeZone',TZ);                      
[times, sRad, pRad] = panelRadiation(date, lambda, phi, UTCoff, tau, beta, isFixed) ;

plot(times,sRad,times,pRad)
title(['Solar and Panel Radiation for ' datestr(date,'mmmm dd yyyy')])
xlabel('Hour of Day');
ylabel('Radiation, kW/m^2')
legend('Available Solar Radiation','Solar Radiation on Panel', 'Location','South')

1년 중 모든 날짜의 전력 생산을 추정하려면 이 계산을 반복하십시오.

date = datetime(2015,1,1:365,'TimeZone',TZ);        % Create a vector of days in the year
for i = 1:365
    [times, sRad, pRad] = panelRadiation(date(i), lambda, phi, UTCoff, tau, beta, isFixed) ;
    radiation = sum(pRad(1:end-1)+pRad(2:end))/2;
    dailyPower(i) = eff*pSize*radiation; 
end

plot(date,dailyPower)
title('Yearly Power Generation')
xlabel('Date');
ylabel('Power Generation, kW-hrs')

yearlyPower = sum(dailyPower);
disp(['Expected annual power output = ' num2str(yearlyPower) ' kW-hrs'])
Expected annual power output = 17917.7889 kW-hrs

분석 확장

동료와 분석을 공유하고, 동료를 초대하여 분석을 재현하거나 확장하십시오. 라이브 편집기를 사용하여 협업할 수 있습니다.

태양 전지판 설치로 인한 실제 전력 출력은 현지 기상 조건의 영향을 크게 받습니다. 이 분석을 확장한 흥미로운 예제 중 하나는 구름양이 결과에 어떻게 영향을 미치는지 알아보는 것입니다. 미국에서는 다음과 같은 정부 웹 사이트의 데이터를 사용할 수 있습니다.

관련 항목