| 查看: 1100 | 回复: 5 | ||||
[交流]
请大神指出哪儿错了,怎么改,谢谢。 已有5人参与
|
|
function f=odefun(t,x) f(1)=x(2); f(2)=(f(3)*0.1*0.008*sign(x(2))+0.25*0.1075*0.0415*61.67^2*sin(x(1)))/0.15*(-1); f(4)=arcsin(0.1075/0.0415*sin(x(1))); f(5)=(0.1075^2+0.0415^2+2*0.1075*0.0415*cos(x(1)))^(1/2); f(3)=0.25*(0.0415*0.0415*(f(2)^2+x(2)^4)+f(5)^2*61.67^4+2*0.0415*f(5)*(x(2)^2*61.67^2*cos*(2*x(1)-f(4))+f(2)*61.67^2*0.1075*sin(f(4))))^(1/2); end [t,x]=ode45(@odefun,[0,5],[0,pi/4]); plot(t,x) 试图访问 f(3);由于 numel(f)=1,索引超出范围。 出错 odefun (line 3) f(2)=(f(3)*0.1*0.008*sign(x(2))+0.25*0.1075*0.0415*61.67^2*sin(x(1)))/0.15*(-1); 出错 odearguments (line 87) f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0. 出错 ode45 (line 113) [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ... |
» 猜你喜欢
不自信的我
已经有10人回复
磺酰氟产物,毕不了业了!
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有10人回复
26申博(荧光探针方向,有机合成)
已经有4人回复
要不要辞职读博?
已经有3人回复
论文终于录用啦!满足毕业条件了
已经有26人回复
2026年机械制造与材料应用国际会议 (ICMMMA 2026)
已经有4人回复
Cas 72-43-5需要30g,定制合成,能接单的留言
已经有8人回复
北京211副教授,35岁,想重新出发,去国外做博后,怎么样?
已经有8人回复
自荐读博
已经有3人回复
FMStation
至尊木虫 (知名作家)
- 应助: 591 (博士)
- 贵宾: 0.03
- 金币: 18154.7
- 红花: 97
- 帖子: 8891
- 在线: 1485.7小时
- 虫号: 2400059
- 注册: 2013-04-04
- 专业: 计算机应用技术
2楼2016-08-17 17:59:40
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68123.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区
★
小木虫: 金币+0.5, 给个红包,谢谢回帖
小木虫: 金币+0.5, 给个红包,谢谢回帖
|
有两方面问题: 其一,程序层面的。 对于MATLAB程序,一般情况下,应秉持“”先定义后使用“”的原则。 比如: f(1)=x(2); f(2)=(f(3)*0.1*0.008*sign(x(2))+0.25*0.1075*0.0415*61.67^2*sin(x(1)))/0.15*(-1); 来看上面这段代码,f(2)的定义中出现了f(3),然而在f(2)之前,并未有f(3)的定义。 其二,对问题的理解方面,或者说数学模型建立方面。 这方面的问题很严重,在这方面出现错误,将导致整个代码无意义。 1. 定义f时,f(2)和f(3)互相出现在了对方的表达式中,这说明f(2)和f(3)本身是隐函数,但是ode45函数只适合用于求解显式的常微分方程,明显不适用。 2. 既然调用ode系列函数,就应该明白,这是针对常微分方程(组)的函数,根据数学定义,常微分方程(组)因变量可为一个也可以是多个,但是自变量一定是一个,但在定义f时,出现了x(1)和x(2)两个自变量,两个自变量的情况,已经是偏微分方程的范畴了,这是一个致命的问题,这表明ode系列中任何函数都是不适用的。 |

3楼2016-08-17 20:59:48
4楼2016-08-19 09:23:15
匿名
用户注销 (著名写手)
- 应助: 0 (幼儿园)
- 金币: 1040.9
- 散金: 1688
- 红花: 21
- 沙发: 1
- 帖子: 1040
- 在线: 270.6小时
- 虫号: 0
- 注册: 2014-06-06
- 性别: MM
- 专业: 管理科学与工程
5楼2016-08-19 09:50:04
★
小木虫: 金币+0.5, 给个红包,谢谢回帖
小木虫: 金币+0.5, 给个红包,谢谢回帖
|
function xprim= xprim1(t,x) global a b c d e f q w r v s g xprim =[(e*s+a)*x(1)+(e*g+b)*x(2)+q*0.3*sin(t)+w*0.1*cos(2*t);(f*s+c)*x(1)+(f*g+d)*x(2)+r*0.3*sin(t)+v*0.1*cos(2*t)]; clear;clc; global a b c d e f q w r v s g a = 0; b = 1; c = 4; d = 0; e = 0; f = 1; q = 1; w = 0; r = 0; v = 1; s = 1; g = 3; [t,x] = ode45('xprim1',[0 9],[0.4;0.2]); plot(t,x) 出错 ode45 (line 113) [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ... 出错 event_trigger_ftb (line 10) [t,x] = ode45('xprim1',[0 9],[0.4;0.2]); 您好,请问这个是怎么回事呀? |
6楼2018-09-13 17:50:12












回复此楼
