fortran转换 matlab代码,将Fortran77代码转换为Matlab代码以查找特征值/向量

我将Fortran 77中的书面代码转换为Matlab代码。该函数使用QL算法计算矩阵的特征值和特征向量。由于某些原因,我不能在matlab中使用eig函数的结果。这种方法得到的特征值与eig函数得到的特征值不一样,有些相同但有些不同。我不知道问题在哪里。感谢您的任何帮助和建议。如果需要运行并观察结果,我可以给出输入数组。

这里是fortran代码:

SUBROUTINE tqli(d,e,n,np,z)

INTEGER n,np

REAL d(np),e(np),z(np,np)

CU USES pythag

INTEGER i,iter,k,l,m

REAL b,c,dd,f,g,p,r,s,pythag

do 11 i=2,n

e(i-1)=e(i)

11 continue

e(n)=0.

do 15 l=1,n

iter=0

1 do 12 m=l,n-1

dd=abs(d(m))+abs(d(m+1))

if (abs(e(m))+dd.eq.dd) goto 2

12 continue

m=n

2 if(m.ne.l)then

if(iter.eq.30)pause 'too many iterations in tqli'

iter=iter+1

g=(d(l+1)-d(l))/(2.*e(l))

r=pythag(g,1.)

g=d(m)-d(l)+e(l)/(g+sign(r,g))

s=1.

c=1.

p=0.

do 14 i=m-1,l,-1

f=s*e(i)

b=c*e(i)

r=pythag(f,g)

e(i+1)=r

if(r.eq.0.)then

d(i+1)=d(i+1)-p

e(m)=0.

goto 1

endif

s=f/r

c=g/r

g=d(i+1)-p

r=(d(i)-g)*s+2.*c*b

p=s*r

d(i+1)=g+p

g=c*r-b

C Omit lines from here ...

do 13 k=1,n

f=z(k,i+1)

z(k,i+1)=s*z(k,i)+c*f

z(k,i)=c*z(k,i)-s*f

13 continue

C ... to here when finding only eigenvalues.

14 continue

d(l)=d(l)-p

e(l)=g

e(m)=0.

goto 1

endif

15 continue

return

END以下是matlab代码:

function [d,z]=tqli(d,e,n,np,z)

for i=2:n

e(i-1)=e(i);

end

e(n)=0.;

for l=1:n

iter=0;

for m=l:(n-1)

dd=abs(d(m))+abs(d(m+1));

if ((abs(e(m))+dd)==dd)

break

end

end

m=n;

if (m~=l)

if (iter==30)

disp('too many iteration in tqli')

end

iter=iter+1;

g=(d(l+1)-d(l))/(2.*e(l));

r=pythag(g,1.);

g=d(m)-d(l)+e(l)/(g+r*sign(g));

s=1.;

c=1.;

p=0.;

for i=(m-1):-1:l

f=s*e(i);

b=c*e(i);

r=pythag(f,g);

e(i+1)=r;

if(r==0.)

d(i+1)=d(i+1)-p;

e(m)=0.;

break

end

s=f/r;

c=g/r;

g=d(i+1)-p;

r=(d(i)-g)*s+2.*c*b;

p=s*r;

d(i+1)=g+p;

g=c*r-b;

for k=1:n

f=z(k,i+1);

z(k,i+1)=s*z(k,i)+c*f;

z(k,i)=c*z(k,i)-s*f;

end

end

d(l)=d(l)-p;

e(l)=g;

e(m)=0.;

end

end

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux内核中分配4M以上大内存的方法

在内核中, kmalloc能够分配的最大连续内存为2的(MAX_ORDER-1)次方个page(参见alloc_pages函数, "if (unlikely(order > MAX_ORDER)) return NULL;"), page的大小一般是4K bytes,MAX_ORDER缺省定义为11, 所以如果不修改内核, kmalloc能够分配的最大连续…

sql server 2008学习3 表组织和索引组织

表组织 表包含在一个或多个分区中,每个分区在一个堆或一个聚集索引结构包含数据行。堆页或聚集索引页在一个或多个分配单元中进行管理,具体的分配单元数取决于数据行中的列类型。 聚集表、堆和索引 SQL Server 表使用下列两种方法之一来组织其分区中的数…

BootLoader与Linux内核的参数传递

在嵌入式系统中,BootLoader 是用来初始化硬件,加载内核,传递参数。因为嵌入式系统的硬件环境各不相同,所以嵌入式系统的BootLoader 也各不相同,其中比较通用的是U-Boot,它支持不同的体系结构,如…

怎么跟踪php代码,第九节 PHP 跟踪调试代码 XDebug

>[success] # PHP 跟踪调试代码 XDebug- [下载XDebug扩展](https://xdebug.org/download.php)- 下载对应PHP版本的Xdebug![](https://box.kancloud.cn/c17f1f1e965522c2fe1411e1759e4447_870x524.png)- 线程安全(TS)和非线程安全(NTS)![](https://box.kancloud.cn/24efc18d4…

oracle经纬度换算成xy坐标,经纬度换算成xy坐标(经纬度转换xy坐标算法)

经纬度怎么转换成平面xy坐标?这里面的经纬度转换成xy坐标是多少?求解你把角度的单位设成度分秒制输入不久可以了。具体输入units命令,对话框中会有一个角度的单位制选择,包括度分秒制。例如绘制一条与当前点距离为100,…

Linux内核参数传递Tag

在2.4(具体哪个版本记不清了)以后的Linux内核中引入了一种新的向内核传递参数的方法tag标记。内核参数通过一个静态的tag链表在启动的时候传递到内核。每个tag的结构为 ----------- tag_header ----------- tag_xxx ----------- 其中tag_header为tag头&a…

ns学习资料

(一). NS常用基本网站   1. Maillist个人觉得是寻求问题答案最好的地方。   http://mailman.isi.edu/pipermail/ns-users/   2. 柯老师的网站,包含很多非常实用资源:安装,trace文件分析,源代码分析&a…

Oracle备份standby,Oracle 11g 利用泠备份恢复standby库

Oracle 11g 利用泠备份恢复standby库1 开始在备库上进行泠备份先查好控制文件、redo、undo文件、数据文件的路径1.1 先关闭主库的归档日志传输SQL> ALTER system SETlog_archive_dest_state_2 DEFER;System altered.SQL>1.2 先关闭standby库SQL> shutdown immediate;D…

Linux内核参数的介绍

sysctl -a 可以列出当前所有的Linux内核参数。 /proc/sys/目录下的东西,对应着sysctl -a列出来的。 man 5 proc syscall 在 /arch/i386/kernel/entry.S里面列出来,这个看起来可能更方便

matlab单位阶跃响应与单位脉冲响应,python 已知响应函数求单位阶跃响应或脉冲响应...

最近学习自动控制原理,关于控制系统的一些,老师用布置了一些作业说要用matlab画,我试试python首先介绍一下所使用的库:control matplotlib sympy1.control库:用来计算脉冲响应与阶跃响应Paste_Image.png2.sympy&#x…

SQL SERVER 的SQL语句优化方式小结

SQL SERVER 的SQL语句优化方式小结详细出处参考:http://www.jb51.net/article/19547.htm 1、SQL SERVER 2005的性能工具中有SQL Server Profiler和数据库引擎优化顾问,极好的东东,必须熟练使用。 2、查询SQL语句时打开“显示估计的执行计划”…

u-boot向linux内核传递启动参数

U-BOOT 在启动内核时,会向内核传递一些参数.而这些参数是通过 structtag来传递的。 U-boot 把要传递给 kernel 的东西保存在 struct tag数据结构中,启动 kernel 时,把这个结构体的物理地址传给 kernel;Linux kernel通过这个地址分析出u-boot传…

$_server['php_self'] 漏洞,Discuz! $_SERVER['PHP_SELF'] XSS Vulnerability

在common.inc.php文件的69行:$PHP_SELF $_SERVER[PHP_SELF] ? $_SERVER[PHP_SELF] : $_SERVER[SCRIPT_NAME];$SCRIPT_FILENAME str_replace(\\\\, /, (isset($_SERVER[PATH_TRANSLATED]) ? $_SERVER[PATH_TRANSLATED] : $_SERVER[SCRIPT_FILENAME]));$boardurl …

【前端破解系列之一】一分钟教你破解下载虾米音乐

虾米音乐网站上有很多高品质的音乐和精心组织的精选集,但普通用户只能试听,不能下载,下载的话需要使用“米”,这个“米”除了极少数的新手任务可以获得之外,基本上都要靠付费来购买,很多人没有网银或者没有…

网络编程常用接口的内核实现----sys_listen()

listen()函数仅在TCP服务器端调用,它做两个事情:将套接字转换到LISTEN状态和设置套接上的最大连接队列。listen()对应的内核实现为sys_listen(),下面开始对其实现作具体的分析。 一、sys_listen()函数 sys_listen()的源码实现及分析如下所示…

linux查看启动配置文件内容,Linux开机启动项的查看和设置方法总结

一、查看开机自启项1.Centos7自启项查看方式从Centos6的chkconfig改为:systemctl list-unit-files2.用grep过滤查看,比如:查看启动项:systemctl list-unit-files | grep enable查看sshd服务自启动情况:systemctl list-…

sql SET DATEFORMAT对日期处理的影响

--1./*--说明SET DATEFORMAT设置对使用CONVERT把字符型日期转换为日期的处理也具有影响但不影响明确指定了style的CONVERT处理。--*/--示例 ,在下面的示例中,第一个CONVERT转换未指定style,转换的结果受SET DATAFORMAT的影响,第二…

linux怎么设置tomcat自动启动,linux添加tomcat服务并设置开机启动

一,脚本文件,编辑好后放在/etc/rc.d/init.d/下面#!/bin/sh#chkconfig: 2345 10 90# description: Starts and Stops the Tomcat daemon.#by jj###############################################Startup script for Tomcat on Linux#filename tomcat.sh#M…

Linux操作系统内核启动参数详细解析

Linux内核在启动的时候,能接收某些命令行选项或启动时参数。当内核不能识别某些硬件进而不能设置硬件参数或者为了避免内核更改某些参数的值,可以通过这种方式手动将这些参数传递给内核。 如果不使用启动管理器,比如直接从BIOS或者把内核文…

XP Embedded:不同的用户使用不同的外壳程序

摘要: 能够使应用程序成为外壳程序是 Windows XP Embedded 的关键功能之一。设备可以在自定义外壳程序而不是 Explorer 外壳程序中启动,这提供了两个好处。第一个好处是系统能够更快地启动。Explorer 外壳程序需要花费大量的时间来加载所有支持库和文件…