matlab error: matrix dimension must agree

1 次查看(过去 30 天)
i am trying to solve linear equation by SVD. i get the error, "matrix dimension must agree" at the line x = V*((U'*B)./diag(S));
this is the code
% question (6) part (1) ...[show how to use SVD to solve linear systems of
% equation
%how SVD is used to solve systems of linear equations
% we have taken a system of linear equation
a = 0.00:100.00;
b = 0.00:100.00;
c = 0.00:100.00;
d = 0.00:100.00;
p = 0.00:100.00;
q = 0.00:100.00;
A = [a b;c d];
B = [p;q];
prompt = 'enter a number';
a = input(prompt);
b = input(prompt);
c = input(prompt);
d = input(prompt);
p = input(prompt);
q = input(prompt);
%if A*x = B is a nxn linear system then
%SVD of A is
[U,S,V]=svd(A,0);
%solution of the equation A*x = B is
x = V*((U'*B)./diag(S));% if we multiply U, S, V transpose then with some rounding error, we get A.
%so US(V(transpose))=A, so USVt.x = B, so x = (USVt)t*B (where t is the
%transpose. so x = Ut.st.(vt)T*b. now U is orthogonal matrix so, Ut = U
%inverse or U'. S is diagonal matrix so St=diag(S) and (Vt)t= V
disp(x);
please let me know how to solve this

采纳的回答

Matt J
Matt J 2013-3-10
Shouldn't A,B be created after the a,b,...q data are entered?
prompt = 'enter a number';
a = input(prompt);
b = input(prompt);
c = input(prompt);
d = input(prompt);
p = input(prompt);
q = input(prompt);
A = [a b;c d];
B = [p;q];
  2 个评论
Matt J
Matt J 2013-3-10
编辑:Matt J 2013-3-10
Or, if you are doing this for a sequence of a(i)...q(i)
a = 0.00:100.00;
b = 0.00:100.00;
c = 0.00:100.00;
d = 0.00:100.00;
p = 0.00:100.00;
q = 0.00:100.00;
f=@(z) reshape(z,1,1,[]);
As=[f(a),f(b);f(c) f(d)];
Bs=[f(p);f(q)];
for i=1:length(a)
A=As(:,:,i);
B=Bs(:,:,i);
etc...
end
Sat m
Sat m 2013-3-10
thank you. it solved the problem. thank you

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Linear Algebra 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by