匿名用户
1级
2011-04-15 回答
FUNM(A,@EXP), FUNM(A,@LOG), FUNM(A,@COS), FUNM(A,@SIN),FUNM(A,@COSH), FUNM(A,@SINH).....
matlab中有以上用法,但没有funm(A,'log10'),如果做这个计算,估计得需要自己编个函数。
另外:log在matlab中表示基底e
log10(A)=log(A)/log(10),所以在运算中可先求log(A),再求log10(A)
追问:
这个变成求数组的对数了吧 这里A是矩阵
追答:
我的版本也有错,08b,也有可能是版本问题。
EXPM和FUNM是类似的矩阵函数,EXPM的具体算法如下:
[V,D] = EIG(X)
EXPM(X) = V*diag(exp(diag(D)))/V
所以仿照上式,
funm(A,'log10')
=V*diag(log10(diag(D)))/V
matlab运算过程如下:
A =
2 3 4
5 6 7
8 9 10
K>> [v,d]=eig(A)
v =
-0.2826 -0.7753 0.4082
-0.5383 -0.0740 -0.8165
-0.7939 0.6273 0.4082
d =
18.9499 0 0
0 -0.9499 0
0 0 -0.0000
K>> log10(diag(d))
ans =
1.2776
-0.0223 + 1.3644i
-15.6882 + 1.3644i
K>> v*diag(ans)/v
ans =
-2.4510 + 1.1730i 5.4386 - 0.2274i -2.3600 - 0.2634i
5.5693 - 0.3645i -10.0536 + 0.9313i 5.6999 - 0.5016i
-2.0987 - 0.5376i 5.8306 - 0.6388i -1.9284 + 0.6245i
和你给的结果实数部分比较接近,估计这个式子V*diag(log10(diag(D)))/V
还有些不对。我想我能提供的参考就这些了,若有错误或新发现,还望指出,望共同进步!~~