changing a variable in an equation
2 次查看(过去 30 天)
显示 更早的评论
Hi, I wrote this little piece of code to evaluate
mass_flow
I then find out I have mass_flow, and I need to evaluate ER. Is there an automatic way to do so without doing the math?
clear
clc
close all
load
datas.mat
k = 1.4; %Gas constant ratio, cp/cv()
R = 287.05; %ideal gas constant [J/Kg*K]
A_eff = .0069; %[m^2]
mass_flow = phi_10Hz; %expansion ratio
mass_flow = A_eff.*((k./R).^0.5).*((1./E_R).^(1/k)).*(((2./k-1).*(1-(1./E_R).^((k-1)./k))).*0.5);
figure()
plot(E_R,mass_flow)
In attached the datas.mat you need to run the file
4 个评论
Alan Stevens
2020-12-11
编辑:Alan Stevens
2020-12-11
Ah yes. Because you want to plot mass-flow agaist E_R, I assume you want to find a different E_R for each value of mass_flow (rather than a single overall best-fit), in which case one way is to do the following:
load datas.mat
k = 1.4; %Gas constant ratio, cp/cv()
R = 287.05; %ideal gas constant [J/Kg*K]
A_eff = .0069; %[m^2]
mass_flow = phi_10Hz; %expansion ratio
mass_flowfn = @(E_R) A_eff.*((k./R).^0.5).*((1./E_R).^(1/k)).*(((2./k-1).*(1-(1./E_R).^((k-1)./k))).*0.5);
E_R = zeros(1,numel(mass_flow));
ER0 = 1; % Initial guess
for i = 1:numel(mass_flow)
E_R(i) = fminsearch(@(ER)fn(ER,mass_flowfn,mass_flow(i)),ER0);
ER0 = E_R(i);
end
figure()
plot(E_R,mass_flow)
function F = fn(ER, mass_flowfn, mass_flow)
F = norm(mass_flowfn(ER) - mass_flow);
end
Most of the values of E_R seem to be the same, so perhaps this isn't the best method!
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Computations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!