求问这题哪里做错题目的原因了?

提升中职生数学自主学习能力的教学的研究提高,研究,教学,数学教学,教 学,数学学,中..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
提升中职生数学自主学习能力的教学的研究
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口查看: 1039|回复: 9|关注: 0
求解,这个ode45用的哪错了?总是提示返回向量长度有问题
关注者: 2
t=0:0.0001:12;
M=[1 0 0;0 1 0;0 0 1];
k1=.8*t).^2;
k2=.8*t).^2;
k3=.8*t).^2;
f = @(t,x)[x(2);x(4);x(6);-0.6*x(2)+0.3*x(2)-(k1+k2)*x1+k2*x3;0.3*x(2)-0.6*x(4)+0.3*x(6)-k2*x(1)+(k1+k2)*x(3)-k3*x(5);0.3*x(4)-0.3*x(6)+k3*x(3)-k3*x5];
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-4 1e-4 1e-4 1e-4]);
[T,X] = ode45('f',[0 12],[0 1 0 0 0 0],options);
ch1=X(:,1);
ch2=X(:,3);
ch3=X(:,5);
一运行就说
Error using odearguments (line 93)
F returns a vector of length 2, but the length of initial conditions vector is 6. The vector returned by F
and the initial conditions vector must have the same number of elements.
Error in ode45 (line 114)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in test_timesys (line 14)
[T,X] = ode45('f',[0 12],[0 1 0 0 0 0],options);
关注者: 234
问题很多,f 的定义里因为粗心造成的问题如下:
x1 --& x(1)
x3 --& x(3)
x5 --& x(5)
另外,f 返回的应该是一个列向量,而你的函数定义里涉及了 k1、k2、k3 三个行向量,f 的返回值无法构成向量、矩阵。不明白,你之前为什么要定义这么多向量参数
关注者: 2
本帖最后由 卖特来伯 于
02:20 编辑
winner245 发表于
问题很多,f 的定义里因为粗心造成的问题如下:
x1 --& x(1)
这是一个时变的3阶矩阵微分方程
M=[1 0 0;0 1 0;0 0 1];
k1=.8*t).^2;
k2=.8*t).^2;
k3=.8*t).^2;
K=[k1+k2 -k2 0;-k2 k1+k2 -k3;0 -k3 k3];
p=0.3*[2 -1 0;-1 2 -1;0 -1 1];
方程为 My''+Py'+Ky=0
初值y1'=1其他都是0
我把矩阵方程拆开了,然后进行降阶,引入状态变量x1到x6。所以弄了这么多变量。。。
这种时变的矩阵微分方程又更好的解法么?用ode感觉好复杂啊。
关注者: 234
卖特来伯 发表于
这是一个时变的3阶矩阵微分方程
M=[1 0 0;0 1 0;0 0 1];
k1=.8*t).^2;
还是针对你1楼的代码,你的参数&&k1、k2、k3 只能以标量元素的形式输入到 f,你不能一次性给一个向量,否则, ode45 无法求解
关注者: 2
本帖最后由 卖特来伯 于
09:38 编辑
winner245 发表于
还是针对你1楼的代码,你的参数&&k1、k2、k3 只能以标量元素的形式输入到 f,你不能一次性给一个向量,否 ...
那岂不是方程只能是定系数(时不变)了?可是这个方程就是系数是时间t的函数啊,怎么才能实现这一点呢
我尝试了一个不是方程组的2阶时变微分方程。
f=@(t,x)[x(2);-0.3*x(2)-((.8*t)).^2)*x(1)];
[t,y]=ode45('f',[0,20],x0);
plot(t,y(:,1))
怎么换成3*3矩阵就不对了,我对照了一下,这两个例子一样啊,都是变系数。
关注者: 234
|此回复为最佳答案
卖特来伯 发表于
这是一个时变的3阶矩阵微分方程
M=[1 0 0;0 1 0;0 0 1];
k1=.8*t).^2;
为啥需要6个状态变量?2个就足够了啊
& &&&x2=y'
得到如下微分方程组:
x2' = -P/M*x2 - K/M*x1
然后求解这个新微分方程组,最后取x1就可以了
关注者: 234
卖特来伯 发表于
那岂不是方程只能是定系数(时不变)了?可是这个方程就是系数是时间t的函数啊,怎么才能实现这一点呢
当然可以是变系数啊,但是你的系数 k1,k2,k3加得不对,你应该把&&k1,k2,k3 定义为关于 t 的函数,加到方程即可。你不能把这些系数在方程外就指定了一系列 t,这样你得到的系数&&k1,k2,k3就是向量了,维数就不对了。t 是在 ode45 内部求解时自动得到的
关注者: 2
winner245 发表于
当然可以是变系数啊,但是你的系数 k1,k2,k3加得不对,你应该把&&k1,k2,k3 定义为关于 t 的函数,加 ...
原来如此,不能在防城外指定啊懂了,谢谢
关注者: 234
卖特来伯 发表于
原来如此,不能在防城外指定啊懂了,谢谢
是的,按照这个思路,你1楼的代码应该改成:k1=@(t) .8*t).^2;
k2=@(t) .8*t).^2;
k3=@(t) .8*t).^2;
f = @(t,x)[x(2);x(4);x(6);-0.6*x(2)+0.3*x(2)-(k1(t)+k2(t))*x(1)+k2(t)*x(3);0.3*x(2)-0.6*x(4)+0.3*x(6)-k2(t)*x(1)+(k1(t)+k2(t))*x(3)-k3(t)*x(5);0.3*x(4)-0.3*x(6)+k3(t)*x(3)-k3(t)*x(5)];
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-4 1e-4 1e-4 1e-4]);
[T,X] = ode45(f,[0 12],[0 1 0 0 0 0],options);
ch1=X(:,1)复制代码
关注者: 234
本帖最后由 winner245 于
15:28 编辑
卖特来伯 发表于
那岂不是方程只能是定系数(时不变)了?可是这个方程就是系数是时间t的函数啊,怎么才能实现这一点呢
你5楼代码里的 [t,y]=ode45('f',[0,20],x0); 应该改成
[t,y]=ode45(f,[0,20],x0);
站长推荐 /1
Powered bycodewars java 第二题不知道哪里错了,求救_问答_ThinkSAAS
codewars java 第二题不知道哪里错了,求救
codewars java 第二题不知道哪里错了,求救
题目的代码是这样的,让你找错,我怎么都找不出来,跑了一遍也正常
public class Person {
public Person(String personName) {
name = personN
public String greet(String yourName) {
return String.format("Hi %s, my name is %s", yourName, name);
我把name改成private也不行,实在找不出哪里错了,我都自我怀疑了。。。
按投票排序
0支持&&/&&0反对
我试了一下, 不知道为什么 其实上面是有提示的: Correct this code, so that the greet function returns the expected value. 修改greet函数, 来满足所期待的输出. 将yourName和name换一下位置就对了.
但是我逻辑上没有相通, 题主知道为什么吗?
0支持&&/&&0反对
把name和yourname对调一下。
public String greet(String yourName) {
return String.format("Hi %s, my name is %s", name, yourname);
程序没错,逻辑问题。
0支持&&/&&0反对
return String.format("Hi %s, my name is %s", name, yourName);
程序是没错的~提示说是返回理想的值。。。
PHP开发框架
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
手机客户端
ThinkSAAS接收任何功能的Iphone(IOS)和Android手机的客户端定制开发服务
让ThinkSAAS更好,把建议拿来。第一问做错了不用看,求解这题第一二问 _百度作业帮
第一问做错了不用看,求解这题第一二问&
dmyvaocehd
弦长是原来的 x 倍,那频率就是原来的 x分之一,所以要补充的频率是495,弦长是五分之三L
其他类似问题
(1)F∝1/L
弦长是原来的 x 倍,那频率就是原来的 x分之一(2)3\5L
1、存在弦长越短,频率越快的关系2、 频率栏填3/5
弦长栏填495
扫描下载二维码}

我要回帖

更多关于 神也会做错填空题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信