Matlab S函数求解二阶微分方程或二阶动态方程
近几天没事,开始学习一下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τ=Kde˙+Kpe (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+2p3cosq2, p2+p3cosq2; p2+p3cosq2, 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˙)=[−p3q˙2sinq2, −p3(q˙1+q˙2)sinq2; p3q˙1sinq2, 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函数求解二阶微分方程或二阶动态方程相关推荐
- Matlab S函数求解PD控制的二阶微分或者二阶状态方程
近几天时间比较充足,便学习一下S函数求解微分方程.其求解方程如下: D(q)q¨+C(q,q˙)q˙+G(q)+ω=τD\left( q \right)\ddot q + C(q,\dot q)\do ...
- matlab中dde23求解时滞微分方程
微分方程求解在工科生这里想必不那么陌生吧,在科研中,求解微分方程是家常便饭.对于微分方程求解,大家首先可能想到的是常用的ode45,ode45适用性很强,不过我这里讲的是dde23. 首先有这么一个时 ...
- 齐次弦振动方程的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 ...
- galerkin有限元法matlab实现,有限元法求解二维Poisson方程的MATLAB实现
有限元法求解二维Poisson方程的MATLAB实现 陈莲a,郭元辉b,邹叶童a [摘要]文章讨论了圆形区域上的三角形单元剖分.有限元空间,通过变分形式离散得到有限元方程. 用MATLAB编程求得数值 ...
- 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 问题解答: 我来补答 ...
- python求函数一二阶导_python:利用多种方式解微分方程(以二阶微分系统零状态响应为例)...
1.问题:求系统的零状态响应 image.png 2.引入 首先用高数知识求解非齐次常系数微分方程 image.png 再利用信号与系统中冲激响应求解验证 image.png 利用MATLAB求解验证 ...
- matlab ode45 二阶微分,matlab关于ode45解二阶微分方程的困惑
matlab关于ode45解二阶微分方程的困惑 matlab关于ode45解二阶微分方程的困惑 一个二阶微分方程: y''+y'+y=sin(t) 初始条件为y(0)=5,y'(0)=6. 过程: 先 ...
- 用四阶龙格库塔法(RK4)求解二阶微分方程
import math import matplotlib.pyplot as plt# 龙格-库塔法的定义 def runge_kutta(y, h, f):k1 = h * f(t, x1, x2 ...
- matlab中solver函数_Matlab中微分方程的模型
之前一篇已经粗略的介绍了微分方程的解析解,数值解以及简单的模型.下面这篇文章要对微分方程的求数值解进一步讨论,并且提供一些常用的微分方程的模型.(这里参考的是B站清风老师的课程) 数学建模清风第一次直 ...
- Python:利用多种方式解微分方程(以二阶微分系统零状态响应为例)
1.问题:求系统的零状态响应 2.引入 首先用高数知识求解非齐次常系数微分方程 再利用信号与系统中冲激响应求解验证 利用MATLAB求解验证 y=dsolve('D2y+3*Dy+2*y=exp(-t ...
最新文章
- 同底数幂比较大小方法_初中数学解题技法19.幂的运算
- array用法 numpy_关于Numpy Array的使用技巧整理
- C++异常实现与longjmp, setjmp,栈指针EBP, Active Record
- 简单了解各种序列化技术-Hessian序列化框架
- vue数据双向绑定的原理
- Vue+elementUI+springboot+mybatis demo教程(二)
- Hadoop 回收站
- java 排序stackoverflow_爬取 100 万条 StackOverflow 问答后,我得出的结论!
- 使用Hystrix实现自动降级与依赖隔离-微服务
- linux Operation not permitted
- Atitit 接受post raw数据目录1. 接受get参数 11.1. //req.query只能拿到get参数 //post请求使用 body-parser拿到 12. 原生expre
- 分布式ID生成器解决方案
- idea设置jsp模板
- R语言检验独立性:卡方检验(Chi-square test)和费舍尔Fisher精确检验分析案例报告
- 聚焦Java性能优化 打造亿级流量秒杀系统【学习笔记】03_分布式扩展
- BM27 按之字形顺序打印二叉树
- 阿里云上一键安装lnmp或lamp
- 访问修饰符有哪些?及作用范围
- ERNIE: 2.0带来了什么
- java计算机毕业设计Vue垃圾分类指南平台设计与实现源码+mysql数据库+系统+lw文档+部署