Файл: Пермский национальный исследовательский политехнический университет Аэрокосмический факультет кафедра Авиационные двигатели.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.01.2024
Просмотров: 41
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Найдите локальные экстремумы функции двух переменных, приняв за начальную, точку с заданными координатами x0, y0 (таблица 2.1). Предварительно создайте соответствующую файл-функцию.
>> [z,fval] = fminsearch(@(x) (exp(x(1)+x(2))+4.*x(1).^2-3.*x(1)-3.*x(2)), [0.5,1.5])
z = 0.0000 1.0986
fval = -0.2958
>> [x,y]=meshgrid(-2:0.2:2,-2:0.2:2);
>> z= exp(x+y)+4.*x.^2-3.*x-3.*y;
>> surf(x,y,z);
>> [x,fval] = fminunc(@(x) (exp(x(1)+x(2))+4.*x(1).^2-3.*x(1)-3.*x(2)), [0.5,1.5])
Warning: Gradient must be provided for trust-region algorithm;
using line-search algorithm instead.
> In fminunc at 380
Local minimum found.
Optimization completed because the size of the gradient is less than
the default value of the function tolerance.
x = 0.0000 1.0986
fval =-0.2958
Рисунок 3: Поверхность z= exp(x+y)+4.*x.^2-3.*x-3.*y
Задание №3
Рассчитать аэродинамический нагрев тела в полете со скоростью V, в зависимости от высоты полета H для условий международной стандартной атмосферы (МСА).
Значение высоты H принять от 0 до 25000м с шагом 1000м.
Зависимость температуры атмосферы TH[K]от высоты Н[м] определяется по формуле:
TH= T0 - β·Н
где β - коэффициент снижения температуры β = 6,5·10-3 [K/м];
T0 – температура атмосферы на высоте Н = 0, T0=288,2[K]
Начиная с высоты 11000м (тропосфера) до высоты 25000м (стратосфера) температура окружающей среды остается постоянной.
Аэродинамический нагрев ΔT*[K] рассчитывается по формуле:
где МН – число Маха ; аН – местная скорость звука [м/с], определяется по формуле .
Показатель адиабаты для воздуха k =1,4.
Удельная газовая постоянная R = 287,13[Дж/кг·К]
Варианты исходных данных (скорость полета VH)
Вариант задания | 4 |
Скорость полета [м/c] | 280 |
1. Вывести рассчитанные данные зависимостей TH (Н) и ΔT*(Н) в виде таблиц. Для чего после расчета сохранить их в текстовый файл.
2. Построить графики этих зависимостей.
Th(H):
H, км | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Th, K | 288.2 | 281.7 | 275.2 | 268.7 | 262.2 | 255.7 | 249.2 | 242.7 | 236.2 | 229.7 | 223.2 | 216.7 | 216.7 |
H, км | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
Th, K | 216.7 | 216.7 | 216.7 | 216.7 | 216.7 | 216.7 | 216.7 | 216.7 | 216.7 | 216.7 | 216.7 | 216.7 | 216.7 |
| | | | | | | | | | | | | | | | | | | | | | | | | |
Рисунок 4: График зависимости температуры от высоты а(h):
Высота | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11-25 |
а(h) | 57,90439 | 57,24769 | 56,58336 | 55,91114 | 55,23074 | 54,54185 | 53,84415 | 53,13729 | 52,4209 | 51,69458 | 50,95791 | 50,21044 |
Рисунок 5: График зависимости аэродинамического нагрева от высоты
Вывод: MatLAB позволяет исследовать математические функциональные зависимости на максимумы и минимумы, экстремумы и находить точки пересечения функции с осями координат, а также решать практические задачи.
Лабораторная работа № 5.
Методы обработки экспериментальных данных
Основы работы в Curve Fitting Toolbox
Цель: 1) научиться работать с Curve Fitting Toolbox;
2) определить вид заданной функции.
Curve Fitting Toolbox позволяет:
1. Работать с данными, заданными при помощи векторов в рабочей среде MATLAB, и, при необходимости, снабжать данные весами, так же задавая вектор их значений.
2. Графически отображать исследуемые данные.
3. Осуществлять предварительную обработку данных, исключая часть данных по некоторому правилу, по точкам в таблице, или при помощи мыши на графике, или наоборот оставляя часть данных для последующей обработки.
4. Сглаживать и фильтровать данные различными способами.
5. Приближать данные при помощи параметрических моделей, в которых искомые параметры могут входить как линейно, так и нелинейно. Модели выбираются из библиотеки моделей, или задаются пользователем. Целевая функция ошибки и методы, применяемые для ее минимизации, так же могут быть различными. Допускается задание ограничений на искомые значения параметров. Кроме параметрических моделей, возможна интерполяция данных сплайнами и приближение сглаживающими сплайнами.
6. Отображать построенные приближения графически, форматировать графики и сохранять результаты в отдельных графических окнах.
7. Вычислять различные критерии пригодности полученного приближения.
8. Производить ряд операций с полученными приближениями (вычислять в заданных точках, дифференцировать интегрировать, проводить экстраполяцию), графически отображать результат.
П риблизительно были определены точки по графику неизвестной функции, построена точечная диаграмма в программе MS Excel:
Рис. 1. Примерный вид графика
Импортируем данные о значениях координатах и массах точек.
Построенной точечной диаграмме сопоставляем предложенные программой виды различных функций.
Находим функцию, которая имеет минимальные ошибки.
Рис.2. Результаты приближения данных полиномом третьей степени
Linear model Poly3:
f(x) = p1*x^3 + p2*x^2 + p3*x + p4
Coefficients (with 95% confidence bounds):
p1 = -0.1877 (-0.2702, -0.1053)
p2 = 5.245 (3.531, 6.959)
p3 = -41.56 (-51.9, -31.23)
p4 = 138.5 (121.5, 155.6)
Goodness of fit:
SSE: 2207
R-square: 0.8302
Adjusted R-square: 0.8132
RMSE: 8.578
Рис.3. Результаты приближения данных полиномом четвертой степени
Linear model Poly4:
f(x) = p1*x^4 + p2*x^3 + p3*x^2 + p4*x + p5
Coefficients (with 95% confidence bounds):
p1 = -0.02711 (-0.05183, -0.002388)
p2 = 0.5162 (-0.1651, 1.197)
p3 = -0.6357 (-6.967, 5.695)
p4 = -23.96 (-46.65, -1.266)
p5 = 124.1 (98.83, 149.4)
Goodness of fit:
SSE: 1853
R-square: 0.8575
Adjusted R-square: 0.8378
RMSE: 7.993
Рис.4. Результаты приближения данных функцией суммы синусов
Fit computation did not converge: Fitting stopped because the number of iterations or function evaluations exceeded the specified maximum. Fit found when optimization terminated:
General model Sin2:
f(x) = a1*sin(b1*x+c1) + a2*sin(b2*x+c2)
Coefficients (with 95% confidence bounds):
a1 = 731.7 (-2.865e+05, 2.88e+05)
b1 = 0.04625 (-32.07, 32.16)
c1 = 2.636 (-334.5, 339.8)
a2 = 234.5 (-7.599e+04, 7.646e+04)
b2 = 0.1716 (-12.5, 12.84)
c2 = 4.677 (-88.6, 97.96)
Goodness of fit:
SSE: 4464
R-square: 0.6566
Adjusted R-square: 0.5952
RMSE: 12.63
Рис.5. Результаты приближения данных полиномом шестой степени
Fit computation did not converge: Fit found when optimization terminated:
Linear model Poly6:
f(x) = p1*x^6 + p2*x^5 + p3*x^4 + p4*x^3 + p5*x^2 + p6*x + p7
where x is normalized by mean 6.341 and std 3.628
Coefficients (with 95% confidence bounds):
p1 = -1.028 (-8.833, 6.777)
p2 = 0.4823 (-9.269, 10.23)
p3 = 0.09982 (-28.79, 28.99)
p4 = -8.809 (-35.57, 17.95)
p5 = 28.98 (-1.342, 59.3)
p6 = 8.341 (-8.082, 24.76)
p7 = 34.68 (27.12, 42.24)
Goodness of fit:
SSE: 2515
R-square: 0.8065
Adjusted R-square: 0.7635
RMSE: 9.652
Вывод:
1) В Matlab с помощью средств Curve, Fitting и Toolbox можно определять вид любой неизвестной функции, коэффициенты уравнения, которыми она задана, рассчитать погрешность, с которой построена эта функция относительно приближенных значений.
2) Минимальные значения ошибок достигаются при приближении полиномом четвертой степени. Значение SSE должно стремиться к нулю, но, в связи с большими значениями функции по Х и по У, SSE увеличился.
Контрольное задание
-
Разработать алгоритм в виде блок-схемы. Оформить программы поиска корней уравнений из табл. 1.2. по вариантам методом сканирования и уточнения значения корней методом хорд и методом половинного деления.
Сравнить количество итераций при решении уравнений методами половинного деления и хорд с заданной точностью вычислений.
Код:
xn=1;
xk=4;
% c=0;
% x0=0;
step_x=0.01;
x=xn:step_x:xk;
y=(x-5).^2.*log(x)-1.2;
plot(x,y),grid;
disp("");
a=input("a= ");
b=input("b= ");
epsilon=0.0001; %input("погрешность e1= ");
for i=1:15
epsilon=0.1^i;
n=0;
while((b-a)>epsilon)
c=(a+b)/2;
ya=kontrF(a);
yb=kontrF(b);
yc=kontrF(c);
if(ya*yc<0)
b=c;
else
a=c;
end
n=n+1;
end
disp(fprintf('Корень, вычисленный методом половинных отрезков = %.15f за %d итераций',c,n));
input("Правая граница a= ");
input("Левая граница b= ");
n2=0;
while((b-a)>epsilon)
ya=kontrF(a);
yb=kontrF(b);
c=(a*abs(yb)+abs(ya)*b)/(abs(yb)+abs(ya));
yc=kontrF(c);
if(ya*yc<0)
b=c;
else
a=c;
end
n2=n2+1;
end
end
disp(fprintf('Корень, вычисленный методом хорд = %.15f за %d итераций',c,n2));
Функция kontrF:
function [y] = code(x)
y=(x-5)^2*log(x)-1.2;
end
Да
Да
Нет
Нет
b=c
a=c
n=n+1
ya*yc < 0
Конец
c = (a+b)/2
ya=kontrF(a)
yb=kontrF(b)
yc=kontrF(c)
Начало
|b-a|>E
a, b, f(x), E
Вывод корня и числа итераций
Вывод:
1) С помощью MatLab был создан алгоритм поиска корней методом хорд и методом половинного деления.