Упростить сложную дробь в Matlab

У меня есть огромная серия нелинейных функций.

3240910002558383085492736408270606958592 sin(x3_)   23950603179913084375 k10 x6_   23950603179913084375 k9 x5_
------------------------------------------------- - ---------------------------- - ---------------------------
                        #4                             25973015655783048675328       25973015655783048675328

                                                  2
     816555808152780085063004140309315584 cos(x3_)  sin(x3_)   64261963098890133504 k5 x1_   64261963098890133504 k6 x2_
   + ------------------------------------------------------- + --------------------------- + ---------------------------
                                #2                                          #5                            #5

                                                                                                    2
     64261963098890133504 k7 x3_   64261963098890133504 k8 x4_   2414846496921978125 k9 x5_ cos(x3_)
   + --------------------------- + --------------------------- + ------------------------------------
                  #5                            #5                      10625324586456701730816

Я преуспел в моделировании, результат этого моделирования составляет от 0,01 до 2. Но его элементы и вычисления настолько сложны. Я хотел бы упростить его, а затем использовать этот результат для запуска в C-программе. Я также пытаюсь использовать vpa, но это плохой результат из-за разницы между огромным числом и малым значением, поэтому он дает неправильное приближение к результату.

vpa = (2.6737e-21*(4.4485e90*sin(x3_) - 9.4197e86*x4_^2*sin(x3_) + 1.19e90*cos(x3_)*sin(x3_) - 5.9344e88*k1*x1_ ...

С другой стороны, моя идея заключается в том, чтобы сделать некоторую функцию, чтобы получить коэффициент, как показано ниже: f = a1*sin(x)*y*y + a2*x*x/(cos(x)^3).Любая функция в Matlab, что я могу достичь a1, a2?

Более того, в языке C максимальное количество int32 ограничено, поэтому я ищу решение этой проблемы. Пожалуйста, помогите, чтобы дать мне предложение. Заранее спасибо!

1 ответ

Вы можете использовать fit функция. Решать

f = a1*sin(x)*y*y + a2*x*x/(cos(x)^3)

Ты можешь использовать fittype определить вашу пользовательскую функцию. Остальное должно быть прямо из документации, если я правильно понимаю вашу проблему.

Другой вариант - использовать LUT для вашей функции.

Другие вопросы по тегам