近几天没事,开始学习一下Matlab S函数求解二阶微分方程,具体方程表达式如下:
D(q)q¨+C(q,q˙)q˙=τD\left( q \right)\ddot q + C(q,\dot q)\dot q = \tauD(q)q¨​+C(q,q˙​)q˙​=τ (2.1)
τ=Kde˙+Kpe\tau = {K_d}\dot e + {K_p}eτ=Kd​e˙+Kp​e (2.2)
其中,e˙=q˙d−q˙\dot e = {\dot q_d} - \dot qe˙=q˙​d​−q˙​,e=qd−qe = {q_d} - qe=qd​−q。qqq实际输出结果,qdq_dqd​期望输出的结果。
仿真参数设置如下:
p=[2.90,0.76,0.87,3.04,0.87]Tp=[2.90, \space 0.76, \space 0.87, \space 3.04, \space 0.87]^Tp=[2.90, 0.76, 0.87, 3.04, 0.87]T,q0=[0.0,0.0]Tq_0 = [0.0,\space 0.0]^Tq0​=[0.0, 0.0]T,q˙0=[0.0,0.0]T\dot q_0 = [0.0,\space 0.0]^Tq˙​0​=[0.0, 0.0]T,qd(0)=[1.0,1.0]Tq_d(0) = [1.0,\space 1.0]^Tqd​(0)=[1.0, 1.0]T,Kp=diag([100,100])K_p = diag([100, \space 100])Kp​=diag([100, 100]),Kd=diag([100,100])K_d = diag([100, \space 100])Kd​=diag([100, 100]),D(q)=[p1+p2+2p3cosq2,p2+p3cosq2;p2+p3cosq2,p2]D\left( q \right) = [p_1+p_2+2p_3cosq_2,\space p_2+p_3cosq_2;\space p_2+p_3cosq_2,\space p_2]D(q)=[p1​+p2​+2p3​cosq2​, p2​+p3​cosq2​; p2​+p3​cosq2​, p2​],C(q,q˙)=[−p3q˙2sinq2,−p3(q˙1+q˙2)sinq2;p3q˙1sinq2,0]C(q,\dot q)=[-p_3\dot q_2 sin q_2,\space -p_3(\dot q_1 + \dot q_2) sin q_2; \space p_3\dot q_1 sin q_2,\space 0]C(q,q˙​)=[−p3​q˙​2​sinq2​, −p3​(q˙​1​+q˙​2​)sinq2​; p3​q˙​1​sinq2​, 0]
编程分析,首先等式(2.1)左右都含有带求解未知数q,所以把等式左右两边都写成S函数求解。等式(2.2)S函数编写分析:左边τ\tauτ当成输出,是个二维向量。右边有两个输入变量q˙,q\dot q,qq˙​,q,其中q˙d,qd\dot q_d,q_dq˙​d​,qd​是常数已知。每个变量又都是二维向量,所以S函数的输入数量 4,输出数量 2,并且输出和输入是有关系的直接反馈参数设置1,其他参数默认。

编写等式(2.2)分析,等式可以改写成:D(q)q¨=τ−C(q,q˙)q˙D\left( q \right)\ddot q = \tau - C(q,\dot q)\dot qD(q)q¨​=τ−C(q,q˙​)q˙​,这个一个矩阵求解:可以写成两种形式:q¨=inv(D(q))∗(τ−C(q,q˙)q˙)\ddot q = inv(D\left( q \right))*\left( \tau - C(q,\dot q)\dot q \right)q¨​=inv(D(q))∗(τ−C(q,q˙​)q˙​)或者q¨=(D(q))\(τ−C(q,q˙)q˙)\ddot q = (D\left( q \right)) \backslash \left( \tau - C(q,\dot q)\dot q \right)q¨​=(D(q))\(τ−C(q,q˙​)q˙​)。第二种求解方法比较快并且精度高,推荐第二种方法求解。由于是个二阶微分方程,且每个变量是二维所以S函数的连续状态变量数是 4,输出分别是变量q,q˙q,\dot qq,q˙​,所以输出变量数也是4,此处的4个输出会作为等式(2.1)的输入,数量必须相同。输入变量是τ\tauτ,所以输入变量数是 2。由于输出函数sys=mdlOutputs(t,x,u)中,sys = x,x是状态变量,输出和输入没有直接关系,所以直接反馈参数理论上应该设置0,但实际上设置1结果也是正确的,由于能力有限暂时不清楚原因。

由于CSND插入MATLAB代码失败所以,把文件压缩上传到CSDN共大家参考。
https://download.csdn.net/download/cswh876908060/12151665
如有问题或者需要代写,代做,指导,请联系QQ:876908060

Matlab S函数求解二阶微分方程或二阶动态方程相关推荐

  1. Matlab S函数求解PD控制的二阶微分或者二阶状态方程

    近几天时间比较充足,便学习一下S函数求解微分方程.其求解方程如下: D(q)q¨+C(q,q˙)q˙+G(q)+ω=τD\left( q \right)\ddot q + C(q,\dot q)\do ...

  2. matlab中dde23求解时滞微分方程

    微分方程求解在工科生这里想必不那么陌生吧,在科研中,求解微分方程是家常便饭.对于微分方程求解,大家首先可能想到的是常用的ode45,ode45适用性很强,不过我这里讲的是dde23. 首先有这么一个时 ...

  3. 齐次弦振动方程的matlab解法,ode45求解振动微分方程

    function dy=order22(t,y);%用积分形式定义函数: dy=zeros(16,1); mc=854.97;mp=745.26;ms=332.69;m1=2135.1;m2=94.2 ...

  4. galerkin有限元法matlab实现,有限元法求解二维Poisson方程的MATLAB实现

    有限元法求解二维Poisson方程的MATLAB实现 陈莲a,郭元辉b,邹叶童a [摘要]文章讨论了圆形区域上的三角形单元剖分.有限元空间,通过变分形式离散得到有限元方程. 用MATLAB编程求得数值 ...

  5. matlab解方程x 2-x-2=0,matlab用三种方法求解二阶微分方程x''+0.2x'=0.4x=0.2u(t),u(t)是单位阶跃函数,初始状态为0...

    问题描述: matlab用三种方法求解二阶微分方程x''+0.2x'=0.4x=0.2u(t),u(t)是单位阶跃函数,初始状态为0 1个回答 分类: 数学 2014-11-28 问题解答: 我来补答 ...

  6. python求函数一二阶导_python:利用多种方式解微分方程(以二阶微分系统零状态响应为例)...

    1.问题:求系统的零状态响应 image.png 2.引入 首先用高数知识求解非齐次常系数微分方程 image.png 再利用信号与系统中冲激响应求解验证 image.png 利用MATLAB求解验证 ...

  7. matlab ode45 二阶微分,matlab关于ode45解二阶微分方程的困惑

    matlab关于ode45解二阶微分方程的困惑 matlab关于ode45解二阶微分方程的困惑 一个二阶微分方程: y''+y'+y=sin(t) 初始条件为y(0)=5,y'(0)=6. 过程: 先 ...

  8. 用四阶龙格库塔法(RK4)求解二阶微分方程

    import math import matplotlib.pyplot as plt# 龙格-库塔法的定义 def runge_kutta(y, h, f):k1 = h * f(t, x1, x2 ...

  9. matlab中solver函数_Matlab中微分方程的模型

    之前一篇已经粗略的介绍了微分方程的解析解,数值解以及简单的模型.下面这篇文章要对微分方程的求数值解进一步讨论,并且提供一些常用的微分方程的模型.(这里参考的是B站清风老师的课程) 数学建模清风第一次直 ...

  10. Python:利用多种方式解微分方程(以二阶微分系统零状态响应为例)

    1.问题:求系统的零状态响应 2.引入 首先用高数知识求解非齐次常系数微分方程 再利用信号与系统中冲激响应求解验证 利用MATLAB求解验证 y=dsolve('D2y+3*Dy+2*y=exp(-t ...

最新文章

  1. 同底数幂比较大小方法_初中数学解题技法19.幂的运算
  2. array用法 numpy_关于Numpy Array的使用技巧整理
  3. C++异常实现与longjmp, setjmp,栈指针EBP, Active Record
  4. 简单了解各种序列化技术-Hessian序列化框架
  5. vue数据双向绑定的原理
  6. Vue+elementUI+springboot+mybatis demo教程(二)
  7. Hadoop 回收站
  8. java 排序stackoverflow_爬取 100 万条 StackOverflow 问答后,我得出的结论!
  9. 使用Hystrix实现自动降级与依赖隔离-微服务
  10. linux Operation not permitted
  11. Atitit 接受post raw数据目录1. 接受get参数 11.1. //req.query只能拿到get参数 //post请求使用 body-parser拿到 12. 原生expre
  12. 分布式ID生成器解决方案
  13. idea设置jsp模板
  14. R语言检验独立性:卡方检验(Chi-square test)和费舍尔Fisher精确检验分析案例报告
  15. 聚焦Java性能优化 打造亿级流量秒杀系统【学习笔记】03_分布式扩展
  16. BM27 按之字形顺序打印二叉树
  17. 阿里云上一键安装lnmp或lamp
  18. 访问修饰符有哪些?及作用范围
  19. ERNIE: 2.0带来了什么
  20. java计算机毕业设计Vue垃圾分类指南平台设计与实现源码+mysql数据库+系统+lw文档+部署

热门文章

  1. 施耐德编程软件Unity Pro XL授权步骤
  2. JS调用OCX控件过程
  3. 桥梁大师BridgeMaster2019带箱梁 USB加密狗发布
  4. Android Studio 添加javah工具
  5. android jni javah,JAVAH找不到类(android ndk)
  6. App 测试工具大全,收藏这篇就够了
  7. comsol通直流电_基于COMSOL仿真的高压直流交联聚乙烯(XLPE)电缆附件设计
  8. 【高速PCB电路设计】2.高速电路DDR原理图概述
  9. 无人驾驶全局路径规划之A星算法
  10. 5G时代|淘宝直播高画质低延时技术探索