Matlab积分函数的符号矩阵

时间:2014-06-17 19:34:36

标签: matlab integral

为了加速for循环(或消除所有循环),我一直试图将矩阵传递给函数。我也必须使用正弦和余弦。然而,当我试图找到一个矩阵的积分,其中元素由正弦和余弦组成时,它不起作用,我似乎无法找到一种方法来实现它。

我有一个矩阵SI,它由我使用符号数学工具箱定义的变量的正弦和余弦组成。因此,如果我只能传递SI矩阵并接收一个值矩阵,实际上会更好,这个值矩阵是该矩阵中每个位置的正弦/余弦函数的积分。我基本上会得到一个方阵。我不确定我是否表达得非常好,但我已经开始使用以下代码了。

I = [1 2; 3 4];
J = [5 6; 7 8];
syms o;
j = o*J;
SI = sin(I + j);
%SI(1,1) = sin(5*o + 1)
integral(@(o) o.*SI(1,1), 0,1);

理想情况下,我想解决integral(@(o) o*SI,0,1)并获取值矩阵。我该怎么办?

1 个答案:

答案 0 :(得分:0)

鉴于ABC都是N x N矩阵,目前我们假设它们都是{{1}制作示例的矩阵我说明了更简洁的理解。我们还会根据您在上述问题中的评论将2 x 2定义为数学符号。

o

让我们根据您的评论定义您的函数syms o; A = [1 2; 3 4]; B = [5 6; 7 8]; C = [9 10; 11 12];

f

我们得到:

f = o*sin(A + o*B + C)

请注意,对于f = [ o*sin(5*o + 10), o*sin(6*o + 12)] [ o*sin(7*o + 14), o*sin(8*o + 16)] 中的每个元素,我们会将fAB中的相应元素添加到一起。因此,对于每个矩阵的第一行和第一列,我们有C1, 5。因此,第一行9,第一列等于:A + o*B + C

现在,如果要集成,只需使用1 + 5*o + 9 = 5*o + 10命令即可​​。如果积分可以以封闭形式求解,则会找到精确积分。 int也可以处理矩阵,因此它将整合矩阵中的每个元素。你可以这样称呼它:

int

这会将out = int(f,a,b); 与下限f中的每个元素集成到上限a。因此,假设我们的限制是从b0,正如您所说的那样。因此:

1

我们得到:

out = int(f,0,1);

请记住,out = [ sin(15)/25 - sin(10)/25 - cos(15)/5, sin(18)/36 - sin(12)/36 - cos(18)/6] [ sin(21)/49 - sin(14)/49 - cos(21)/7, sin(24)/64 - sin(16)/64 - cos(24)/8] 是在符号数学工具箱中定义的。如果您想要实际数值,则需要将答案转换为out。因此:

double

我们得到:

finalOut = double(out);

显然,这可以推广到任何大小的finalOut = 0.1997 -0.1160 0.0751 -0.0627 矩阵,只要它们所有共享相同的维度。

买者

M x Nsincos以及其他相关功能的单位为弧度。如果您希望等效,请在函数末尾添加tan(即dsindcosd等。 )


我相信这是你之后的答案。祝你好运!