在matlab中简化复杂分数

时间:2017-04-22 14:28:41

标签: matlab function-approximation

我有一系列非线性函数。

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 个答案:

答案 0 :(得分:0)

您可以使用fit功能。解决

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

您可以使用fittype来定义自定义功能。如果我正确理解你的问题,那么应该直接从文档中休息。

另一个选择是为你的功能使用LUT。