Function for the equation

5 vues (au cours des 30 derniers jours)
Betty Johnson
Betty Johnson le 10 Mar 2021
Commenté : Walter Roberson le 12 Mar 2021
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 commentaires
Walter Roberson
Walter Roberson le 10 Mar 2021
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?
Betty Johnson
Betty Johnson le 10 Mar 2021
No all the speadsheets have the list of values for all parameters except fot E and A and I need to find E and A for all those sheets.So I am trying to define a function which would make the task easier

Connectez-vous pour commenter.

Réponses (1)

Walter Roberson
Walter Roberson le 10 Mar 2021
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 commentaires
Betty Johnson
Betty Johnson le 10 Mar 2021
The unknowns are E and A
Walter Roberson
Walter Roberson le 12 Mar 2021
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.

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by