| 查看: 1171 | 回复: 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, ... |
» 猜你喜欢
0703化学求调剂,各位老师看看我!!!
已经有3人回复
339求调剂
已经有5人回复
287求调剂
已经有8人回复
一志愿北京化工大学 070300 学硕 336分 求调剂
已经有8人回复
085602 化工专硕 338分 求调剂
已经有5人回复
0856,材料与化工321分求调剂
已经有4人回复
一志愿北京化工大学材料与化工 264分各科过A区国家线
已经有10人回复
266求调剂
已经有8人回复
265求调剂
已经有3人回复
286求调剂
已经有6人回复
FMStation
至尊木虫 (知名作家)
- 应助: 591 (博士)
- 贵宾: 0.03
- 金币: 18364.2
- 红花: 97
- 帖子: 8891
- 在线: 1490.6小时
- 虫号: 2400059
- 注册: 2013-04-04
- 专业: 计算机应用技术
2楼2016-08-17 17:59:40
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68127.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














回复此楼
