Создание интерактивного описания с Live Editor

Следующее является примером того, как использовать Live Editor, чтобы создать интерактивное описание. Создайте интерактивное описание, чтобы рассказать историю с вычислениями, что вы раньше решали проблему. Этот пример показывает как:

  • Используйте форматированный текст, чтобы описать ваш подход.

  • Вывод Show вместе с вашим кодом MATLAB.

  • Используйте уравнения, чтобы описать базовую математику.

  • Включайте изображения, чтобы проиллюстрировать важные тезисы.

  • Обеспечьте гиперссылки на справочный материал.

  • Позвольте читателю изменить параметры и повторно выполнить анализ.

  • Включайте графики для визуализации.

  • Пригласите коллег расширять ваш анализ.

Общий подход

В Live Editor можно включать форматированный текст как часть интерактивного описания. Используйте полужирный, курсивный, и подчеркнутый текст, чтобы подсветить важные слова или идеи. Используйте маркеры или числа к спискам форматов.

В этом примере мы оценим выходную мощность от типичной установки солнечной батареи. Мы будем использовать 12 полудня 1-го июня в Бостоне, чтобы проиллюстрировать, как вычислить следующее:

  • Солнечное время

  • Солнечный наклон и солнечное повышение

  • Масса воздуха и солнечное излучение, достигающее поверхности земли

  • Излучение на солнечной батарее, учитывая ее положение, наклон и эффективность

  • Энергия произведена за день и за целый год

Мы будем использовать эти формулы, чтобы построить график солнечный и излучение панели в течение нашего дня в качестве примера, и затем построить график ожидаемого производства электроэнергии панели в течение года. Мы будем использовать две функции MATLAB, созданные для этого анализа, solarCorrection и hourlyPanelRadiation, чтобы оптимизировать анализ.

Солнечное время

Вывод Show вместе с кодом, который произвел его. Чтобы запустить раздел кода, перейдите к вкладке Live Editor и нажмите кнопку Run Section.

Производство электроэнергии в солнечной батарее зависит от того, сколько солнечного излучения достигает панели, которая в свою очередь зависит от положения солнца относительно панели, когда солнце продвигается по небу.

lambda = -71.06;                                           % Boston longitude
phi = 42.36;                                               % Boston latitude
UTCoff = -5;                                               % Boston UTC offset 
TZ = ['UTC' num2str(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. Например, в полдень 1 июня, солнечное время было бы:

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

Солнечный наклон и повышение

Включайте уравнения, чтобы описать базовую математику. Создайте уравнения с помощью команд LATEX. Чтобы добавить новое уравнение, перейдите к вкладке Live Editor и нажмите кнопку Equation. Дважды кликните уравнение, чтобы отредактировать его в Редакторе формул.

Наклон солнца () является углом солнца относительно экваториальной плоскости земли. Солнечный наклон в vernal и осенних равноденствиях и повышается до максимума в летнем солнцестоянии. В любой данный день года (d), наклон может быть вычислен от следующей формулы:

От наклона () и широта () мы можем вычислить повышение солнца () в текущее время.

Вот угол часа, который является количеством углов вращения земли между текущим солнечным временем и солнечным полуднем.

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

Знание наклона солнца и локальной широты позволяет нам вычислять время восхода солнца и заката. Восход солнца и закат вычисляются в Стандартное Время.

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

Масса воздуха и солнечное излучение

Включайте изображения, чтобы проиллюстрировать важные тезисы в вашей истории. Чтобы включать изображение из файла, скопируйте и вставьте изображение из другого источника или перейдите к вкладке Live Editor и кликните по Кнопке с изображением.

Когда свет от солнца проходит через атмосферу земли, часть солнечного излучения будет поглощена. Масса воздуха является функцией солнечного повышения (). Как показано в схеме ниже, это - мера длины пути света через атмосферу (Y) относительно самого короткого пути (X), когда повышение солнца равняется 90.

Чем больше масса воздуха, тем меньше излучения достигает земли. Масса воздуха может быть вычислена от уравнения

Затем солнечное излучение (в Kw/m^2) достижение земли может быть вычислено от эмпирического уравнения

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

Солнечное излучение на фиксированных панелях

Используйте гиперссылки на информацию о поддержке ссылки из других источников. Чтобы добавить гиперссылку, перейдите к вкладке Live Editor и кликните по Кнопке гиперссылок.

Панели, установленные с солнечным средством отслеживания, могут переместиться с солнцем и получить 100% излучения солнца, когда солнце продвигается по небу. Однако большинству установок солнечной батареи установили панели в фиксированном азимуте и наклоне. Поэтому фактическое излучение, достигающее панели, будет также зависеть от азимута солнца. Солнечный азимут () является направлением компаса положения солнца в небе. В солнечный полдень в северном полушарии азимут солнца будет 180 (юг). Солнечный азимут вычисляется от этого уравнения:

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

В северном полушарии типичной установке солнечной батареи ориентировали бы панели к югу с азимутом панели (). В северных широтах типичный угол наклона () был бы 35. Для фиксированных панелей излучение панели вычисляется от общего солнечного излучения с помощью этого уравнения:

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

Размер панели и эффективность

Позвольте читателю изменить значения параметров в анализе, чтобы видеть, как различные значения параметров влияют на результаты.

До сих пор наши вычисления отражают теоретическое максимальное солнечное излучение, доступное для преобразования электроэнергии. Однако солнечные батареи не преобразовывают 100% доступного солнечного излучения в электричество. Эффективность солнечной батареи является частью излучения, достигающего панели, которая преобразована в электричество. Эффективность солнечной батареи зависит от дизайна и материалов ячейки.

Мы будем использовать типичные 20 жилых установок с эффективностью 25%, чтобы вычислить ожидаемую выходную мощность. Можно изменить параметры ниже, чтобы видеть, как эффективность и размер влияют на производство электроэнергии панели.

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

Производство электроэнергии в зависимости от времени

Создайте графики в Live Editor вместе с кодом, который произвел их. Дважды кликните график открыть его в отдельном окне фигуры.

Мы можем теперь вычислить, сколько энергии панель произведет в любой день года. Чтобы упростить анализ, мы будем использовать функцию под названием hourlyPanelRadiation , который использует уравнения выше, чтобы вычислить почасовое общее солнечное излучение и излучение панели для данной даты и местоположения. Параметр isFixed устанавливается на 1 для фиксированных панелей, 0 для отслеживания панелей.

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

isFixed = 1;
date = datetime(2016,6,1,'TimeZone',TZ);                      % Try other dates
[times, sRad, pRad] = hourlyPanelRadiation(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')

Мы можем повторить вычисление, чтобы оценить производство электроэнергии в течение каждого дня года.

date = datetime(2015,1,1:365,'TimeZone',TZ);        % Create a vector of days in the year
for i = 1:365
    [times, sRad, pRad] = hourlyPanelRadiation(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 = 9954.3272 kW-hrs

Расширение анализа

Совместно используйте свой анализ с коллегами. Пригласите их воспроизводить или расширять ваш анализ. Работа совместно с помощью Live Editor.

В действительности истинная выходная мощность от солнечной установки будет значительно затронута локальными погодными условиями. Интересное расширение этого анализа должно было бы видеть, как облачный покров влияет на результаты. В США мы можем использовать данные от следующих правительственных веб-сайтов.

Была ли эта тема полезной?