フィルターのクリア

Solve for A matrix in Ax = 0

19 ビュー (過去 30 日間)
Mainak Dhar
Mainak Dhar 2024 年 2 月 22 日
コメント済み: Mainak Dhar 2024 年 2 月 22 日
Hi,
I want to solve for a n x n matrix A when I know the n x 1 vector x and the system of linear equations is Ax = 0. The linear constraints I have on solving it is that each column should sum to 0 and I also know the diagonal elements of the A matrix. The matrix A is also tridiagonal, so the only non-zero elements are the ones on the main diagonal and the diagonals above and below it.
I can solve it by hand but unsure about how to do it using MATLAB. I assumed lsqlin would be able to do it but it seems like it only solves for the x vector.
Any ideas will be greatly appreciated. Thanks in advance.
  1 件のコメント
Torsten
Torsten 2024 年 2 月 22 日
You have 2*n equations for 2*(n-1) degrees of freedom. So usually, your problem will not have a solution.

サインインしてコメントする。

採用された回答

Matt J
Matt J 2024 年 2 月 22 日
編集済み: Matt J 2024 年 2 月 22 日
n=numel(x);
mask=tril(triu(ones(n),-1),+1); %tridiagonal mask
A=optimvar('A',[n,n]);
prob = eqnproblem;
prob.Equations.eqn1=sum(A,1)==0; %known column sums
prob.Equations.eqn2=diag(A)==Adiag; %known diagonal values
prob.Equations.eqn3=A.*mask==A; %tridiagonal conition
prob.Equations.eqn4=A*x==0; %A*x==0
[sol,fval,exitflag] = solve(prob);
  4 件のコメント
Matt J
Matt J 2024 年 2 月 22 日
Yep, you're right.
Mainak Dhar
Mainak Dhar 2024 年 2 月 22 日
Thanks all, for the explanations and the solutions. I'm sure I'm framing the question wrong but I can't figure out what. I believe I'll be able to solve it from here by putting in a little work. Much appreciated.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSolver Outputs and Iterative Display についてさらに検索

製品


リリース

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by