马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
这里面所说的时变参数,并不是严格意义的随时间的变化的参数,可能还包含有其他形式的,如随机参数的,含有一些根据解自动调整的,但是有一些本人并没有涉及,所以仅仅对本人比较熟悉的做一些对比分析,为论坛上的朋友提供一点点参考意见,由于时间问题,本帖子没有完全写完,我将陆续发上来,也有可能与论坛上某些帖子有重复。我倒是也会给出相应的链接。
作为求解的第一个问题是怎么表达周期性时变函数,在我们实际的理论分析时,三角波、矩形波、三角函数等多种形式。
一下的分析都以式(1)为例
x''+2*c*x'+k(t)*x=sin(t) (1)
其中k(t)为周期性函数
1、然而作为最简单的形式三角函数,我们可以用sin/cos直接表达。
Ex.1 kt=sin(t), matlab实现
function dy=ex1(t,x)
c=0.1;kt=sin(t)
dy=[x(2);-2*c*x(2)-kt*x(1)+sin(t)];
%
clear;clc;close all;
x0=[0 0];tfinal=100;
[t,x]=ode45('ex1',[0,tfinal],x0);
plot(t,x);
即可以得到含有三角函数形式的时变参数系统的数值解;
2、三角波的形式
对于三角波好多人认为其很麻烦,就在于其实周期性的,而且matlab中没有提供出产生三角波的函数,虽然可以写出解析的表达式,但是一循环就比较麻烦了,其实只要我们能够实现三角函数,就可以跟上面的例子一样解决。从上面的例子可以看出来,重要的问题是怎么表达出三角波函数。
最简单的实现方式:
function x=sanjiaobo(t,T,a)
% T 为周期,a也是一个调整参数,比知道什么意思可以自己试着画一下就知道了
x=a+mod(t,T);
%%%%%%%%%%%%%%%%%%%%
T=2;a=-0.5;
t=0:0.01:10*T;
x=sanjiaobo(t,T,a);
plot(t,x)
%这里你就可以考到图了
那么对于含有如上形式的微分方程而言,其实现也就比较简单了。
Ex.2 kt=三角波, matlab实现
function dy=ex2(t,x)
c=0.1;T=2;a=0.5;
kt=sanjiaobo(t,T,a)
dy=[x(2);-2*c*x(2)-kt*x(1)+sin(t)];
%
clear;clc;close all;
x0=[0 0];tfinal=100;
[t,x]=ode45('ex2',[0,tfinal],x0);
plot(t,x);
通过上面方法也就可以简单是实现了。
3、矩形波的形式
matlab中提供了产生矩形波的函数:square. 不清楚的可以:doc square看一下里面的介绍。
详细的实现过程下次补上。
4、其他形式的时变周期函数
5、随机参数 |