Вычисление 4-й разности сил - PullRequest
1 голос
/ 15 декабря 2011

Я использую Modelica для решения системы уравнений для задач теплообмена, и одним из них является излучение, которое записывается как Ta^4-Tb^4.Может ли кто-нибудь дать мне эксклюзивный ответ, если вычислительно быстрее решить систему с помощью уравнения, записанного как (Ta-Tb)(Ta+Tb)(Ta^2+Tb^2)?

С уважением,

Ответы [ 2 ]

2 голосов
/ 17 декабря 2011

На этот вопрос не может быть однозначного ответа. Это потому, что спецификация Modelica используется для формального определения постановки задачи, но ничего не говорит о том, как инструменты решают такие уравнения. Кроме того, поскольку большинство инструментов Modelica в любом случае выполняют символические манипуляции, трудно предсказать, какие шаги они могут предпринять с таким уравнением. Например, инструмент может очень хорошо превратить это в полином Хорнера самостоятельно (без вашего ручного вмешательства).

Если вы собираетесь вычислять температуры в таком уравнении, как нелинейная система, будьте осторожны с отрицательными температурными решениями. Вы должны исследовать атрибут "start", чтобы определить начальные (положительные) предположения, когда эти температуры являются переменными итераций в нелинейных задачах.

0 голосов
/ 15 декабря 2011

Я бы сказал, что есть две причины, по которым его разбиение на (Ta-Tb) (Ta + Tb) (Ta ^ 2 + Tb ^ 2) МЕДЛЕННО, а НЕ БЫСТРО.

  1. (Ta ^ 2 + Tb ^ 2) требует 2 умножения и сложения, что означает, что (Ta-Tb) (Ta + Tb) (Ta ^ 2 + Tb ^ 2) требует 4 умножения и 3 сложения.С другой стороны, я думаю, что Ta ^ 4-Tb ^ 4 сделано так: ((Ta ^ 2) ^ 2 - (Tb ^ 2) ^ 2), что означает 1 сложение и 4 умножения.

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

Я, очевидно, могу ошибаться, но я не могуувидеть любую причину, по которой (Ta-Tb) (Ta + Tb) (Ta ^ 2 + Tb ^ 2) может быть БЫСТРЕЕ.Надеюсь, это поможет.

Оскар

...