Javascript: Решить систему уравнений - PullRequest
3 голосов
/ 12 мая 2011

Я делаю калькулятор точки росы, используя " приближение ближе " в Википедии.

Я хочу иметь возможность рассчитать точку росы, если пользователь введет любые две переменные.

Есть ли более простой способ сделать это, чем использовать множество операторов if?

Более конкретно: что, если я хотел бы использовать температуру влажного термометра вместо относительной влажности? Должен ли я создать новую функцию или использовать оператор if для исключения набора переменных?

В настоящее время я использую температуру и относительную влажность:

    $('#calculate').click(function(){
        //Get Temp
        var T = parseInt($('#val1').val());
        //Get RH
        var RH = parseInt($('#val2').val());
        //Get es and ex
        var es = 6.112*Math.exp(17.76*T/(T+243.5));
        var ex = (RH*es)/100;
        //Calculate Dew Point
        var Tdp = (243.5*Math.log(ex/6.112))/(17.67-Math.log(ex/6.112));
        $('#output').append("<p>Dew Point"+Tdp+"</p>");

    });

1 Ответ

1 голос
/ 12 мая 2011

Для решения систем нелинейных уравнений, как правило, сложная задача. Делайте все возможное, чтобы избежать этого.

Мой обычный подход, если для вычисления ответа можно использовать несколько пар значений, состоит в том, чтобы использовать пару значений, которые мне даны, для вычисления канонической пары значений, которая затем используется для реального расчета. Более того, поскольку становится беспорядочно разбирать входные данные, чтобы выяснить, что вам дали, и вы можете использовать DWIM, возможно, имеет смысл иметь отдельные функции для каждой пары входных данных, которые я приму. (Или это может не зависеть от потока управления в вашей программе, вы знаете это лучше, чем я.)

...