필터 지우기
필터 지우기

Solve for A matrix in Ax = 0

조회 수: 47 (최근 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 CenterFile Exchange에서 Solver 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