最近在做有关ODE45的微分方程求解,在微分方程中,运用到了erf函数,虽然之前也出现过类似的问题,已经解决,但是这次丝毫找不到问题的原因所在,毫无头绪。

主程序如下:

[code]

%——————xp vp zp 分别为20个点位————————————————————————

xp=[-1.91545000000000;-1.68455000000000;-1.51545000000000;-1.28455000000000;-1.11545000000000;-0.884550000000000;-0.715450000000000;-0.484550000000000;-0.315450000000000;-0.0845500000000000;0.0845500000000000;0.315450000000000;0.484550000000000;0.715450000000000;0.884550000000000;1.11545000000000;1.28455000000000;1.51545000000000;1.68455000000000;1.91545000000000];

vp=[-2.87317500000000;-2.52682500000000;-2.27317500000000;-1.92682500000000;-1.67317500000000;-1.32682500000000;-1.07317500000000;-0.726825000000000;-0.473175000000000;-0.126825000000000;0.126825000000000;0.473175000000000;0.726825000000000;1.07317500000000;1.32682500000000;1.67317500000000;1.92682500000000;2.27317500000000;2.52682500000000;2.87317500000000];

zp=[-1.43658750000000;-1.26341250000000;-1.13658750000000;-0.963412500000000;-0.836587500000000;-0.663412500000000;-0.536587500000000;-0.363412500000000;-0.236587500000000;-0.0634125000000000;0.0634125000000000;0.236587500000000;0.363412500000000;0.536587500000000;0.663412500000000;0.836587500000000;0.963412500000000;1.13658750000000;1.26341250000000;1.43658750000000];

h0 = waitbar(0,'Formulating the Transient PDF...');

%下面进行循环,每个点位都为初始值来进行ode45的求解

for kk1=1:20

waitbar(kk1/20,h0)

for kk2=1:20

for kk3=1:20

[tt,Y] = ode45(@new_gaussisan_00way_1,[0 ,4],[xp(kk1)^2;xp(kk1)*vp(kk2);xp(kk1)*zp(kk3);vp(kk2)^2;vp(kk2)*zp(kk3);zp(kk3)^2;xp(kk1);vp(kk2);zp(kk3)]);

end

end

end

[/code]

函数程序如下:

[code]

function dX=new_gaussisan_00way_1(t,x)

dX=zeros(9,1);

A=1;gama=0.1;beta=0.1;arf=0.1;w=1;ksai=0.05;

PI = 3.1415926;

I0 = 0.1;

z0=0;

%——上方是几个参数——————————————

%下面是几个和解有关的参数————在这些参数中,又用了了erf函数————————————————————

I101A=sqrt(2/PI)*(1/sqrt(x(4)))*(x(4)*(x(7)*x(9)+x(3))+x(2)*x(5))*exp(-x(8)^2/(2*x(4)))+(x(7)*x(5)+x(8)*x(3)+x(9)*x(2)+x(7)*x(8)*x(9))*erf(x(8)/(sqrt(2*x(4))));

I101B=sqrt(2/PI)*(1/sqrt(x(6)))*(x(6)*(x(7)*x(8)+x(2))+x(3)*x(5))*exp(-x(9)^2/(2*x(6)))+(x(7)*x(5)+x(8)*x(3)+x(9)*x(2)+x(7)*x(8)*x(9));%*erf(x(9)/(sqrt(2*x(6))));

I011A=sqrt(2/PI)*sqrt(x(4))*(x(8)*x(9)+2*x(5))*exp(-x(8)^2/(2*x(4)))+(x(9)*(x(8)^2*x(4))+2*x(8)*x(5));%*erf(x(8)/(sqrt(2*x(4))));

I011B=sqrt(2/PI)*(1/sqrt(x(6)))*(x(6)*(x(8)^2+x(4))+x(5)^2)*exp(-x(9)^2/(2*x(6)))+(x(9)*(x(8)^2*x(4))+2*x(8)*x(5));%*erf(x(9)/(sqrt(2*x(6))));

I002A=sqrt(2/PI)*(1/sqrt(x(4)))*(x(4)*(x(9)^2+x(6))+x(5)^2)*exp(-x(8)^2/(2*x(4)))+(x(8)*(x(9)^2+x(6))+2*x(5)*x(9));%*erf(x(8)/sqrt(2*x(4)));

I002B=sqrt(2/PI)*(sqrt(x(6))*(x(8)*x(9)+2*x(5)))*exp(-x(9)^2/(2*x(6)))+(x(8)*(x(9)^2+x(6))+2*x(5)*x(9));%*erf(x(9)/sqrt(2*x(6)))

I001A=sqrt(2/PI)*sqrt(x(4))*x(9)*exp(-x(8)^2/(2*x(4)))+(x(8)*x(9)+x(5));%*erf(x(8)/sqrt(2*x(4)));

I001B=sqrt(2/PI)*sqrt(x(6))*x(8)*exp(-x(9)^2/(2*x(6)))+(x(8)*x(9)+x(5));%*erf(x(9)/sqrt(2*x(6)));

%————————————————————————————————————————

dX(1)=2*x(2);

dX(2)=x(4)-2*ksai*w*x(2)-arf*w^2*x(1)-(1-arf)*w^2*x(3)+w^2*(1-arf)*z0*x(7);

dX(3)=x(5)+A*x(2)-gama*I101A-beta*I101B;

dX(4)=-4*ksai*w*x(4)-2*arf*w^2*x(2)-2*(1-arf)*w^2*x(5)+2*w^2*(1-arf)*z0*x(9)+I0*1;

dX(5)=-2*ksai*w*x(5)-arf*w^2*x(3)-(1-arf)*w^2*x(6)+w^2*(1-arf)*z0*x(9)+A*x(4)-gama*I011A-beta*I011B;

dX(6)=2*A*x(5)-2*gama*I002A-2*beta*I002B;

dX(7)=x(8);

dX(8)=-2*ksai*w*x(8)-w^2*arf*x(7)-w^2*(1-arf)*x(9)+w^2*(1-arf)*z0*I0*1;

dX(9)=A*x(8)-gama*I001A-beta*I001B;

end

[/code]

最后再运算的时候 会产生的错误如下:

[code]

错误使用 erf

输入必须为实数完全数。

出错 new_gaussisan_00way_1 (line 10)

I101A=sqrt(2/PI)*(1/sqrt(x(4)))*(x(4)*(x(7)*x(9)+x(3))+x(2)*x(5))*exp(-x(8)^2/(2*x(4)))+(x(7)*x(5)+x(8)*x(3)+x(9)*x(2)+x(7)*x(8)*x(9))*erf(x(8)/(sqrt(2*x(4))));

出错 ode45 (line 261)

f(:,2) = feval(odeFcn,t+hA(1),y+f*hB(:,1),odeArgs{:});

出错 e_rfyansuan (line 16)

[tdata,xdata]=ode45('new_gaussisan_00way_1',[0,10],[xp(kk1)^2;xp(kk1)*vp(kk2);xp(kk1)*zp(kk3);vp(kk2)^2;vp(kk2)*zp(kk3);zp(kk3)^2;xp(kk1);vp(kk2);zp(kk3)]);

[/code]

进行过一些尝试:

测试1:

如果把初始值改成0.01;0.03 这种之类的常数,就不会出现报错,

测试2:

如果初始值都采用xvp的第一个数值

[tdata,xdata]=ode45('new_gaussisan_00way_1',[0,10],[1.915^2;1.915*2.873;1.915*1.436;2.873^2;2.873*1.436;1.436^2;-1.915;-2.873;-1.436]);

也依然会使用程序的时候报错

以I101A为例,对于初始值来说erf的位置

erf(x(8)/(sqrt(2*x(4))))   就是erf(-2.873/sqrt(2*2.873^2))=erf(-1/sqrt(2)),这应该没错啊

但是依然不行。。。。

但是按道理来说,导入的初始值看起来也并没有什么问题,就是不知道哪里出错。

使得erf函数执行不下去。

希望大家能帮帮我 谢谢了

matlab ode45三体问题,关于ode45中erf函数(输入必须为实数完全数的报错问题)相关推荐

  1. Dev-C++中关于函数 was not declared in this scope报错的解决方法

    1.先报错在哪一行看一下这行的上下行有没有错有时候这个提示可能是告诉你错误可能是出现在这个附近 2.看传入这个函数的实参是否定义了,有没有写错字符的情况.这个参数是否超过了它的"生存范围&q ...

  2. matlab 脚本是什么意思,MATLAB提示不能在脚本中定义函数,是什么意思?

    点击查看MATLAB提示不能在脚本中定义函数,是什么意思?具体信息 答:你试图在命令窗口定义函数,这种做法是错误的. 你需要建立一个.m文件,文件名是Chebyshev.m,然后在里面输入源程序. 答 ...

  3. oracle拼接字符串报错,Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决

    备忘:这个函数最大是4000,根据拼接列的长度,通过限制拼接条数来防止拼接字符串过长错误 --这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据 select info.id ...

  4. 新手零基础:飞桨代码中关于图片路径读取和资源解压报错

    #飞桨代码中关于图片路径读取和资源解压报错 1.路径读取 在进行路径图片读取时,不同版本的python的os模块在路径拼接时会报错,一般情况下os.path.join(path,name),是可以将路 ...

  5. IDEA导入Maven项目,pom.xml文件中 有inspects a maven model for resolution problems报错 !!!!!!!!!!有用

    IDEA导入Maven项目,pom.xml文件中 有inspects a maven model for resolution problems报错 2018年08月06日 22:13:09 东方不能 ...

  6. php json追加500错误,在composer.json中添加了一个git地址;composer update 报错

    在composer.json中添加了一个git地址:composer update 报错,不知道是什么原因导致的,如图: 问题补充: 在BAE包里面添加composer.json 后 重新compos ...

  7. MySQL在windows系统中修改datadir路径后无法启动问题,报错1067

    windows server2008下如何更改MySQL数据库的目录的帖子已经很多了,这里简单介绍一个步骤,如果不成功请先查看其它帖子. 更改默认的mysql数据库目录将 C:\Documents a ...

  8. androidstudio安装的app打开闪退,AndroidManifest中也声明了类,但是却没有报错信息。(小坑)

    安卓app打开闪退,AndroidManifest中也声明了类,但是却没有报错信息. 最终重写代码,人工debug.发现是当我点击按钮进行计算,需要获取editText的值.而我将editText的值 ...

  9. flowiz库中遇到 ValueError: buffer is smaller than requested size报错

    flowiz库中遇到 ValueError: buffer is smaller than requested size报错 我是这句代码报的错, tmp = np.frombuffer(flo.re ...

最新文章

  1. Spring整合Struts2
  2. 理解特征统计偏差、方差、平均值、中位数、百分数等等
  3. dmidecode 命令详解(获取硬件信息)
  4. gradle生命周期
  5. cad大理石填充图案_CAD制图初学入门者必须知道的CAD填充问题
  6. kotlin 小数位数_Kotlin程序生成4位数OTP
  7. 592zn rom/apk 自动签名工具_关于邮件签名证书的常见问题
  8. MySql计算百分比
  9. Docker系列一之基础快速入门企业实战
  10. PHP 获取访问来源
  11. 旁站,子域名,C段的含义
  12. python数据分析与挖掘实战---chapter8中医证型关联规则挖掘
  13. 车联网大规模商用关键突破口深度调研,车路协同智慧高速全国建设情况
  14. C语言编译器之一,GCC编译器
  15. MySQL中的自增主键用完了怎么办
  16. 利用XrecycleView写多条目展示+流式布局
  17. c语言高级程序知识,《高级语言程序设计》知识点总结(一)
  18. 呼叫中心中继网关参数选型
  19. P1075 [NOIP2012 普及组] 质因数分解
  20. EasyDarwin开源流媒体服务器内存管理优化

热门文章

  1. Android Camera(一):camera模组CMM介绍
  2. 学习PS好处都有哪些?
  3. HTTP请求错误码大全
  4. jq swiper动画
  5. python中cfg_Python进阶:在Python中读取ini、conf、cfg格式的配置文件-cfg文件
  6. heatmap(高德热力图)
  7. 【34个PMP项目实战案例5】如何提高团队的配合度
  8. 直方图匹配原理 MALAB实现
  9. 地下城与勇士(DNF)安特贝鲁峡谷副本(根特外围、根特东门、根特南门、根特北门、根特防御战、夜间袭击战、补给线阻断战、追击歼灭战、决战哈尔特山)(童年的回忆)
  10. 【腾讯】2017暑期实习生