How to automate the matrix-vector multiplication using the index of a vector?

조회 수: 1 (최근 30일)
Romio
Romio 2022년 7월 29일
댓글: Matt J 2022년 7월 29일
I have the following
m = 50;
a = 5
b = 2
c = 2
J = @(t,y) [diag(a*ones(1,m)) + diag(b*ones(1,m-1),1) + diag(c*ones(1,m-1),-1)];
I want to obtain the function/function handle (which takes (t,y) as argument) that gives essentially
A = @(t,y) [J*y]
but I want the output to be in terms of the elements of the vector y, these are y(1), y(2), ..., y(m). That is
[5*y(1) + 2*y(2);
2*y(1) + 5*y(5) + 2*y(3);
.
.
.
2*y(m-1) + 5*y(m)]

답변 (1개)

Matt J
Matt J 2022년 7월 29일
m = 50;
a = 5;
b = 2;
c = 2;
J = [diag(a*ones(1,m)) + diag(b*ones(1,m-1),1) + diag(c*ones(1,m-1),-1)];
syms y [m,1]
expression = J*y
expression = 
  댓글 수: 2
Romio
Romio 2022년 7월 29일
Thanks a lot Matt. The problem is that I can't use the sympolic toolbox in my application (ode solver)
Matt J
Matt J 2022년 7월 29일
If you can't use the symbolic toolbox, your question doesn't make sense because you've asked for a symbolic result. If you don't need a symbolic result, then J*y already gives you that.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Number Theory에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by