声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1326|回复: 6

[编程技巧] 求行列式值有没有类似点乘那种功能的命令

[复制链接]
发表于 2008-12-25 20:31 | 显示全部楼层 |阅读模式

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

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

x
例如
a=[1,2]; b=[3,4];c=[5,6];d=[7,8]
我想找一个命令比如说是det_dot,
直接用det_dot([a,b;c,d;]);
结果是det([1,3;5,7;])和det([2,4;6,8;])

[ 本帖最后由 liuxbin 于 2008-12-25 20:32 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-12-25 21:45 | 显示全部楼层

回复 楼主 liuxbin 的帖子

不太明白LZ问题的意思
发表于 2008-12-26 09:44 | 显示全部楼层
建议lz自己编一个吧

评分

1

查看全部评分

 楼主| 发表于 2008-12-27 16:43 | 显示全部楼层
我想了一个办法,先用符号运算将这个方阵展开,然后就可以实现点乘功能了,也就是Vectorized了

评分

1

查看全部评分

发表于 2008-12-27 20:11 | 显示全部楼层

回复 地板 liuxbin 的帖子

符号运算速度太慢了
 楼主| 发表于 2008-12-28 11:20 | 显示全部楼层
楼上没有理解我的意思
我的方阵维数比较高,这里我用二维方阵作为例子
本来我是这样实现的
x=[1,2,3];
a=sin(x);b=cos(x);c=exp(x);d=x;
size_x=size(x);
for count_x=1:size_x(2)
value(count_x)=det([a(count_x),b(count_x);c(count_x),d(count_x);]);
end
但是这样有一个问题就是我在跑一个程序的时候报错,提示没有Vectorized

然后我就用符号运算det([a,b;c,d])=a*d-b*c,得到了行列式展开式.
然后我把它改成了a.*d-b.*c,
x=[1,2,3];
a=sin(x);b=cos(x);c=exp(x);d=x;
value=a.*d-b.*c;
这样就实现了Vectorized,而且速度比上面用的循环要快好多

评分

1

查看全部评分

发表于 2008-12-28 13:25 | 显示全部楼层

回复 6楼 liuxbin 的帖子

请问LZ问题解决啦?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-15 11:08 , Processed in 0.057752 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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