MatLab - Как решить неопределенный интеграл, а затем определить пределы? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть модель для оценки термодинамического процесса, она сделана с помощью 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
...