Function for the equation

7 ビュー (過去 30 日間)
Betty Johnson
Betty Johnson 2021 年 3 月 10 日
コメント済み: Walter Roberson 2021 年 3 月 12 日
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
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?
Betty Johnson
Betty Johnson 2021 年 3 月 10 日
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

サインインしてコメントする。

回答 (1 件)

Walter Roberson
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 件のコメント
Betty Johnson
Betty Johnson 2021 年 3 月 10 日
The unknowns are E and A
Walter Roberson
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 ExchangeSpreadsheets についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by