我有一个关于微分方程数值解的问题,急需大家的帮助!!
关于龙格_库塔法求这个微分方程已经困绕我快一个月了,我也是刚学习matlab不久,希望哥哥姐姐们能给我一个指点与帮助,不胜感激,十一假期愉快!!! syms t y zf=int('abs(cos(t/2)+y*sin(pi*z))','z',0,1);
y=dsolve('D2y+Dy+y+f=cos(t/2)','t')
y =
-2/39*cos(1/2*3^(1/2)*t)*cos(1/2*(3^(1/2)+1)*t)*3^(1/2)-10/39*cos(1/2*3^(1/2)*t)*sin(1/2*(3^(1/2)+1)*t)*3^(1/2)+2/39*cos(1/2*3^(1/2)*t)*cos(1/2*(3^(1/2)-1)*t)*3^(1/2)-10/39*cos(1/2*3^(1/2)*t)*sin(1/2*(3^(1/2)-1)*t)*3^(1/2)+10/39*sin(1/2*3^(1/2)*t)*cos(1/2*(3^(1/2)-1)*t)*3^(1/2)+6/13*cos(1/2*3^(1/2)*t)*cos(1/2*(3^(1/2)-1)*t)+6/13*cos(1/2*3^(1/2)*t)*cos(1/2*(3^(1/2)+1)*t)+4/13*cos(1/2*3^(1/2)*t)*sin(1/2*(3^(1/2)+1)*t)-4/13*cos(1/2*3^(1/2)*t)*sin(1/2*(3^(1/2)-1)*t)-f+4/13*sin(1/2*3^(1/2)*t)*cos(1/2*(3^(1/2)-1)*t)-4/13*sin(1/2*3^(1/2)*t)*cos(1/2*(3^(1/2)+1)*t)-2/39*sin(1/2*3^(1/2)*t)*sin(1/2*(3^(1/2)+1)*t)*3^(1/2)+2/39*sin(1/2*3^(1/2)*t)*sin(1/2*(3^(1/2)-1)*t)*3^(1/2)+10/39*sin(1/2*3^(1/2)*t)*cos(1/2*(3^(1/2)+1)*t)*3^(1/2)+6/13*sin(1/2*3^(1/2)*t)*sin(1/2*(3^(1/2)-1)*t)+6/13*sin(1/2*3^(1/2)*t)*sin(1/2*(3^(1/2)+1)*t)+C1*exp(-1/2*t)*sin(1/2*3^(1/2)*t)+C2*exp(-1/2*t)*cos(1/2*3^(1/2)*t)
以上在matlab 6.5运行结果 式子中的Z是什么? 先批示一下,二楼的结果肯定不合理,至于结果到底是多少呢?由于我现在用的也是6.5版,得仔细地想想了,不过,据说在7版以后的好像就能得出正确的结果,正确的答案是多少?得容我们再想想,
-----这个问题有一些严重了, >>syms t y z
f=int('abs(cos(t/2)+y*sin(pi*z))','z',0,1);
>> y=dsolve('D2y+Dy+y+f=cos(t/2)','t')
y =
exp(-1/2*t)*sin(1/2*3^(1/2)*t)*C2+exp(-1/2*t)*cos(1/2*3^(1/2)*t)*C1+12/13*cos(1/2*t)+8/13*sin(1/2*t)-f
其中
f =
signum(cos(1/2*t))*(cos(1/2*t)*pi+2*y)/pi
我用的是7.0,做了一下,这个比6.5的做出来短多了,但是能不能这样做,我是感觉有问题的,这个问题没仔细考虑,还是等想清楚一些再来讨论吧
[ 本帖最后由 jimin 于 2006-10-3 23:57 编辑 ] 这个方法我也想过,感觉没有那么简单,可能需要一个循环或者迭代!谢谢上面的回复... function Yd = myfun(t,Y)
% 函数文件
% 用 int 解的 含有 abs的积分, ,sign返回值只有 -1,0,1
% F = sign(cos(1/2*t))*(cos(1/2*t)*pi+2*Y)/pi;
%自己去想想为什么??
%结果是否正确,我也不知道,
ss = sign(cos(1/2*t));
cc = cos(1/2*t);
tt = cos(t/5);
Yd = ;
%函数文件结束
% 在命令窗中输入的命令
>> t = ;
>> y = ;
>> = ode45('myfun',t,y);
>> plot(X,Y) signum(cos(1/2*t))*(cos(1/2*t)*pi+2*y)/pi
上面的signum是什么意思呢,我在matlab的帮助文件里找不到这个函数!
清高手指点一下...
谢谢拉 原帖由 Tla 于 2006-10-4 11:50 发表
function Yd = myfun(t,Y)
% 函数文件
% 用 int 解的 含有 abs的积分, ,sign返回值只有 -1,0,1
% F = sign(cos(1/2*t))*(cos(1/2*t)*pi+2*Y)/pi;
%自己去想想为什么??
%结果是否正确,我也不知道 ...
这个过程中Z是怎么积出去的呢!? signum是符号计算中的符号取值函数,其含义和数值计算中的sign一致
,,,,,一切都要靠自己...
关于那个含 abs 的积分,前面的几个回帖中都已经给出来了,照抄进去不就行了,看,jimin回答得多好,
页:
[1]