高手请进,关于matlab函数执行过程的问题!?
for k=1:(n-1)a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))-a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1));a((k+1):n,k)=zeros(n-k,1);end这是用gauss消去解线性方程组的部分matlab程序。因为我是一个初学者,对程序的执行过程很是不理解,还希望高手赐教。我想问,假设说n=3。那么for循环是如何执行的,是先运算出a(2,2),a(2,3),a(2,4)然后再计算出a(3,2),a(3,3),a(3,4)吗?还是另外的执行方式?我想问的是程序是怎么解决变量k的增长问题的?
参考答案:用字母验证就可以看出来了啊
a=sym('[A B C D;E F G H;I J K L;M N O P]')
n=3
for k=1:(n-1)
a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))-a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1))
a((k+1):n,k)=zeros(n-k,1)
end
运行结果:
a =
[ A, B, C, D]
[ E, F, G, H]
[ I, J, K, L]
[ M, N, O, P]
n =3
a =
[ A, B, C, D]
[ E, F-E/A*B, G-E/A*C, H-E/A*D]
[ I, J-I/A*B, K-I/A*C, L-I/A*D]
[ M, N, O, P]
a =
[ A, B, C, D]
[ 0, F-E/A*B, G-E/A*C, H-E/A*D]
[ 0, J-I/A*B, K-I/A*C, L-I/A*D]
[ M, N, O, P]
a =
[ A, B, C, D]
[ 0, F-E/A*B, G-E/A*C, H-E/A*D]
[ 0, J-I/A*B, K-I/A*C-(J-I/A*B)/(F-E/A*B)*(G-E/A*C), L-I/A*D-(J-I/A*B)/(F-E/A*B)*(H-E/A*D)]
[ M, N, O, P]
a =
[ A, B, C, D]
[ 0, F-E/A*B, G-E/A*C, H-E/A*D]
[ 0, 0, K-I/A*C-(J-I/A*B)/(F-E/A*B)*(G-E/A*C), L-I/A*D-(J-I/A*B)/(F-E/A*B)*(H-E/A*D)]
[ M, N, O, P]