У меня есть модель для оценки термодинамического процесса, она сделана с помощью Mathcad, и мне она нужна в MatLab.
Это большое уравнение, которое использует интеграл тысячу раз, каждая температура использует определенный интеграл , Если я решаю каждый раз, результат совпадает с Mathcad, но это занимает часы, если я решаю только один раз, это занимает меньше секунды, но результат неверный. Я разделил уравнение и обнаружил, что ошибка в той части, которая есть в коде.
Как мне написать свой код, чтобы решить только один раз и получить правильный результат?
clc
clear
FrCrist = FCrystFastWrong();
FrCrist = FCrystSlowRight();
function [Fvpa] = FCrystSlowRight()
tic;
syms T;
Part4 = (10^(-4.27+(3961/(T-751))));
i = 0;
for TempN = 996:1100
i = i+1;
TC(i) = TempN;
FintDef = int(Part4,T,[1000 TempN]);
Fvpa(i) = double(vpa(FintDef));
end
toc
plot(TC,Fvpa)
end
function [Fvpa] = FCrystFastWrong()
tic;
syms T;
Part4 = (10^(-4.27+(3961/(T-751))));
Fint = int(Part4,T);
qc = arrayfun(@char, Fint, 'uniform', 0);
qc = erase(qc,"int");
qc = erase(qc,", T");
qc = str2sym(qc);
f = inline(qc,'T');
i = 0;
for TempN = 996:1667
i = i+1;
TC(i) = TempN;
Solve(i) = f(TempN)-f(1000);
Fvpa(i) = Solve(i);
end
toc
plot(TC,Fvpa)
end