【问题标题】:How can I integrate a function which needs to have a matrix calculation first?如何集成需要先进行矩阵计算的函数?
【发布时间】:2011-08-18 13:21:54
【问题描述】:

我现在正在做我的论文。我坚持使用积分。我的功能定义为

myfun =(exp(t*Q)*V*x)(j);

其中QV 是一个矩阵 (n*n),x 是一个元素为 1 的向量,然后在计算后我们得到该向量的第 j_th 个元素,然后我需要将函数针对吨。

我想在 matlab 中使用quad。但是关键是它会报告内部矩阵的大小不同。既然这里的 A 不是数字?.....

我该怎么做。否则我只能针对 t 本身编写一个循环,这非常慢。

谢谢

【问题讨论】:

  • 这毫无意义。你不能取矩阵的(标量)指数。
  • 如果你的意思是矩阵指数,你想要expm,还是不对。
  • @Peter:如果没有看到 OP 实现的数学方程,说“这没有意义”是没有意义的。我并不是说你一定是错的,但很可能是 OP 确实想要对每个元素做一个exp
  • @yoda:但这实际上是对exp 函数的滥用。在数学中,您不能在矩阵上调用 exp。 Matlab 碰巧将它实现为 elementwise,但它不是数学。也许我今天早上只是脾气暴躁:)
  • @Peter:是的,你不会在数学中那样做。然而,矩阵乘法是在数学中完成某些双重求和的一种非常强大的方法。鉴于 MATLAB 在线性代数方面的优势,这将是最优化的方法。所以它很可能是一个有效的数学运算,它需要每个元素的exp,尽管从表面上看,它似乎不正确。我同意 OP 的问题中没有什么是清楚的,并且可以进行多种解释。

标签: matlab integral


【解决方案1】:

您可以为此使用SUBSREF(不过,您仍然需要遍历所有j):

 myfunOfT = @(t)(subsref(exp(t*Q)*V*x,struct('type','()','subs',j);

这将返回数组中jth 元素在时间t 的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多