Woodbury 求逆公式 和 一个可能有用的等式

Woodbury 求逆公式:

( A + U B V ) − 1 = A − 1 − A − 1 U ( I + B V A − 1 U ) − 1 B V A − 1 (A+UBV)^{-1}=A^{-1}-A^{-1}U(I+BVA^{-1}U)^{-1}BVA^{-1} (A+UBV)1=A1A1U(I+BVA1U)1BVA1.

B = I B=I B=I时, 简化为:

( A + U V ) − 1 = A − 1 − A − 1 U ( I + V A − 1 U ) − 1 V A − 1 (A+UV)^{-1}=A^{-1}-A^{-1}U(I+VA^{-1}U)^{-1}VA^{-1} (A+UV)1=A1A1U(I+VA1U)1VA1.

一个可能有用的公式:

B ( R + A B ) − 1 = ( I + B R − 1 A ) − 1 B R − 1 B(R+AB)^{-1}=(I+BR^{-1}A)^{-1}BR^{-1} B(R+AB)1=(I+BR1A)1BR1

R = I R=I R=I时,
B ( I + A B ) − 1 = ( I + B A ) − 1 B B(I+AB)^{-1}=(I+BA)^{-1}B B(I+AB)1=(I+BA)1B

证明:
B ( R + A B ) − 1 = B ( R − 1 − R − 1 A ( I + B R − 1 A ) − 1 B R − 1 ) = B R − 1 − B R − 1 A ( I + B R − 1 A ) − 1 B R − 1 = ( I − B R − 1 A ( I + B R − 1 A ) − 1 ) B R − 1 = ( ( I + B R − 1 A ) − B R − 1 A ) ( I + B R − 1 A ) B R − 1 = ( I + B R − 1 A ) B R − 1 B(R+AB)^{-1} = B(R^{-1}-R^{-1}A(I+BR^{-1}A)^{-1}BR^{-1})\\ =BR^{-1}-BR^{-1}A(I+BR^{-1}A)^{-1}BR^{-1}\\ =(I-BR^{-1}A(I+BR^{-1}A)^{-1})BR^{-1}\\ =((I+BR^{-1}A)-BR^{-1}A)(I+BR^{-1}A)BR^{-1}\\ =(I+BR^{-1}A)BR^{-1} B(R+AB)1=B(R1R1A(I+BR1A)1BR1)=BR1BR1A(I+BR1A)1BR1=(IBR1A(I+BR1A)1)BR1=((I+BR1A)BR1A)(I+BR1A)BR1=(I+BR1A)BR1

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
学习人工智能,机器学习都离不开数学基础和编程知识。无论你是数据科学的初学者还是已经从事人工智能开发的有经验人员,这门课都适合于你。为什么这么说?首先人工智能和机器学习本质上就是算法,而算法就是数学及统计学以及编程的结合。当前市场上有许多开源的软件包如SKLEARN确实可以帮助没经验的或缺乏数学或算法基础的人实现机器学习模型及预测,但这些工具无法使你真正懂得算法的本质或来源,或者无法使你在不同场合下灵活运用及改进算法。记住,在实际工作中找到适合应用场景的解决方案是最难但是最重要的。但这离不开数学基础和算法理解。比如,线性回归是一类普遍的机器学习算法,所有的机器学习软件都有现成的方法实现模型,但如果在训练数据中加入几条新数据,那么新建立的模型和原来的模型有和联系或不同?再比如,为什么深度神经网络中的Sigmoid函数一般只用到输出层?神经网络的向后传播理论如何与泰勒展开和复合函数的偏导数联系在一起?人工智能中推荐系统和文字向量如何与矩阵的奇异分解以及特征向量联系?模型中对标签进行数据变换如何影响预测值?所有这些问题的答案,你都可以从本课中找到线索。本课系统地讲述了有关人工智能,机器学习背后的数学知识。特别指出,微积分和代数知识是本课的核心。统计学基础被安排在另外的课程中。除此之外,我在每一章节或主要知识点后都安排了各类程序以解释和回顾所学到的东西。最后要提到的是,这不是一门工程项目实践课。但我会另外专门安排有关人工智能,机器学习的实践课程
### 回答1: 抱歉,我作为一个语言模型并不能直接提供MATLAB代码。但是,我可以提供一些思路和步骤供您参考。 假设变刚度阻尼双足机器人动力学方程可以写成如下形式: M(q) q'' + C(q, q') q' + G(q) = u 其中,M(q)是质量矩阵,q是关节角度向量,q'和q''分别表示关节角速度和角加速度,C(q,q')是科氏力矩阵,G(q)是重力矩阵,u是关节力矢量。 要求机器人中一个变量对所有变量求导,可以采用以下步骤: 1. 根据动力学方程,计算出M(q)、C(q,q')和G(q)的导数,分别记作dM(q)/dq、dC(q,q')/dq和dG(q)/dq。 2. 将动力学方程中的q''用q'和q表示出来,得到如下形式: q'' = M(q)^(-1) (u - C(q,q') q' - G(q)) 3. 对上式两边同时求导,得到: q''' = dM(q)/dq q' + M(q)^(-1) (du/dt - dC(q,q')/dq q' - dC(q,q')/dq' q' - dG(q)/dq) 4. 将上式中的q''用刚才得到的式子代入,得到: q''' = dM(q)/dq q' + M(q)^(-1) (du/dt - dC(q,q')/dq q' - dC(q,q')/dq' q' - dG(q)/dq) 5. 对上式中的每个变量分别求导,得到变量对各个变量的导数。 需要注意的是,由于动力学方程中包含了M(q)的逆矩阵,因此在求导过程中需要特别处理。常见的方法是使用Sherman-Morrison公式Woodbury矩阵恒等式来避免直接求逆矩阵。 以上就是求解变刚度阻尼双足机器人动力学方程中变量对所有变量求导的基本思路和步骤。希望可以对您有所帮助。 ### 回答2: 要在MATLAB中求解机器人动力学方程并对所有变量求导,可以遵循以下步骤: 1. 定义动力学方程:利用系统的运动学参数,确定机器人的动力学模型。可以采用拉格朗日力学或牛顿-欧拉原理来建立动力学方程。 2. 获取运动学和惯性参数:运动学参数包括关节角度、关节速度、关节加速度等信息;惯性参数包括质量、惯性矩阵等信息。根据机器人的设计和实际参数,获取这些参数的数值。 3. 定义函数:在MATLAB中,可以通过定义函数来表示机器人的动力学方程。根据机器人的动力学模型,将动力学方程表达为函数形式,其中输入参数表示运动学和惯性参数,输出表示机器人的动力学方程。例如: ```matlab function F = dynamic_eqn(q, q_dot, q_ddot, m, I) % q: 关节角度 % q_dot: 关节速度 % q_ddot: 关节加速度 % m: 质量 % I: 惯性矩阵 % 根据机器人动力学模型,编写动力学方程 % F = ... end ``` 4. 调用函数:将运动学和惯性参数传递给定义的函数,使用实际的关节角度、速度和加速度数据,调用函数计算机器人的动力学模型。例如: ```matlab q = [90, -90]; % 关节角度 q_dot = [10, -10]; % 关节速度 q_ddot = [5, -5]; % 关节加速度 m = 1; % 质量 I = eye(3); % 惯性矩阵 F = dynamic_eqn(q, q_dot, q_ddot, m, I); % 计算机器人的动力学方程 ``` 5. 对变量求导:MATLAB提供了用于求导的函数,例如`diff`。可以根据需要,对动力学方程中的变量进行求导操作,以获取他们对其他变量的导数。例如: ```matlab dF_dq = diff(F, q); % 对关节角度求导 dF_dq_dot = diff(F, q_dot); % 对关节速度求导 dF_dq_ddot = diff(F, q_ddot); % 对关节加速度求导 ``` 通过上述步骤,可以在MATLAB中求解机器人动力学方程,并对所涉及的变量进行求导操作。要注意,在实际应用中,还需要根据具体的机器人模型和动作需求,选择合适的数值计算方法和采样频率。 ### 回答3: 在MATLAB中,假设已知变刚度阻尼双足机器人的动力学方程表示为: M(q) * q'' + C(q, q') * q' + g(q) = τ 其中,M(q)表示质量矩阵,q是机器人的关节角度向量,q'是关节角速度向量,q''是关节角加速度向量,C(q, q')表示科里奥利力矩阵,g(q)表示关节重力向量,τ表示关节力/力矩向量。 要求机器人动力学方程中每个变量对所有变量求导,可以使用符号计算工具箱(Symbolic Math Toolbox)中的符号变量和符号表达式来实现。具体步骤如下: 1. 导入符号计算工具箱:在MATLAB命令行窗口中输入"syms"命令。 2. 定义符号变量:使用"syms"命令定义机器人变量q和变量的导数q'、q'',以及力/力矩变量τ。例如,可以输入命令"syms q1 q2 q1_dot q2_dot q1_ddot q2_ddot tau1 tau2",其中q1和q2分别代表两个关节的角度,q1_dot和q2_dot代表两个关节的角速度,q1_ddot和q2_ddot代表两个关节的角加速度,tau1和tau2代表两个关节的力/力矩。 3. 定义机器人的动力学方程式:根据机器人的动力学方程式,可以使用符号表达式定义M(q)、C(q, q')、g(q)。例如,M(q)可以表示为"M = [M11, M12; M21, M22]";C(q, q')可以表示为"C = [C11, C12; C21, C22]";g(q)可以表示为"g = [g1; g2]"。 4. 求导:使用diff函数对定义的方程式进行求导。例如,要求M(q)对q1的导数,可以使用命令"dM_dq1 = diff(M, q1)";要求M(q)对q1的二阶导数,可以使用命令"ddM_dq1 = diff(dM_dq1, q1)"。 以此类推,可以对所有的变量进行求导操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B417科研笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值