aa=[1:0.02:2.5,2.505:0.005:3.5,3.501:0.001:4]%节约计算,变变长
n=200
plotn=5
savex=[]
for a=aa
x=0.5
for i=2:n
x(i)=a*x(i-1)*(1-x(i-1))
end
savex=[savexx((n-plotn+1):n)]
end
plot(aa,savex,'.')
可以借助于嵌套函数或匿名函数实现附加参数的传递,例如function main
y0 = [1.40.10.1]
A = linspace(eps, 10, 20)
Y = A * NaN
for ii = length(A)
a = A(ii)
y = ode45(@eq2, [0 a], y0)
Y(ii) = y(end, 1)
end
plot(A, Y)
function dy=eq2(t,y)
dy = y*0
dy(1)=-(a*y(2))/(4*exp(a*t/4))
dy(2)=-(a/4)*(exp(a*t/4))*(y(1)+0.5)+(a/4)*y(2)-y(3)*((exp(a*t/4))^2)
dy(3)=4*y(2)
end
end
但微分方程组似乎是刚性的,不过换用ode15s、ode23s等适合刚性系统的算法效果也不理想(可以调用ode*函数时不返回参数,观察求解的过程)。
omega是个啥?常数还是变量?
clear all
clc
gamma=0.1
kapa=1
xi=1
F=0.1
omega=5
f=@(t,x)([x(2)-gamma*x(2)+kapa*x(1)-xi*x(1)^3+F*cos(x(3))omega])
[t,X]=ode45(f,0:.1:4,[0 .1 0])
plot(X(:,1),X(:,2))
xlabel('x(1)'),ylabel('x(2)')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)