无水1324 发表于 2008-3-28 13:41

含时变参数的数值求解问题总结(未完待续)

这里面所说的时变参数,并不是严格意义的随时间的变化的参数,可能还包含有其他形式的,如随机参数的,含有一些根据解自动调整的,但是有一些本人并没有涉及,所以仅仅对本人比较熟悉的做一些对比分析,为论坛上的朋友提供一点点参考意见,由于时间问题,本帖子没有完全写完,我将陆续发上来,也有可能与论坛上某些帖子有重复。我倒是也会给出相应的链接。

作为求解的第一个问题是怎么表达周期性时变函数,在我们实际的理论分析时,三角波、矩形波、三角函数等多种形式。

一下的分析都以式(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=;

%

clear;clc;close all;

x0=;tfinal=100;

=ode45('ex1',,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=;

%

clear;clc;close all;

x0=;tfinal=100;

=ode45('ex2',,x0);

plot(t,x);

通过上面方法也就可以简单是实现了。

3、矩形波的形式

matlab中提供了产生矩形波的函数:square. 不清楚的可以:doc square看一下里面的介绍。

详细的实现过程下次补上。













4、其他形式的时变周期函数





5、随机参数

无水1324 发表于 2008-3-28 13:41

占位编辑

无水1324 发表于 2008-3-28 13:42

占位编辑
页: [1]
查看完整版本: 含时变参数的数值求解问题总结(未完待续)