声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: octopussheng

[分形与混沌] 关于lyapunov指数的问题

[复制链接]
发表于 2007-4-29 14:53 | 显示全部楼层
请教一个问题,就是上面的程序:
子函数:
“% 四维G-S变换
function A = FourGS(V)  % V 为4*4向量”
V是4*4向量,怎么在调用时的y0是3*3向量?
“ y0 = [y(4) y(7) y(10);
          y(5) y(8) y(11);
          y(6) y(9) y(12)];
    %正交化
    y0 = FourGS(y0); ”
谢谢!
回复 支持 反对
分享到:

使用道具 举报

发表于 2007-4-30 05:21 | 显示全部楼层
原帖由 weitaolu 于 2007-4-29 14:53 发表
请教一个问题,就是上面的程序:
子函数:
“% 四维G-S变换
function A = FourGS(V)  % V 为4*4向量”
V是4*4向量,怎么在调用时的y0是3*3向量?
“ y0 = [y(4) y(7) y(10);
          y(5) y(8) y(11);
...


Gauss-Seidel迭代,楼主为了方便,直接拿4维的Gauss-Seidel迭代程序算三维的
实际上Gauss-Seidel迭代理论上可以任意维的,主要是计算量问题

上面这个Gauss-Seidel迭代程序最多只能算到4维的

评分

1

查看全部评分

发表于 2008-3-20 23:27 | 显示全部楼层

楼主

运算您的程序后出现:
??? Attempted to access V(:,4); index out of bounds because size(V)=[3,3].

Error in ==> FourGS at 5
v4 = V(:,4);
请问如何解决?谢谢!
发表于 2008-3-21 09:03 | 显示全部楼层
你用的那个程序,几楼的,7楼?
 楼主| 发表于 2008-3-22 10:03 | 显示全部楼层
本帖最后由 牛小贱 于 2015-3-16 11:39 编辑

你这个问题我还真没有遇到过,关于GS变换,我觉得之前写的程序也是有问题,这样等于多一次变化,就要多写一次的代码,所以将现在用的GS代码公布如下:(转载并非个人原创)
  1. function A = GS(V)
  2. % G-S正交化
  3. % A = GS(V)
  4. % V 为n*n向量
  5. % A 为n*n正交向量
  6. %
  7. % Example:
  8. %   A=GS([1 0 1;2 2 0;3 1 1])
  9. %
  10. % Author:yujunjie
  11. % Author's email: ustb03-07@yahoo.com.cn
  12. %
  13. n=length(V);
  14. for i=1:n
  15.     k=0;  
  16.     for j=1:i-1   
  17.         k=k+(A(:,j)'*V(:,i)/(A(:,j)'*A(:,j)))*A(:,j);
  18.     end   
  19.     A(:,i)=V(:,i)-k;
  20. end
复制代码



评分

1

查看全部评分

发表于 2013-4-7 18:39 | 显示全部楼层

我想画一条以一个参数变化的lyapunov指数图,如果想把最后的一个数值取出,再循环该如何编写!
发表于 2013-4-7 21:09 | 显示全部楼层
本帖最后由 牛小贱 于 2015-3-16 11:39 编辑
lihaitao123 发表于 2013-4-7 18:39
我想画一条以一个参数变化的lyapunov指数图,如果想把最后的一个数值取出,再循环该如何编写!
  1. clear;clc
  2. global R
  3. gama=linspace(20,30,100);
  4. for i=1:100;
  5. R=gama(i);
  6. [T,Res]=lyapunov(3,@lorenz_ext,@ode45,0,0.5,200,[0 1 0],10);
  7. lam(i)=max(Res(end,:));
  8. hold on
  9. end
  10. figure(1)
  11. plot(gama,lam);
  12. title('Dynamics of Lyapunov exponents');
  13. xlabel('R'); ylabel('Lyapunov exponents');
复制代码
这么写倒是解决了!!可是郁闷的是每种方法都有其一定适应性!

评分

1

查看全部评分

发表于 2013-4-8 09:38 | 显示全部楼层
lihaitao123 发表于 2013-4-7 21:09
clear;clc
global R
gama=linspace(20,30,100);

如何使每一次计算都从同一个初值开始呢?
发表于 2013-4-27 12:24 | 显示全部楼层
发表于 2015-3-16 10:30 | 显示全部楼层
如何使每一次计算都从同一个初值开始呢?
每次的初值不都是
[T,Res]=lyapunov(3,@lorenz_ext,@ode45,0,0.5,200,[0 1 0],10);
中的[0 1 0]吗
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-26 07:15 , Processed in 0.067004 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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