Function for the equation
7 次查看(过去 30 天)
显示 更早的评论
Is there any way to define a function for this equation? ln(𝛽/(T^2))=−𝐸/𝑅*1/𝑇+ ln(𝑅/𝐸 * 𝐴)
I am tryting to use different spreadsheets of an excel to calculate this function.So i would like to know how to write code as a function to apply it to all different spreadsheets
4 个评论
Walter Roberson
2021-3-10
Is this a curve fitting question then? You have a spreadsheet with multiple sheets, one holds beta, one holds T, one holds R, and you would like to find the best single E and A values that model the system?
回答(1 个)
Walter Roberson
2021-3-10
If you have
log(beta/T^2) = -E/(R*T) + log(R*A/E)
and you need to solve for R, then
R = E ./ (T .* lambertw(T .* A ./ beta))
If instead you need to solve for T then
%under the assumption that A, beta, E, R are all non-negative !!
inner = sqrt(E*A/(R*beta))/2
outer = E/(2*R);
T = [outer/lambertw(inner), outer/lambertw(-inner)]
Depending on the exact values involved, the first of the two T entries might be complex
If any of A, beta, E, R, might be negative, then the inner becomes more complicated,
inner = sqrt(E.^2./(R.^2.*beta)).*sqrt(R.*A./E)/2
2 个评论
Walter Roberson
2021-3-12
xlsfile = 'YourFileName.xlsx';
[status, sheetnames] = xlsxinfo(xlsfile);
if isempty(status)
error('cannot read file "%s" as an excel file', xlsfile);
end
numsheets = length(sheetnames);
EA = zeros(numsheets,2);
for K = 1 : length(sheetnames)
thissheet = sheetnames{K};
Tab = readtable(xlsfile, thissheet);
beta = Tab{:,1}; %adjust column numbers as appropriate
T = Tab{:,2};
R = Tab{:,3};
guess = [1,3/4];
residue = @(E,A) sum((-E./(R.*T) + log(R.*(A./E)) - log(beta./T.^2)).^2,1);
EA(K,:) = fminsearch(residue, guess);
end
I do not have your file to test with so I have no idea how close to the global minima the above will get.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spreadsheets 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!