MATLAB中用ode45求解带约束条件的微分方程
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 12:13:00
如果你定义的没错话,[t,x]=ode45('DyDt',[0,100],[1,0]);plot(t,x)在变化下可得t=0.5时的值
这个方程要解出来还要初始条件吧不妨设(x(0),y(0))=(A,B);还有用ode45只能得到数值解,不能给出解析式表达那么先建立一个函数文件test_fun.mfunctiondx=tsst_fu
function z=krsx(t,y) &nb
初值条件看不太懂
functionx=Gauss_Seidel(A,b,x0,tol)if(nargin==2)x0=ones(size(b));tol=1e-6;elseif(nargin==3)tol=1e-6;e
初值不够呀,应该有四个,题目能不能贴出来?
把方程和初值条件都列出来这一大堆东西几个人看得懂?再问:公式(1)(2)就是方程啊,我写的那两个就是对应的方程。倒数第二张图片有实验数据。还需要什么参数吗?非常抱歉,我学的专业不太扎实,问题可能有点弱
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%functiondx=myf
functiontest()[t,y]=ode45(@func1,[0,1],[0;0;1;2;2;2]);figure(1);clf;plot(t,y);legend('x','y','z','dx
你把lgkt中的x改成x(1)试试看,我试过应该没问题的function xx=lgkt(t,x)xx=3*x(1)+cos(t)+sin(2*t);[t,x]=ode45(@lgkt,[0
新的matlab版本好像不鼓励采用global了.你的全局变量有点多了,哈哈.简单例子:m=2;[t,y]=ode45(@(t,x)f1(t,x,m),[0,10],[2])functiondy=f1
%%%%%%%%%%%%%%%%M-file以下要单存一个文件在工作路径下%%%%%%%%%%%%%functiondotx=myfun(t,y)dotx=t-y;%%%%%%%%%%%%%%%%M-
步长可以设定的,比如设为5t=0:5:100,就可以了再问:ode本身是变步长的?这个要怎么设定啊再答:ode45('函数名',[0:5:100],0)
dy(1)是对y(1)求导数的意思后面一样了
1、你贴出来的报错信息和代码对不上号:前面显示错误的那行代码和你贴出来的完全不一样;而后面的错误(Inputargument'u1'isundefined)也不可能是目前的代码所导致的
警告的翻译:无法满足积分条件,因此在时间t=1.768731e-001s处无法积分帮你运行了一下,原因是在1.768731e-001s处,有个值趋于负的无穷大,因此无法积分可能的原因:1.方程出错;2
没有必要只要是选取的初值对应的t等于tspan(1)我们看下面一个例子,对于dx/dt=2t来说吧我们知道精确解是x=t^2下面我们给出数值解法,编写代码%%选取状态变量%x1=x%%则各个状态变量的
1、后两个方程都是dH?2、最后一个dH的表达式有误(括号不匹配).3、st的初值?
因为你x=0时2/x是无穷大呀,然后y'又是0,然后(2/x)y'就是nan了,所以后面算的全是nan了.
参考代码: %参数定义m1=1;m2=2;m3=3;k1=4;k2=5;k3=6;k4=7;P0=8;w=9;%微分方程A=[k1+k2-k10;-k2k2+k3-k3;0-k3k3+k4]