lzth.net
当前位置:首页 >> mAtlAB解微分方程中程序问题 >>

mAtlAB解微分方程中程序问题

function dx=differential(t,x) dx = zeros(2,1);; dx(1)=x(1)*(1-x(1))*30; dx(2)=x(2)*(1-x(2))*(160*x(1)-20); end clc options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-5]); [T,Y]=ode45(@differential,[0 5],[0.5 0.5],options); figur...

好像没什么特别好的办法: >> syms t q y; q=4*t^3;>> syms Dy>> eq=Dy-(q-2*t);>> y=dsolve(char(subs(eq)),'y(0)=5','t')y = t^4-t^2+5 也就是要先移项把微分方程写成等号右端为零的形式(需额外定义Dy),然后subs代入,再求解。

>> syms x(t) y(t) r d a b r='1';d='0.5';a='0.1';b='0.02'; [x,y]=dsolve(diff(x)==(r-a*y)*x,diff(y)==-(d-b*x)*y,x(0)==25,y(0)==2) Warning: Explicit solution could not be found. > In dsolve at 194 x = [ empty sym ] y = [] 说明无解。

你这个程序明显不对。没看懂是什么意思。跟你说下错在哪吧: 你看下diff()的帮助,返回值是比输入的向量少一个元素的,你输入的是个标量(可以理解为长度为1),返回值当然是长度为0(即空元素【 】)。matlab中任何数与空【】计算得到空【】。...

function exer=yfun(t,x) exer = -x^3 exer为返回值;yfun为函数名称;(t,x)是函数的两个变量,t在函数内部没有使用,是个空变量。这个函数本身没有问题,可以作为一个子函数使用,换句话说:要想让其起作用,要有另外一个主程序或函数调用它...

没有大错误,将中文标点改下就行了 新建一个cjxxfun.m文件 function yp=cjxxfun(t,y,flag,q,m) yp=[y(4);y(5);y(6);q*(10*y(3)+1)*y(5)/m-q*((-5*sqrt(y(1).^2+y(2).^2))*cos(pi/4))*y(6)/m;q*((-5*sqrt(y(1).^2+y(2).^2))*sin(pi/4))*y(6)/m;-q...

参考代码: % 参数定义m1 = 1; m2 = 2; m3 = 3;k1 = 4; k2 = 5; k3 = 6; k4 = 7;P0 = 8; w = 9; % 微分方程A = [k1+k2 -k1 0; -k2 k2+k3 -k3; 0 -k3 k3+k4];dx = @(t,x)[x(4:6); (-A*x(1:3)+[P0*sin(w*t);0;0])./[m1;m2;m3]]; % 初始条件(x4~x6...

1、对于求数值解的微分方程,你可以用ode45()函数求解。如求下列微分方程 func。m %自定义微分方程的函数 function z = func(t,y) z =[y(2);(1-y(1)^2)*y(2)-y(1)]; main。m %主程序 clear all;close all;clc y0 = [0.25;0]; h = 0.1; a = 0; b ...

没解析解你肯定得用数值解。以下是步骤。 第一步,在Matlab里写m-file,命名微分方程对应的函数: function f=myfun(t,x) f = [-x(1)+x(2)^2; -2*x(2)+x(1)^2]; 这里的x(1)就是你这儿的x, x(2)就是你这儿的y。写完后自动保存,不要对保存目录做...

说明 求解常微分方程一般使用ode系列函数(其中最常用的是ode45),基本做法就是把微分方程用函数表示出来,然后调用ode函数求解即可。对于本题而言,使用匿名函数描述微分方程更为方便一些。 参考代码 k0=8; k1=1; K=1; k2=5; n=2; % 常数定义d...

网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com