Unable to perform assignment because the left and right sides have a different number of elements.
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
The code is for basic Euler to solve Second order ODEs, I'm really stuck for how to resolve this error message:
'Unable to perform assignment because the left and right sides have a different number of elements.
Error in basicEuler (line 23)
v1(i + 1) = v1(i) + h*(eq1(x1(i), x2(i), v1(i), v2(i))); '
Any help/advice is welcome
Thank you
function [] = basicEuler(h,N)
h = 0.5; N = 500;
t = 1:h:N;
x1 = zeros(size(t)); x1(1) = -7;
x2 = zeros(size(t)); x2(1) = 7;
x3 = zeros(size(t)); x3(1) = -3;
v1 = zeros(size(t)); v1(1) = -3;
v2 = zeros(size(t)); v2(1) = -2;
v3 = zeros(size(t)); v3(1) = -1;
F = zeros(size(t)); F(1) = myForce(0);
for i = 1:(length(t)-1)
F(i + 1) = myForce(i);
x1(i + 1) = x1(i) + h*v1(i);
x2(i + 1) = x2(i) + h*v2(i);
x3(i + 1) = x3(i) + h*v3(i);
v1(i + 1) = v1(i) + h*(eq1(x1(i), x2(i), v1(i), v2(i)));
v2(i + 1) = v2(i) + h*(eq2(x1(i), x2(i), x3(i), v1(i), v2(i), v3(i)));
v3(i + 1) = v3(i) + h*(eq3(x2(i), x3(i), v2(i), v3(i), F(i)));
end
figure(1);
plot(t,x1)
title('basicEuler x1(t)')
xlabel('Time')
ylabel('Displacement')
figure(2);
plot(t,x2)
title('basicEuler x2(t)')
xlabel('Time')
ylabel('Displacement')
figure(3);
plot(t,x3)
title('basicEuler x3(t)')
xlabel('Time')
ylabel('Displacement')
end
4 Kommentare
Antworten (1)
SAI SRUJAN
am 22 Jan. 2024
Hi cody,
I understand that you are working solve second-order ODEs using the Euler method. You're encountering an error that says, "Unable to perform assignment because the left and right sides have a different number of elements," which occurs at line 23 in your code.
v1(i + 1) = v1(i) + h*(eq1(x1(i), x2(i), v1(i), v2(i)));
This error typically indicates that when you're trying to assign a value to 'v1(i + 1)', MATLAB expects a single value on the right side of the assignment, but it's receiving an array or a different number of elements instead.
It is critical to verify that the global variables 'c1',' c2', 'c3', 'k1', 'k2', 'k3', 'm1', 'm2', and 'm3', which are utilized within your 'eq1', 'eq2', and 'eq3' functions, are correctly initialized and assigned scalar values prior to invoking the 'basicEuler' function.
Please ensure that the equation, yields a single scalar value as a result.
equation1 = (-( v1*( c1 + c2 ) + ( v2*c2 ) - ( x1*( k1 + k2 ) ) + ( x2*k2 ) ) ) /m1 ;
By ensuring the accuracy of aforementioned details, you should be able to resolve the error.
I hope this helps!
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!