如何在matlab中象征性地集成函数,我知道输出必须包含bessel函数?

时间:2012-04-12 07:45:25

标签: matlab integration symbolic-math

我正在使用以下功能:

f(x)= a *(1 + cos(3 * x))其中a是常数/参数。

y(x)= exp(-b * f(x))其中b是另一个常数。

我需要计算定积分积分(0,2pi)y(x)dx。

我正在尝试为我们的研究小组实施另一份研究论文。我知道输出必须包含第一类修改的bessel函数,它们是'a'的函数。 Matlab只是拒绝评估这个积分。

以下是我的代码(Matlab):

syms x;
syms a;
syms b;

f_x = a*(1+cos(3*x));
y_x = exp(-b*f_x);
z_x = int(y_x, x, 0, 2*pi)

输出:

Warning: Explicit integral could not be found. 

z_x =

int(1/exp(a*b*(cos(3*x) + 1)), x = 0..2*pi)

请求您协助解决此问题!我确信积分在很多地方都包含像I(a)等bessel函数。我需要在这里做任何预处理吗?我迫切需要这个解决方案。我很欣赏能够在正确的方向上找到答案的快速反应。

2 个答案:

答案 0 :(得分:0)

解决!它在mathematica中工作,在Matlab中失败。

答案 1 :(得分:0)

启动R2017b,这有效。使用int

Sub CompareAndReplaceData()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim lr As Long, i As Long
Dim Rng As Range, Cell As Range
Dim x, dict

Application.ScreenUpdating = False

Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")

lr = ws1.Cells(Rows.Count, 1).End(xlUp).Row
Set Rng = ws1.Range("A2:A" & lr)

x = ws2.Range("A1").CurrentRegion.Value
Set dict = CreateObject("Scripting.Dictionary")

For i = 2 To UBound(x, 1)
    dict.Item(x(i, 1)) = x(i, 2)
Next i

For Each Cell In Rng
    If dict.exists(Cell.Value) Then
        ws1.Cells(Cell.Row, "D") = dict.Item(Cell.Value)
    End If
Next Cell
Application.ScreenUpdating = True
End Sub