matlab中ode45如何设置,如何使用Matlab中的ode45修正赋值错误(ode45函数的第488行)
我正在写一个脚本
ode45
为了整合
卫星在火星附近双曲线轨道上的运动方程
.
我需要整合地球上的整个通道:从SOI半径开始(
576000km
)向行星前进,然后穿过大气层直到卫星到达
opposite
“大气边界(设置在
250km
从表面)。
当它接收到输入A时
tspan
比大约高
200000
秒(我需要大约
400000
秒),Matlab给出了以下信息:
'无法执行分配,因为左侧的大小为
4乘2,右边的尺寸是4乘5。
error happens in line 488 of Ode45
.
我搜索了一些类似的案例,但找不到任何东西,也不知道如何使用
条件断点
在一个复杂的函数上计算出一些东西,如ode45。我也尝试了不同的选择
odeset
“但没什么变化。我不知道错误可能在哪里。
这是脚本,其中我使用两个附加函数来获取一些参数:
Vinf=[2.7 4 6 8];
mu_m=42828;
R_msoi=.576e6;
[afas,efas,pfas]=parasint(Vinf);
an_vera0=zeros(1,length(Vinf));
Vr0=zeros(1,length(Vinf));
Vt0=zeros(1,length(Vinf));
for j=1:length(Vinf)
c_tstar0=(1/efas(j))*((pfas(j)/R_msoi)-1);
an_vera0(j)=-acos(c_tstar0);
s_tstar0=sin(an_vera0(j));
Vr0(j)=sqrt(mu_m/pfas(j))*efas(j)*s_tstar0;
Vt0(j)=sqrt(mu_m/pfas(j))*(1+efas(j)*c_tstar0);
end
ti=time(an_vera0,efas,afas,mu_m);
for n=1:length(ti)
I=(0:3600:ti(n));
options=odeset('Vectorized','on','RelTol',1e-8,'AbsTol',1e-9);
[t,Y]=ode45(@(t,y) eqMotoCur(t,y),I,y0,options);
end
这是“
parasint
“功能:
function [afas,efas,pfas]=parasint(Vinf)
mu_m=42828;
R_m=3396.2;
Rp0=R_m+400;
Rpf=R_m+50;
a0=zeros(1,length(Vinf));
e0=zeros(1,length(Vinf));
p0=zeros(1,length(Vinf));
afas=zeros(1,length(Vinf));
efas=zeros(1,length(Vinf));
pfas=zeros(1,length(Vinf));
for j=1:length(Vinf)
a0(j)=(-mu_m)/(Vinf(j)^2);
e0(j)=1-Rp0/a0(j);
p0(j)=a0(j)*(1-e0(j)^2);
c(1)=p0(j);
c(2)=Rpf*(1-e0(j)^2);
c(3)=Rpf*(1-e0(j)^2)-p0(j);
Efas=roots(c);
ind=(Efas>1 & isreal(Efas));
efas(j)=Efas(ind);
afas(j)=Rpf/(1-efas(j));
pfas(j)=afas(j)*(1-efas(j)^2);
end
这是“
time
“功能:
function [ti] = time(an_vera0,efas,afas,mu_m)
ti=zeros(1,length(an_vera0));
for j=1:length(an_vera0)
F=2*atanh(sqrt((efas(j)-1)/(efas(j)+1))*tan(an_vera0(j)/2));
T=sqrt((-afas(j))^3/mu_m)*(efas(j)*sinh(F) - F);
ti(j)=-2*T;
end
这是ODE45的输入功能:
function [dydt] = eqMotoCur(t,y)
R_m=3396.2;
mu_m=42828;
Cd=2.2;
S=7.065e-6;
m=3699.046;
wE=0.24117/R_m;
if abs(y(1))>R_m+250 && y(3)>0
dydt(1:4)=0;
else
dydt=zeros(4,1);
dydt(1)=y(3);
dydt(2)=y(4)/y(1);
dydt(3)=(-mu_m/(y(1)^2))+((y(4)^2)/y(1))-(.5*Cd)*(S/m)*...
(dens(y(1)-R_m))*(sqrt((y(3)^2)+(y(4)-(wE*y(1)))^2))*y(3);
dydt(4)=-(y(4)*(y(3)/y(1)))-(.5*Cd)*(S/m)*...
(dens(y(1)-R_m))*(sqrt((y(3)^2)+(y(4)-(wE*y(1)))^2))*...
(y(4)-(wE*y(1)));
end
end
这是“
dens
“通过大气插入数据的功能:
function [rho] = dens(z)
load Density.mat h d
d=d*10^9;
if any(h)==abs(z)
j=h==abs(z);
rho=d(j);
elseif abs(z)<250
c_tot=(find(h>=abs(z)));
c=c_tot(1);
H=-(h(c)-h(c-1))/(log(d(c)/d(c-1)));
rho=d(c-1)*exp(-(abs(z)-h(c-1))/H);
else
rho=0;
end
end
这是Matlab给出的错误:
无法执行分配,因为左侧的大小为
4×2,右侧尺寸为4×5。
中的错误
ode45 (line 488)
yout(:,idx) = yout_new
;
中的错误
MainCur (line 59)
[t,Y]=ode45(@(t,y) eqMotoCur(t,y),I,y0,options)
;
提前谢谢。
matlab中ode45如何设置,如何使用Matlab中的ode45修正赋值错误(ode45函数的第488行)相关推荐
- 如题,如何在IDEA的settings属性中,通过设置快捷键实现字符串中的英文字母转大小写?
如题,如何在IDEA的settings属性中,通过设置快捷键实现字符串中的英文字母转大小写? Ctrl + Shift+u
- matlab 表格的颜色设置,如何根据表格中的数据修改合适的单元格颜色(在Matlab中)?...
如果您阅读讨论 carefully,您会发现 UITABLE支持HTML内容-- 这是一个例子: X = rand(100,2); %# convert matrix of numbers to ce ...
- php中全局变量如何设置,如何在php中声明全局变量?
我有这样的代码: $a="localhost"; function body(){ global $a; echo $a; } function head(){ global $a ...
- html中auto是设置什么的,css中margin:auto什么意思?margin:auto属性的用法详解
我们都知道使用margin:auto可以让元素水平居中的.但你有没有想过使用margin:auto可以让元素水平居中的原因,要回答这个问题,我们首先需要看一下margin:auto的工作原理.auto ...
- 在MATLAB中采用M文件实现对Simulink中的S函数程序实现自动调参数
在做研究的时候我们经常需要对模型的参数就行相应的选择,然而有没有觉得每次更改一个参数都需要运行一次仿真程序觉得很无聊呀,运行完程序还要看效果怎么样,然后再根据效果来调整参数,再次运行程序,如此反复. ...
- html中怎么设置渐变颜色设置,css中渐变色怎么设置
这篇文章主要介绍了css3编写浏览器背景渐变背景色的方法,现在分享给大家,也给大家做个参考. css中渐变色怎么设置 css 给网页中的背景设置渐变色,css的渐变颜色可以指定固定的两个颜色之间的线性 ...
- AE 中RGB值设置成0-255
AE 中RGB值设置成0-255 AE中RGB的值突然变成几百几千完全不认识了! AE中使用RGB的方式设置颜色的时候通常是0-255的数值设置红绿蓝,但是有时会发现这个值是几千几万的时候不容易把握各 ...
- IDEA settings设置快捷键实现字符串中的英文字母转大小写
问题现象: 如题,如何在IDEA的settings属性中,通过设置快捷键实现字符串中的英文字母转大小写? 问题分析: 简单说一下,为什么会有这样的想法! 使用过pg(postgresql)和Oracl ...
- Matlab神经网络工具箱中net.trainParam设置不成功问题
Matlab神经网络工具箱中net.trainParam设置不成功问题 本人找寻很久发现即使设置了net.trainParam中的各参数值,但是在nntraintool显示后一直都没有改变,找遍全网都 ...
- 设置matlab保存的图片没有白边,matlab如何保存figure中去掉白边的图片
输出图片成可直接调入的灰度图,设置输出图片空白边距,以及调整图片大小,纵横比. 一.先显示图片,imshow.如果是plot,或者newplot,直接看"三". imshow(st ...
最新文章
- 《程序员修炼之道》读感
- 时间序列:等分布序列(Equidistributed sequence)
- redis 集群 分片 扩容_Redis高可用之集群实现原理
- python学习之路-继承
- java第三章:流程控制语句
- 使用ResourceBundle读取配置文件
- JSP-08-第三方控件的使用
- 2022-2028全球变压器测试行业调研及趋势分析报告
- DCM4CHEE 中worklist 乱码问题 dcmchee 中文乱码
- python - TXT章节文转为epub和mobi格式
- VelocityTracker 速度追踪
- 计算机毕业设计指导 教师 评语,毕业设计指导教师评语【集锦】
- 彻底改变计算机用户名,提升电脑系统安全:如何修改电脑登录用户名以及密码呢?...
- STM32F103_study57_The punctual atoms(STM32 Port multiplexing and remapping configuration)
- 迪文串口屏幕DMG10600T101_01WTR实现图片切换并和串口通讯
- BJTU1940 铁憨憨骑士团的回文对称
- 三十岁开始学Java
- linux 类似winscp_什么是类似于WinSCP的程序?
- python打开pdf文档
- GA遗传算法实现记录 C++版本 解决多元函数最值问题
热门文章
- 【项目管理/PMP/PMBOK第六版/新考纲】纯干货!商业论证/效益管理计划/项目运行环境/组织过程资产/环境事业因素/组织系统,系列笔记建议收藏!
- php 万网域名查询接口
- HTML5+CSS+DIV 新海诚电影简介
- 计算机游戏专业宣传语,游戏的广告词_游戏推广广告词
- Linux wipe工具
- 程序员必读书单 1.0
- centos安装nginx配置webpy
- Codeforces Round #459 (Div. 1) B. MADMAX(博弈+DP+记忆化搜索)
- 你还不了解QQ聊天是如何实现的吗?手把手教你实现网络聊天室
- 分数阶微分_分数微分特征