声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5393|回复: 2

[计算数学] 含时变参数的数值求解问题总结(未完待续)

[复制链接]
发表于 2008-3-28 13:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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、随机参数

评分

1

查看全部评分

回复
分享到:

使用道具 举报

 楼主| 发表于 2008-3-28 13:41 | 显示全部楼层
占位编辑
 楼主| 发表于 2008-3-28 13:42 | 显示全部楼层
占位编辑
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-20 02:45 , Processed in 0.059248 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表