返回信息流非常感谢
这是一条镜像帖。来源:北邮人论坛 / matlab / #6004同步于 2009/7/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
求助:牛人解决MATLAB难题
m921
2009/7/15镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
【 在 m921 的大作中提到: 】
: 非常感谢
如果在b和c小题中你的答案没有出现for和while, 那么将有加分。
a)v=[1,2,...,50],A=magic(50)
指令v'*(v*A)和(v'*v)*A有同样的结果,请你测试一下,哪个指令更快,并且给出理由。
b)
X=[ 0 1 0 0
4 3 7 0
0 0 2 6
0 9 0 5];
i=[2 1 2 3];
v=[4 1 7 6]; i表示行数, v表示值。
请你写出方程式[i,v]=erstes(X)。请注意行列里如果有一整列或者一整行都为零这时在i和v里写NaN。 答案提示:用 find,diff,logical。
c)A和B是两个n*n的矩阵。请写出n2*n2的块状对角矩阵方程function T=blocktridiag(A,B),它主对角线是A,副对角线是B。
n=3时,为
X=[ A B 0
B A B
0 B A];
其中有为0的n*n零矩阵。这个问题将用到kron和diag。
d)A=pascal(15),B=magic(15),b=ones(15,1),在不计算A*B的情况下请你确定A*B*x=b中的x。这个问题你可以用到Backslash-Operator。
你的第一个题目我已经过了多次的验证,每次的结果都不一样,从平均时间来看,还是二个用的时间比较少点,第一个用的时间比较多。两者在节省时间上没有太大的区别,至于原因我暂时也没有想出来!后面两个问题我暂时也没有结果,等闲下来了,我在想想吧!MATLAB的程序如下:clear all,
tic,
V=1:1:50; A=magic(50) ;
% B=V'*(V*A); toc
C=(V'*V)*A; toc
第一个题目修改下,
clc,clear;
V=1:1:50; A=magic(50) ;
tic; B=V'*(V*A); t1=toc
tic; C=(V'*V)*A; t2=toc
t1-t2
---------------------
t1 = 5.2311e-005
t2 = 2.0924e-004
ans = -1.5693e-004
---------------------
理由: 运行多次,t1-t2都是负值,第一种快些。
时间因CPU使用率,主频有关,t1-t2结果是负值应该不变。