想使用fmincon函数优化求微分方程的参数,写完程序之后提示这个错误,大佬们能不能帮我看看哪里错了?

也帮忙看一下我写的程序对不对,有没有有需要改正的地方。

k0=[0.023 0.000613 0.1098 0.00038];

lb=[0 0 0 0];

% ub=[+inf +inf +inf +inf];

x0=[4000000 62166 1044 38364 53793 3311];

load Expdata;

t=Expdata(:,1);

yexp=Expdata(:,[2,5]);

%使用fmincon函数进行参数估计

[k,fval,flag] = fmincon('ObjFunc4Fmincon',k0,[],[],[],[],lb,[],[],[],x0,yexp);

fprintf('\n使用函数fmincon()估计得到的参数值为:\n')

fprintf('\tk1 = %.4f\n',k(1))

fprintf('\tk2 = %.4f\n',k(2))

fprintf('\tk3 = %.4f\n',k(3))

fprintf('\tk4 = %.4f\n',k(4))

fprintf('  The sum of the squares is: %.1e\n\n',fval)

k_fmincon = k;

%---------------------------

function f=ObjFunc4Fmincon(k,x0,yexp)

tsan=[1:82];

[t,x]=ode45(@KineticEqs,tsan,x0,[],k);

y(:,[1,3])=x(:,[2,4]);

y(:,4)=x(:,6);

f=sum((y(:,1)-yexp(:,1)).^2)+((y(:,2)-yexp(:,2)).^2)+((y(:,3)-yexp(:,3)).^2)+((y(:,4)-yexp(:,4)).^2);

end

%----------------------------

function dx/dt=KineticEqs(t,x,k)

dx/dt=[(-(k(1)*x(1)+k(2)*x(2)))

(k(1)*x(1)+k(2)*x(2)-(1/7)*x(2))

((1/7)*x(2)-0.7*x(3)-k(4)*x(3))

(0.7*x(3)-k(3)*x(4)-0.324441133*x(4))

(0.324441133*x(4))

(k(3)*x(4)+k(4)*x(3))

]

end

2020-6-13 17:48 上传

matlab提示的错误

2020-6-13 17:48 上传

KineticEqs函数

2020-6-13 17:48 上传

ObjFunc4Fmincon函数

2020-6-13 17:48 上传

求参实现

位置2处的索引超过边界总数matlab,位置 2 处的索引超出数组边界(不能超出 2)。...相关推荐

  1. Matlab中出现“位置1处的索引超出数组边界(不能超过1)”

    我是一个matlab小白,前几天刚准备学习机器学习的相关知识,但是下面的代码一直提示我"位置1处的索引超出数组边界(不能超过1)". 好像出错在71行的"ans(j,:) ...

  2. boost::safe_numerics模块实现数组索引值可以超出数组边界的测试程序

    boost::safe_numerics模块实现数组索引值可以超出数组边界的测试程序 实现功能 C++实现代码 实现功能 boost::safe_numerics模块实现数组索引值可以超出数组边界的测 ...

  3. c/c++中索引超出数组边界问题

    C/C++没有数组 在其它高级语言里,不管是定义(声明)还是引用, a[i] 或 a[3] 都是一个整体.在 C/C++ 里,却是一个表达式: a[i] 是运算符 [] 连接两个实体 a 和 i . ...

  4. matlab处理数据,提示“提示位置1处的索引超出数组边界。不能超出1”,这该怎么处理呢

  5. 求助:matlab报错:位置 2 处的索引超出数组边界(1)

    代码 clear all; %clc; I=eye(3); K=2; M=eye(3);N=eye(3); qd=[0 0 0]'; qd0=1;%期望四元数 Wd=[0 0 0]';%期望角速度%- ...

  6. matlab报错:位置 2 处的索引超出数组边界(不能超出 3)。

    原因: for i=1:1:a     jieguo_data(i,1)=xingzuo_data(i,1);     jieguo_data(i,2)=xingzuo_data(i,2);     ...

  7. matlab矩阵维度不允许,如何解决索引超过矩阵维度 - MATLAB

    该系统使用两个坐标点生成距离. 工作表1显示每个航点上的坐标,工作表2显示航点的连接. 因此,我需要产生距离,但我一直遇到这个问题; "指数超过矩阵尺寸."我怎么解决这个问题. 以 ...

  8. php 数组大于1,位置 1 的索引超出数组范围(不能超过 1)。

    %清空运行环境 clc clear %速度更新参数 c1 = 1.49445; c2 = 1.49445; maxgen = 300; %最大迭代次数 sizepop = 20; %种群规模数 %个体 ...

  9. MATLAB位置1无法索引,位置 1 的索引超出数组范围(不能超过 1)

    clear clc; N=512; L=512; f1=300;fs=15000; T=1/fs; ws=2*pi*fs; t=(0:1:N-1)*T; x=sin(2*pi*f1*t); y=fft ...

最新文章

  1. 成功案例_网络营销成功案例分析
  2. hdu 1881(简单01背包)
  3. 漫画科普:天线的原理?
  4. 小白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》连载四(场景切换)...
  5. facade-pattern外观模式
  6. 首次披露!阿里线下智能方案进化史
  7. EL表达式用法---查询博客
  8. CSS侦测方法(侦测是否支持某个CSS属性)
  9. 计算机中文无敌版,与电脑下象棋无敌版
  10. jquery获取表单对象
  11. 人脸识别最全知识图谱
  12. 2.3两个列表或元组首尾相连
  13. python中的token是什么
  14. 华为交换机flaping_MAC地址飘移查看及解决方法 一般是网络中存在环路
  15. 【重要通知】定了!全国各地的中小商户扶持政策,都在这了!
  16. 走近Harvest Moon:Moonbeam DeFi狂欢会
  17. AFNetWorking3.0 实现同步请求
  18. 鼠标侧键设置工具X-Mouse安装教程
  19. 2021双十一京东活动脚本
  20. cocos2d-html5 游戏实战源代码大集合和下载(包括flappy,popstar等----持续更新中----)...

热门文章

  1. 【已解决】Ubantu上No package ‘libcrypto‘ found问题
  2. Neo4j图数据库的Cypher 语句总结
  3. 车载VPA形象发展史:谁是第一个吃螃蟹的人?
  4. 游戏开发的HelloWorld,快速入门,新手上路,使用CocosCreator+JS,flyBird(飞翔小鸟)
  5. POJ-1236(有向图强连通分量 + 缩点 + 加边使得整个图强连通)
  6. vue手脚架配置请求头
  7. PostGIS教程十三:地理
  8. offset、scroll、client三大家族
  9. Spring Security 视频教程
  10. #ifdef __cplusplus 倒底是什么意思?