求解一个非线性最小二乘反问题

11视图(30天)
l
l 2019年5月6日
编辑: madhan拉维 2019年5月11日
我写了下面的问题。我的最终目标是解决逆问题的参数k方程的半空间内温度变化是由于一个用于表面温度。
我要评估在一个深度(1.3米)z (y)将是一个常数。我有真实的数据,但最初合成数据证实这个问题产生。我现在的具体问题是在评估最小二乘解 ——可以简单地在solver-based优化(//www.tianjin-qmedu.com/help/optim/ug/fmincon.html)但我难以概念化如何应用提出我的问题。我的分析提出的问题是:
% %解析模型
%的参数
导电率= .0033;% W m - 1 k - 1
heat_capacity = 671.8;% J kg-1K-1
密度= 1300;% kgm-1 ^ 3
扩散系数=电导率/ (heat_capacity *密度);
synodic_period = 2.55024 e6;%秒
simulation_period = 3 * synodic_period;
synodic_frequency =(2 *π)/ synodic_period;
T_av = 250;% K
T_amp = 150;% K
skin_depth =√2 *扩散系数/ synodic_frequency);% m
t_list = linspace (0, 66162100, 1000);%的时间/ (S_P)
% t_list = 0:5: synodic_period;
z_list = linspace (0、1.5、1000);%的深度
T_an =南(长度(t_list), (z_list));%输出向量
T_an (: 1) = T_av;
%计算温度
t_index = 1:长度(t_list)
t = t_list (t_index);
z_index = 1:长度(z_list)
z = z_list (z_index);
T_an (t_index z_index) = T_av + T_amp * exp (- z * sqrt (synodic_frequency /(2 *扩散系数)))* cos (synodic_frequency * t-z * sqrt (synodic_frequency /(2 *扩散系数)));
结束
结束
请让我知道如果我能提供任何额外的clarrification。谢谢你!

答案(1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2019年5月8日
你好,
我建议采用曲线拟合模型:线性最小二乘法和非线性最小二乘法)
选择= fitoptions(‘法’,‘NonlinearLeastSquares’);
模型= fittype(模型、多项式系数的{“K”});
1评论
l
l 2019年5月8日
编辑:madhan拉维 2019年5月11日
你好,我现在更新以下为非线性最小二乘方法。(IM_data是我测量数据)。我遇到困难,我的函数T_an——我不确定我已经正确设置功能。
清晰的所有
负载IM_data.mat
diffusivity_list = logspace (8, 1000);%定义边界
I_list = 0(大小(diffusivity_list));
n = 1:长度(I_list)
I_list (n) =钙(diffusivity_list (n), IM_data);
结束% n
重对数(diffusivity_list I_list)
选择= optimset (“显示”,“通路”);
选项。TolX = 1 e-12;
actual_diffusivity = fminbnd(@(κ)钙(卡帕,IM_data), 2 e-8 5 e-8选项)
函数我=钙(扩散系数,IM_data)
N_temps =大小(IM_data, 1);
z = 1.3;%米
T_an =分析(IM_data (: 1)”, z,扩散系数);
我= 0.5 *总和(T_an-IM_data (:, 2)) ^ 2);
结束%功能钙
% %解析模型
%的参数
函数T_an =分析(t_list z_list,扩散系数)
%电导率= .0033;% W m - 1 k - 1
heat_capacity = 671.8;% J kg-1K-1
密度= 1800;% kgm-1 ^ 3
%扩散系数=电导率/ (heat_capacity *密度);
synodic_period = 2.55024 e6;%秒
simulation_period = 3 * synodic_period;
synodic_frequency =(2 *π)/ synodic_period;
T_av = 256;% K
T_amp = 150;% K
skin_depth =√2 *扩散系数/ synodic_frequency);% m
% t_list = linspace (0、86388、86388);
% t_list = linspace (0, 66162100, 1000);%的时间/ (S_P)
% z_list = linspace (0、1.5、1000);%的深度
T_an =南(长度(t_list), (z_list));%输出向量
T_an (: 1) = T_av;
%计算温度
T_an = T_av + T_amp * exp (-z_list / skin_depth)。* cos (synodic_frequency * t_list -z_list / skin_depth);
结束

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!