Скачиваний:
2
Добавлен:
08.09.2024
Размер:
4.03 Кб
Скачать
clc
clear all
close all
%%
x = [0, 5, 6.8, 7.9, 9.2, 9.6, 11, 13, 14, 15, 16, 17.1, 17.9, 19, 19.5, 20.9, 21.7, 23.5, 25, 26, 27, 27.5, 29, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90]';
y = [1, 1, 0.32, 1, 0.34, 1, 0.84, 0.31, 0.82, 0.3, 0.65, 0.29, 0.5, 0.22, 0.38, 0.2, 0.33, 0.21, 0.13, 0.2, 0.12, 0.21, 0.09, 0.08, 0.081, 0.055, 0.055, 0.0375, 0.035, 0.0275, 0.0275, 0.02, 0.02, 0.0175, 0.0175, 0.01]';
xx = 0:.25:90;

% Интерполируем данные
smoothingFactor = 0.98; % Этот параметр регулирует степень сглаживания
yy = csaps(x, y, smoothingFactor, xx);
% Ограничение интерполированных значений
yy(yy > 1) = 1;
yy(yy < 0) = 0;

plot(x, y, 'x', xx, yy, LineWidth=1.5, Color='blue')

set(gca, 'YLim', [-0.0 1.1])
grid on
xlabel("l, см")
ylabel("P, мВт")
legend("Измерения", "Сглаживание")

%%
ang = [-30, -20, -15, -10, -5, 0, 5, 10, 15, 20, 30]';
P = [0.001, 0.12, 0.455, 0.7, 0.8, 0.81, 0.8, 0.7, 0.455, 0.12, 0.001]';
angang = -180:.25:180;
smoothingFactor = 0.8; % Этот параметр регулирует степень сглаживания
pp = csaps(ang, P, smoothingFactor, angang);
% Ограничение интерполированных значений
pp(pp > 1) = 1;
pp(pp < 0) = 0;

plot(ang, P, 'x', angang, pp, LineWidth=1.5, Color='red')

set(gca, 'YLim', [-0.03 0.85])
grid on
xlabel("Ang, deg")
ylabel("P, мВт")
legend('P(deg)', 'P(deg) (интерполяция)', fontsize = 16)


figure(2);

theta = angang*pi/(180);
f = pp; % vectorized. Note element-wise division
polarplot(theta, f, LineWidth=1.5, Color='green')
rlabel('a')
%%
par_t = [30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90];
par = [0.09, 0.081, 0.055, 0.055, 0.038, 0.035, 0.028, 0.028, 0.020, 0.020, 0.018, 0.018, 0.010];
S = 31.41;
PPEe = par./S;

P = 4;
G = 55;
F = 1;
l = linspace(30, 90, 100);
%PPEt = P*G*F*F./(4*pi*par_t.*par_t);
PPEt = P*G*F*F./(4*pi*l.*l);
% Интерполируем данные
xx = 30:.25:90;
smoothingFactor = 0.9; % Этот параметр регулирует степень сглаживания

yy = csaps(par_t, PPEe, smoothingFactor, xx);
% Ограничение интерполированных значений
%yy(yy > 1) = 1;
%yy(yy < 0) = 0;
plot(par_t, PPEe, 'x', xx, yy, LineWidth=1.5, Color='blue')
grid on
hold on
plot(l, PPEt, '--', LineWidth=1, Color='red')
xlabel('x, см');
ylabel('ППЭ, Вт/см^2');
legend('ППЭ_э', 'ППЭ_э (интерполяция)', 'ППЭ_т', fontsize=16)



%%
% Начальное значение параметра F
initial_F = 0.2;

% Минимизация ошибки
options = optimset('TolFun', 1e-20); % Установите маленькое значение TolFun
optimal_k = fmincon(@mse_error, initial_F)
P = 4;
G = 55;
S = 31.41;
% Повторное вычисление PPEt с оптимальным F
PPEt = P * optimal_k ./ (4 * pi * l .* l);

% Отрисовка результатов
%figure;
%plot(par_t, PPEe, 'x', xx, yy, 'LineWidth', 1.5, 'Color', 'blue')
%grid on;
%hold on;
plot(par_t, PPEe, 'x', xx, yy, LineWidth=1.5, Color='blue')
grid on
hold on
plot(l, PPEt, '--', LineWidth=1, Color='red')
xlabel('x, см');
ylabel('ППЭ, Вт/см^2');
legend('ППЭ_э', 'ППЭ_э (интерполяция)', 'ППЭ_т', fontsize=16)
%legend('ППЭ_э', 'ППЭ_э (интерполяция)', 'ППЭ_т', 'FontSize', 16)
%%
function error = mse_error(k)
P = 4;
G = 55;
S = 31.41;
l = [30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90];
PPEe = [0.0029, 0.0026,0.0018,0.0018,0.0012,0.0011,0.0009,0.0009,0.0006,0.0006,0.0006,0.0006,0.0003];
PPEt = P * k ./ (4 * pi * l .* l);
% Вычисление среднеквадратичного отклонения между PPEe и PPEt
error = sqrt((mean(PPEe - PPEt)).^2);
end
Соседние файлы в папке скрипт