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
0 件のコメント
採用された回答
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
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
その他の回答 (0 件)
参考
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!