首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DifferentialEquations.jl Julia包时的方法错误

使用DifferentialEquations.jl Julia包时的方法错误
EN

Stack Overflow用户
提问于 2017-09-13 20:10:23
回答 1查看 326关注 0票数 1

我试图用ode45包求解一个DifferentialEquation.jl微分方程,但是我得到了一个方法错误。

代码语言:javascript
复制
using DifferentialEquations

M = 400; m = 35;
C = 3e3; c = 300;
K = 50e3; k = 200e3;
A = 0.05; L = 0.5; vh = 13.9

MM = [M 0;
      0 m] # mass matrix

CC = [C -C;
     -C C+c] # damping matrix

KK = [K -K;
     -K K+k] # stiffness matrix

w(t) = A*sin(2*pi*vh*t/L)
wd(t) = A*2*pi*vh*t/L*cos(2*pi*vh*t/L) # dw/dt

n = 2 # number of (original) equations
Mi = MM^(-1)
AA = [zeros(n,n) eye(n); -Mi*KK -Mi*CC]

f(t) = [0; c*wd(t)+k*w(t)] # force vector
g(t,y) = AA*y+[zeros(n,1); Mi*f(t)]

y0 = zeros(4) # initial conditions
tspan = (0.0, 0.5) # time span

prob = ODEProblem(g, y0, tspan) # defining the problem
solve(prob) 

代码给出了一个错误,即:

MethodError:不能将类型数组{ from 64,2}的对象转换为类型数组{from 64,1}的对象,这可能是对构造函数数组{from 64,1}(.)的调用引起的,因为类型构造函数返回到转换方法。

我不明白我可能做错了什么,尽管我认为错误可能与y0有关(因为the (Y0)=Array{ wrong 64,1}),错误发生在solve()函数所在的行中。

谢谢您事先提供的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-13 22:18:41

未经检验的直觉:变化:

代码语言:javascript
复制
g(t,y) = AA*y+[zeros(n,1); Mi*f(t)]

至:

代码语言:javascript
复制
g(t,y) = AA*y+[zeros(n); Mi*f(t)]

前者将创建一个具有一列的二维矩阵。后者将创建一个一维向量。你看到的错误信息是,它在一个需要一维数组的地方得到了一个二维数组。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46206060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档