目录

前言

一、数学模型

二、算法介绍-四阶龙格库塔法(RUNGE-KUTTA)

三、VB编程

1.编译环境:VB6.0

2.新建工程

3.主程序

4.子函数

5.运行验证

总结


前言

课程探究:连续系统的数值积分,选择合适的编程语言与环境对数学模型进行仿真,求解结果。

连续系统仿真步骤:

1  建立数学模型:微分方程、状态方程、传递函数

2  建立仿真模型:选择仿真算法,将数学模型转化为仿真模型

3  编写运行程序:选择某种语言,写出计算机仿真程序,进行运行,获得仿真结果

一、数学模型

根据前一篇文章的数学模型

不懂级并串的参考上一篇文章:级联、串联、并联求传递函数的方框图和状态方程

二、算法介绍-四阶龙格库塔法(RUNGE-KUTTA)

省略推导公式,直接给出龙格库塔公式:

其中,h为求解步长。

三、VB编程

1.编译环境:VB6.0

2.新建工程

新建CommandButton和Textbox

双击“Command1”,写程序

3.主程序

Private Sub Command1_Click()
Dim h As Single
Dim t As Single
Dim I As Integer
h = 0.1
'h是步长0.1
t = 0
For I = 1 To 200
'I 仿真200步
t = t + h
k11 = h * f1(x1, x2, x3, x4, t)
k21 = h * f2(x1, x2, x3, x4, t)
k31 = h * f3(x1, x2, x3, x4, t)
k41 = h * f4(x1, x2, x3, x4, t)k12 = h * f1(x1 + k11 / 2, x2 + k21 / 2, x3 + k31 / 2, x4 + k41 / 2, t + h / 2)
k22 = h * f2(x1 + k11 / 2, x2 + k21 / 2, x3 + k31 / 2, x4 + k41 / 2, t + h / 2)
k32 = h * f3(x1 + k11 / 2, x2 + k21 / 2, x3 + k31 / 2, x4 + k41 / 2, t + h / 2)
k42 = h * f4(x1 + k11 / 2, x2 + k21 / 2, x3 + k31 / 2, x4 + k41 / 2, t + h / 2)k13 = h * f1(x1 + k12 / 2, x2 + k22 / 2, x3 + k32 / 2, x4 + k42 / 2, t + h / 2)
k23 = h * f2(x1 + k12 / 2, x2 + k22 / 2, x3 + k32 / 2, x4 + k42 / 2, t + h / 2)
k33 = h * f3(x1 + k12 / 2, x2 + k22 / 2, x3 + k32 / 2, x4 + k42 / 2, t + h / 2)
k43 = h * f4(x1 + k12 / 2, x2 + k22 / 2, x3 + k32 / 2, x4 + k42 / 2, t + h / 2)k14 = h * f1(x1 + k13, x2 + k23, x3 + k33, x4 + k43, t + h)
k24 = h * f2(x1 + k13, x2 + k23, x3 + k33, x4 + k43, t + h)
k34 = h * f3(x1 + k13, x2 + k23, x3 + k33, x4 + k43, t + h)
k44 = h * f4(x1 + k13, x2 + k23, x3 + k33, x4 + k43, t + h)x1 = x1 + (k11 + 2 * k12 + 2 * k13 + k14) / 6
x2 = x2 + (k21 + 2 * k22 + 2 * k23 + k24) / 6
x3 = x3 + (k31 + 2 * k32 + 2 * k33 + k34) / 6
x4 = x4 + (k41 + 2 * k42 + 2 * k43 + k44) / 6Next I
Text1.Text = x4
End Sub

4.子函数

要计算传递函数的结果,需要将其转化为状态方程,子函数是根据状态方程编写的。

级联法函数

Function f1(x1, x2, x3, x4, t As Single)
f1 = 1 - 7 * x1 - 14 * x2 - 8 * x3
End FunctionFunction f2(x1, x2, x3, x4, t As Single)
f2 = x1
End FunctionFunction f3(x1, x2, x3, x4, t As Single)
f3 = x2
End FunctionFunction f4(x1, x2, x3, x4, t As Single)
f4 = 2 * x2 + 6 * x3
End Function

串联法函数

Function f1(x1, x2, x3, x4, t As Single)
f1 = u - x1
End FunctionFunction f2(x1, x2, x3, x4, t As Single)
f2 = 1 + 2 * x1 - 2 * x2
End FunctionFunction f3(x1, x2, x3, x4, t As Single)
f3 = 2 * x2 - 4 * x3
End FunctionFunction f4(x1, x2, x3, x4, t As Single)
f4 = x3
End Function

并联法函数

Function f1(x1, x2, x3, x4, t As Single)
f1 = 1 - x1
End FunctionFunction f2(x1, x2, x3, x4, t As Single)
f2 = 1 - 2 * x2
End FunctionFunction f3(x1, x2, x3, x4, t As Single)
f3 = 1 - 4 * x3
End FunctionFunction f4(x1, x2, x3, x4, t As Single)
f4 = 4 / 3 * x1 - x2 - 1 / 3 * x3
End Function

5.运行验证

令u=1,即上述子函数中的“1”。

级联结果

串联结果

并联结果

三种方法所得结果相似,侧面证明程序编写正确。

读者可以验证u=t时的不同结果

总结

当遇到写代码无从下手时,可以考虑查询相关算法的例程,相互对照进行借鉴。例如我在其他帖子上看到了用四阶龙格库塔法求一阶微分方程的例子,只有一个未知数,所以用一次5个公式就好了。而本例有4个未知数,所以用5*4=20个公式,以此类推。

零基础学VB6.0仿真:用四阶龙格库塔法计算传递函数状态方程的结果相关推荐

  1. 零基础学浙大翁恺C语言(2):计算

    零基础学C语言(2):计算 C语言做整数加法计算 在程序框架内输入printf("%d",12+34) ; 代表将12+34得到的整数结果要输入到%d这个位置. # include ...

  2. proteus仿真micropython_【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行...

    1.hello micropython #MicroPython动手做(04)--零基础学MaixPy之基本示例 #程序之一:hellomicropython #MicroPython动手做(04)- ...

  3. proteus仿真micropython_【雕爷学编程】MicroPython动手做(07)——零基础学MaixPy之机器视觉...

    机器视觉 machine vision 机器视觉是人工智能正在快速发展的一个分支.机器视觉作为生产过程中关键技术之一,在机器或者生产线上,机器视觉可以检测产品质量以便将不合格的产品剔除,或者指导机器人 ...

  4. 0基础学python看什么书-零基础学python编程需要看什么书?

    原标题:零基础学python编程需要看什么书? 随着互联网迅速发展,python也呈现出水涨船高的态势.近年来,python在编程语言中一直名列前茅.编程初学者纷纷选择Python作为第一语言.Pyt ...

  5. 0基础学python要多久-零基础学Python的过程有多难?需要多久?

    Python是一门简单高效,应用范围广泛的计算机语言.先我们要知道Python已经算是一门相对其他编程语言而言,最适合零基础新手学习的开发语言,换句话说,如果连Python都学不进去就不要考虑进入IT ...

  6. 0基础学python需要多长时间_零基础学python大概要多久

    如果是自学的话,零基础学python大概要花一年到一年半的时间.每个人的资质不同.理解能力不同,所以花费的时间也不一样.建议零基础的学员报一个python培训班,这样可以有规划的系统性学习,而且花费的 ...

  7. 零基础学模拟电路--1.认识运算放大器

    零基础学模拟电路–1.认识运算放大器 写在前面: 本人也是一名学生,现在在宿舍里没事,突发奇想有了写文章的打算.我想把自己在实验室里学习的知识记录下来,一方面是防止自己之后忘记.同时温故而知新,另一方 ...

  8. [零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[JDBC](1)

    MIS信息管理系统实战开发之使用MySQL实现保存 开发背景 ID.姓名.年龄为公共信息,而学生有成绩,工人有工资 定义一个抽象类Person(ID.姓名.年龄),学生是其子类,有成绩,工人是其子类有 ...

  9. 零基础学caffe源码 ReLU激活函数

    零基础学caffe源码 ReLU激活函数 原创 2016年08月03日 17:30:19 1.如何有效阅读caffe源码 1.caffe源码阅读路线最好是从src/cafffe/proto/caffe ...

  10. python入门到精通需要学多久-廖雪峰python教程要学多久-零基础学Python需要多久...

    零基础学python大约需要多久 看不同的人,不同的学习能和基础. 像我通java,vc ,javascript,groovy,vb,c 接触过c#,delphi,asp,E语言, 用过dreamwa ...

最新文章

  1. 第11章 AOF持久化
  2. iOS开发中乱用hook可能导致灾难
  3. Java Review - 并发编程_PriorityBlockingQueue原理源码剖析
  4. Springboot starter开发之traceId请求日志链路追踪
  5. Oracle JDE 系统架构总结..
  6. contos7 方舟私服搭建
  7. 怎样使用计算机的桌面助手,win10系统有一个360桌面助手如何使用
  8. axios请求失败,如何获取接口返回的状态码及错误信息
  9. 计算机硬盘如何制作成移动硬盘,电脑拆出来的闲置硬盘别扔 这么做帮你把它变成移动硬盘...
  10. 微信隐藏功能系列:微信朋友圈三天可见怎么设置?
  11. 【openGL基础系列】之画一个正方体玩玩吧
  12. java基于ssm的在线装机DIY系统的分析与设计
  13. 印度网站前50名都是做什么的
  14. 使用VS Code通过Markdown语法快速画流程图时序图等
  15. 前端学习——JSON格式详解
  16. 流星雨html5,HTML5-流星雨
  17. 计算机中顺序结构,2.逻辑结构(一):顺序结构
  18. 调用腾讯优图OCR手写体文字识别接口
  19. 任天堂媒体峰会召开,众多新作现场试玩
  20. Android Studio导入项目提示“Unrecognized Android Studio”

热门文章

  1. matlab求两向量夹角_10373 高中立体几何向量法全攻略
  2. 用指纹解锁数据!云盒子企业网盘,新增指纹认证功能
  3. 2.4G无线模块(NRF24L01)学习(2)——单片机互相控制LED灯
  4. 微信小程序开发工作流程
  5. sql之分组TOPN
  6. android的otg功能,怎么打开手机OTG功能?
  7. Windows提权—进程注入、Unattended Installs提权
  8. git中的origin
  9. 3个快速将Word转换成PDF的方法
  10. 电子计算机的两个重要改进是,1946年,冯.诺依曼在研制EDVAC计算机时,提出的两个重要改进是什么?...