# unable to perform assignment because the left and right sides have a different number of elements.

조회 수: 26 (최근 30일)
jojo 2019년 11월 26일
댓글: darova 2019년 12월 5일
I need to update t and dx as shown below, but i keep getting the error: "unable to perform assignment because the left and right sides have a different number of elements."
I do understand that t(1) is 1 by 1 , while the new result 2 by 1.
This is the euler approach to analytical solution of ode.
clc;
clear all;
close all;
h = 0.1;
t = 0:h:5;
y = zeros(size(t));
t(1) = -2; % initial conditions
dx(1) =3; %Issue here
n = numel(y);
y_dot = @(t,dx)[dx; -3*dx-7*t];
for i=1:n-1
t(i+1)=t(i)+h;
dx(i+1) = dx(i)+h*y_dot(t(i+1),dx(i)); % Issue here. I tried (1) indexing but wouldn't work.
dx(i+1) = dx(i) + h*y_dot(t(i+1),dx(i+1));
end
##### 댓글 수: 2없음 표시없음 숨기기
Jyotsna Talluri 2019년 12월 4일
Can you mention what you want to achieve mathematically?
darova 2019년 12월 5일
y_dot returns 2 values
y_dot = @(t,dx)[dx; -3*dx-7*t];
And you are trying to pass 2 values to dx(i+1)
dx(i+1) = dx(i)+h*y_dot(t(i+1),dx(i));

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

### 채택된 답변

Luna 2019년 12월 4일
편집: Luna 2019년 12월 4일
Hi,
It is because you defined dx = 3 as 1x1 double. Your function y_dot gives 2x1 double as result. So it is not possible to concatanate them because first element is 1x1 and second, third other elements are 2x1. Maybe you can try code I fixed below. Your result dx will be 2x50 matrix at the end of the loop.
If you explain what you need as a result it would be much more better.
h = 0.1;
t = 0:h:5;
y = zeros(size(t));
t(1) = -2; % initial conditions
dx(:,1) =[3;3]; %Changed this 2x1 double array with 3.
n = numel(y);
y_dot = @(t,dx)[dx; -3*dx-7*t];
for i=1:n-1
t(i+1)=t(i)+h;
dx(:,i+1) = dx(i)+h*y_dot(t(i+1),dx(i)); % Changed this with (:,i+1) means all rows of i+1.th column.
dx(:,i+1) = dx(i) + h*y_dot(t(i+1),dx(i+1));
end

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

### 카테고리

Help CenterFile Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기

### Community Treasure Hunt

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

Start Hunting!

Translated by