微分方程在matlab中的实现,Matlab微分方程参数优化的Forcal实现

FCC文件

缺省设置:

(XNote=请修改为X轴单位) (YNote=请修改为Y轴单位)

(AutoY=1) (XMin=0) (XMax=1) (YMin=0) (YMax=1)

(BorderPixels=60) (MultiplyX=1) (MultiplyY=1) (Grid=0) (DivideXY=10) (XYNumWidth=3) (DataMax=2)

(ForMax=50) (LoadDll=)

[CODE]

// 通用设置:

// (XNote=请修改为X轴单位) (YNote=请修改为Y轴单位)

// (AutoY=1) (XMin=0) (XMax=30) (YMin=0) (YMax=1)

// (BorderPixels=80) (MultiplyX=1) (MultiplyY=1) (Grid=0) (DivideXY=10)  (XYNumWidth=3) (DataMax=6)

// (ForMax=50) (LoadDll="dll\FcData32W" "dll\XSLSF32W") (DotColor=0) (DotSize=10)

/*[LINE]

(_DataDot0=1,30,0,3,16711680)

(_DataLine0=1,1000,0,0,12615680)

(_DataDot1=1,30,0,3,0)

(_DataLine1=1,1000,0,0,65408)

(_DataDot2=1,30,0,3,16776960)

(_DataLine2=1,1000,0,0,16776960)

(_DataDot3=1,300,0,3,255)

(_DataLine3=1,1000,0,0,255)

(_DataDot4=1,300,0,3,16711935)

(_DataLine4=1,1000,0,0,16711935)

(_DataDot5=1,300,0,3,8388863)

(_DataLine5=1,1000,0,0,8388863)

[LEND]*/

// [BODY]

//这里是代码窗口,请将Forcal代码写在下面

i: OutVector(p:k,i)= k=FCDLen(p),printff{"\r\n"},i=0,(i

{"\r\n"};    //输出一维数组

!using["XSLSF"]; //使用命名空间XSLSF

f(t,x,y,z,dx,dy,dz::p1,p2,p3)={ //函数定义,连分式法对微分方程组积分一步函数pbs1中要用到

dx=p1*(20-x)+p2*(p3-x),

dy=p1*(x-y)+p2*(p3-y),

dz=p1*(y-z)+p2*(p3-z)

};

t_i_2(hf,a,step,eps,t1,t2,x_1,x_2,x_3:x1,x2,x3,h,i)=    //用于计算目标函数

{

h=(t2-t1)/step,

{   pbs1[hf,t1,a,h,eps],  //连分式法对微分方程组积分一步函数pbs1,hf为函数f的句柄

t1=t1+h

}.until[abs(t1-t2)

a.getra(0,&x1,&x2,&x3),

(x1-x_1)^2+(x2-x_2)^2+(x3-x_3)^2

};

J(_p1,_p2,_p3 : t1,s,i : hf,Array,step,eps,p1,p2,p3,数据)={    //目标函数定义

p1=_p1,p2=_p2,p3=_p3,

t1=0, Array.setra(0,10,15,20),

s=0,i=0,

(i<30).while{

s=s+t_i_2[hf,Array,step,eps: &t1, 数据.getrai(i,0) : 数据.getrai(i,1),  数据.getrai(i,2),  数据.getrai(i,3)],

i++

},

s

};

验证(_p1,_p2,_p3 : t1,s1,s2,s3,i max: hf,Array,step,eps,p1,p2,p3,数据)={    //验证函数定义

p1=_p1,p2=_p2,p3=_p3,

t1=0, Array.setra(0,10,15,20),

i=0, printff{"\r\n    No                目标x                  计算x                 目标y                 计算y                 目标z                 计算z\r\n\r\n"},

(i<30).while{

t_i_2[hf,Array,step,eps: &t1, 数据.getrai(i,0) : 数据.getrai(i,1),  数据.getrai(i,2),  数据.getrai(i,3)],

Array.getra(0,&s1,&s2,&s3),

printff{"{1,r,6.3}{2,r,22.16}{3,r,22.16}{4,r,22.16}{5,r,22.16}{6,r,22.16}{7,r,22.16}\r\n",数据.getrai(i,0),数据.getrai(i,1),s1,数据.getrai(i,2),s2,数据.getrai(i,3),s3},

i++

},

//将理论数据保存到3、4、5号缓冲区

max=300,

SetDataLen(3,max),SetDataLen(4,max),SetDataLen(5,max),

i=1,t1=0, Array.setra(0,10,15,20),SetDatai(3,0,0,10),SetDatai(4,0,0,15),SetDatai(5,0,0,20),

(i

t_i_2[hf,Array,step,eps: &t1, i/10 : 0,  0,  0],

Array.getra(0,&s1,&s2,&s3),

SetDatai(3,i,i/10,s1),SetDatai(4,i,i/10,s2),SetDatai(5,i,i/10,s3),

i++

}

};

main(:d,u,v,x,_eps,k,xx,g,i,s1,s2,s3:hf,Array,step,eps,数据)=

{

hf=HFor("f"),                                //模块变量hf保存函数f的句柄,预先用函数HFor获得该句柄

数据=new[rtoi(real_s),rtoi(30),rtoi(4),rtoi(EndType),

1, 11.80, 15.37, 20.77,

2, 14.04, 17.04, 22.23,

3, 15.44, 16.85, 21.16,

4, 17.80, 18.07, 22.49,

5, 18.60, 19.43, 24.46,

6, 19.22, 20.12, 23.58,

7, 21.77, 21.83, 24.51,

8, 22.17, 22.11, 25.38,

9, 23.41, 23.37, 25.53,

10, 23.17, 24.92, 26.69,

11, 24.56, 25.55, 29.21,

12, 25.85, 26.06, 28.00,

13, 24.64, 28.94, 30.32,

14, 25.15, 28.94, 30.41,

15, 26.92, 30.06, 31.87,

16, 26.37, 29.29, 31.87,

17, 26.71, 31.48, 34.60,

18, 26.61, 31.86, 33.57,

19, 27.13, 33.84, 36.75,

20, 29.32, 32.95, 36.36,

21, 28.24, 33.03, 36.23,

22, 28.42, 32.50, 36.01,

23, 28.11, 33.12, 39.19,

24, 28.98, 35.32, 37.29,

25, 30.23, 35.56, 37.79,

26, 30.21, 34.86, 42.05,

27, 29.11, 35.40, 42.67,

28, 30.42, 36.20, 40.74,

29, 28.84, 35.91, 40.53,

30, 29.44, 36.50, 43.33

],

Array=new[rtoi(real_s),rtoi(45)],            //申请工作数组

step=30,eps=1e-7,                            //积分步数step越大,积分精度eps越小越精确,用于对微分方程组积分一步函数pbs1

x=new[rtoi(real_s),rtoi(4)],                 //申请工作数组

xx=new[rtoi(real_s),rtoi(3),rtoi(4)],        //申请工作数组

g=new[rtoi(real_s),rtoi(4)],                 //申请工作数组

_eps=1e-100, d=1,u=1.6,v=0.4,k=800,           //变换d、u、v进一步求解,k为允许的最大迭代次数

i=jsim[HFor("J"),d,u,v,x,_eps,k,xx,g],       //求n维极值的单形调优法

printff{"\r\n实际迭代次数={1,r}\r\n",i},     //输出实际迭代次数

OutVector[x],                                //输出最优参数值及目标函数终值

x.getra(0,&s1,&s2,&s3),

验证[s1,s2,s3],

delete[x],delete[xx],delete[g],delete[Array],delete[数据] //销毁申请的对象

};

SetData{0, //导入的数据保存在0号缓冲区

1, 11.80,

2, 14.04,

3, 15.44,

4, 17.80,

5, 18.60,

6, 19.22,

7, 21.77,

8, 22.17,

9, 23.41,

10, 23.17,

11, 24.56,

12, 25.85,

13, 24.64,

14, 25.15,

15, 26.92,

16, 26.37,

17, 26.71,

18, 26.61,

19, 27.13,

20, 29.32,

21, 28.24,

22, 28.42,

23, 28.11,

24, 28.98,

25, 30.23,

26, 30.21,

27, 29.11,

28, 30.42,

29, 28.84,

30, 29.44

};

_DataDot0(mod,x)=GetData(0,mod,&x); //绘制数据点

_DataLine0(x)=GetData(0,2,x); //绘制数据线

SetData{1, //导入的数据保存在1号缓冲区

1,  15.37,

2, 17.04,

3,  16.85,

4,  18.07,

5,  19.43,

6,  20.12,

7,  21.83,

8, 22.11,

9,  23.37,

10,  24.92,

11,  25.55,

12,  26.06,

13,  28.94,

14, 28.94,

15, 30.06,

16,  29.29,

17, 31.48,

18,  31.86,

19, 33.84,

20,  32.95,

21,  33.03,

22,  32.50,

23,  33.12,

24, 35.32,

25,  35.56,

26,  34.86,

27,  35.40,

28,  36.20,

29, 35.91,

30,  36.50

};

_DataDot1(mod,x)=GetData(1,mod,&x); //绘制数据点

_DataLine1(x)=GetData(1,2,x); //绘制数据线

SetData{2, //导入的数据保存在1号缓冲区

1,  20.77,

2,  22.23,

3,  21.16,

4, 22.49,

5,  24.46,

6,  23.58,

7, 24.51,

8,  25.38,

9,  25.53,

10,  26.69,

11, 29.21,

12, 28.00,

13,  30.32,

14,  30.41,

15,  31.87,

16, 31.87,

17,  34.60,

18,  33.57,

19,  36.75,

20,  36.36,

21, 36.23,

22, 36.01,

23,  39.19,

24,  37.29,

25,  37.79,

26,  42.05,

27, 42.67,

28,  40.74,

29,  40.53,

30,  43.33

};

_DataDot2(mod,x)=GetData(2,mod,&x); //绘制数据点

_DataLine2(x)=GetData(2,2,x); //绘制数据线

_DataDot3(mod,x)=GetData(3,mod,&x); //绘制理论数据点

_DataLine3(x)=GetData(3,2,x); //绘制理论数据线

_DataDot4(mod,x)=GetData(4,mod,&x); //绘制理论数据点

_DataLine4(x)=GetData(4,2,x); //绘制理论数据线

_DataDot5(mod,x)=GetData(5,mod,&x); //绘制理论数据点

_DataLine5(x)=GetData(5,2,x); //绘制理论数据线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用命令

1.在控制台下关闭Java进程&#xff1a;taskkill /f /im java.exe转载于:https://www.cnblogs.com/super90/p/5133906.html

一、在windows环境下修改pip镜像源的方法(以python3为例)

在windows环境下修改pip镜像源的方法(以python3为例) 1.在windows文件管理器中,输入 %APPDATA% 2.会定位到一个新的目录下&#xff0c;在该目录下新建pip文件夹&#xff0c;然后到pip文件夹里面去新建个pip.ini文件 3.在新建的pip.ini文件中输入以下内容&#xff0c;搞定 [glob…

得到选择框句柄 怎么操作_电脑版微信怎么多开?最简单的三种电脑版微信多开教程...

​在现实中的我们在网络上却又很多张脸&#xff0c;多开微信很多人都是需要的&#xff0c;这里就介绍3个方法给大家多开。方法1&#xff1a;BAT文件鼠标右键单击微信图标选择 属性在属性选项夹内复制 “目标”例如我的是("D:Program Files (x86)TencentWeChatWeChat.exe&q…

php起始符大全,PHP 符号大全

注解符号:// 单行注解/* */ 多行注解引号的使用’ ’ 单引号,没有任何意义,不经任何处理直接拿过来;" "双引号,php动态处理然后输出,一般用于变量.变量形态:一种是True 即 真的;另一种是False 即假的常见变量形态:string 字串(数字\汉字\等等)int…

关于tomcat内路径跳转的一些思考

初学jspservlet时经常碰上的几个错误&#xff1a;404、路径正确但页面没有任何内容、样式和图片丢失。这几个错误曾经让我在debug时头大&#xff0c;现在总结一下&#xff0c;其实它们都跟路径有关&#xff0c;正是因为没有处理好路径跳转的问题&#xff0c;才引发了这一连串的…

Filter责任链模式

Filter责任链的创建 org.apache.catalina.core.ApplicationFilterFactory#createFilterChain, 此方法是被org.apache.catalina.core.StandardWrapperValve#invoke调用的, 对每个request都会创建FilterChain public static ApplicationFilterChain createFilterChain(ServletR…

python中的类装饰器应用场景_这是我见过最全面的Python装饰器教程了!

装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。在程序开发中经常使用到的功能&#xff0c;合理使用装饰器&#xff0c;能让我们的程序如虎添翼。1. 函数名应用 函数名是什么…

对于个人(注册表)与团队(团队表)(两张表没有关联)的展示与可空判断

对于个人&#xff08;注册表&#xff09;与团队(团队表)&#xff08;两张表没有关联&#xff09;的展示与可空判断 1&#xff0c;在Model中只有GroupId没有名称&#xff08;GroupName&#xff09;,所以自己定义一个&#xff1a; /// <summary>/// RegistratorMessage 界面…

macos sierra 引导镜像_真想不到,在win10上可以制作苹果macOS启动U盘

不管你使用的是macOS还是Windows10&#xff0c;电脑出现启动问题是很正常的&#xff0c;原因有很多种&#xff0c;包括(但不限于)文件损坏、硬件故障和错误更新等。如果意外发生在苹果电脑上&#xff0c;可以使用带有安装文件的macOS启动U盘来修复它。这正是在电脑正常工作时应…

搜索引擎使用技巧

一.基本使用 双引号 代表完全匹配搜索&#xff0c;也就是说搜索结果返回的页面包含双引号中出现的所有的词&#xff0c;连顺序也必须完全匹配。bd和Google 都支持这个指令。 例如&#xff1a; “javar高性能程序开发” 减号 代表搜索不包含减号后面的词的页面。使用这个指令时减…

python(1) - 数据类型和变量

数据类型&#xff1a; 整数&#xff1a;就是整数&#xff0c;包括正整数&#xff0c;0&#xff0c;负整数 浮点数&#xff1a; 通俗点说&#xff0c;就是小数 长整数&#xff1a; 就是比较长的整型&#xff0c;通常后面会跟一个L 字符串&#xff1a; 字符串需要用“”或’’括起…

powershell awk_谈谈 PowerShell

万事万物&#xff0c;有始有终。直从萌芽拔&#xff0c;高自毫末始。所谓的 Shell&#xff0c;无非是应用程序与操作系统内核进行交互的一个中间程序而已。我本人玩电脑也有很久一阵子了&#xff0c;最开始接触到的就是Windows 7 操作系统&#xff0c;当时 Windows 7 上市不久&…

设计模式之: 装饰器模式

什么是装饰器模式 作为一种结构型模式, 装饰器(Decorator)模式就是对一个已有结构增加"装饰".适配器模式, 是为现在有结构增加的是一个适配器类,.将一个类的接口&#xff0c;转换成客户期望的另外一个接口.适配器让原本接口不兼容的类可以很好的合作.装饰器模式是将一…

python七段数码管的详解,Python入门基础:七段数码管绘制

1.在学习Python的过程中&#xff0c;运用所学的一些基础知识&#xff0c;进行一些简单的编程&#xff0c;可以收获很多乐趣。在生活中&#xff0c;LED灯无处不在&#xff0c;荧幕显示的广告词&#xff0c;给我们呈现出动态的视觉效果。下面&#xff0c;则以最简单的显示日期为例…

@class

使用格式class 类名; class写在.h文件里&#xff0c;import写在.m文件里。这样可以提高编译效率 import会在导入文件发生变化时重新拷贝编译&#xff0c;而class只会告诉使用者有这个类&#xff0c;并不会去拷贝。 场景1 使用import&#xff1a;a拷贝b&#xff0c;b拷贝c&#…

python图标的演变_Python3 生成icon图标

首先安装所使用的库 pillow&#xff0c; pillow 是用来取代 PIL 的&#xff0c; pip3 install pillow 安装成功图&#xff1a;A866FFD7-2283-4BFB-8313-DBDEE909A579.png 简单的代码&#xff1a; from __future__ import print_function import os, sys from PIL import Image …

IDEA 热部署 仅支持jdk1.6,1.7

第一安装 dcevm 下载地址http://ssw.jku.at/dcevm/binaries/ java -jar dcevm-0.2-win.jar &#xff0c;选择需要安装该补丁的jdk&#xff0c;点击按钮Install即可 第二&#xff1a;IDEA 在Debug模式下运行&#xff0c;这时随便修改文件&#xff0c;自动发布到tomcat中 超级快…

php中perl配置,Windows下 Apache、PHP和Perl的安装配置

在安装AWStats7.0和 JAWStats之前需要配置其环境&#xff0c;而运行AWStats需要perl支持&#xff0c;运行JAWStats需要PHP支持&#xff0c;这篇文章将具体介绍其环境的安装配置。环境Windows 2003Apache2.2Per5.12lPHP5(开源)Apache&#xff1a;http://httpd.apache.org/Perl&a…

Android常用的一些make命令(转载)--不错

原文网址&#xff1a;http://blog.sina.com.cn/s/blog_abc7e49a01011y0n.html 1.make -jXX XX表示数字&#xff0c;这个命令将编译Android系统并生成镜像&#xff0c;XX表示可以使用到的CPU核数&#xff0c;这在配置好的电脑上特别有用&#xff0c;公司的16核ubuntu服务器执行…

arraylist 初始化_ArrayList(JDK1.8)源码解析

既然是看源码&#xff0c;那我们要怎么看一个类的源码呢&#xff1f;这里我推荐的方法是&#xff1a;1)看继承结构看这个类的层次结构&#xff0c;处于一个什么位置&#xff0c;可以在自己心里有个大概的了解。2)看构造方法在构造方法中&#xff0c;看做了哪些事情&#xff0c;…