the program is plotted once, then showing error, is something error in program

1 Ansicht (letzte 30 Tage)
format long
a = 0;
b = 4;
h = 0.1;
k = 0.033;
L = 0.5;
s = 0.1;
tc = 70E-9;
n = (b-a)/h ;
t = a + (0:n)*h;
y(1) = 0;
func1 = @(y) ((-(s^2)*k/tc)*sin(y - pi/2) + L*(s^2)/(2*tc)*sin(y + pi/2)/sqrt(1 + cos(y + pi/2)));
for i = 1:n
k1 = func1(y(i));
k2 = func1 (y(i)+(k1/2)*h);
k3 = func1 (y(i)+(k2/2)*h);
k4 = func1(y(i)+(k3*h));
y(i+1) = y(i) + (h/6)*(k1+(2*(k2+k3))+k4);
end
plot(t,y)
==================================
output:- Error using plot
Vectors must be the same length.
  2 Kommentare
KSSV
KSSV am 21 Jul. 2022
It is working fine...clear you variables once and run the code.
a = 0;
b = 4;
h = 0.1;
k = 0.033;
L = 0.5;
s = 0.1;
tc = 70E-9;
n = (b-a)/h ;
t = a + (0:n)*h;
y(1) = 0;
func1 = @(y) ((-(s^2)*k/tc)*sin(y - pi/2) + L*(s^2)/(2*tc)*sin(y + pi/2)/sqrt(1 + cos(y + pi/2)));
for i = 1:n
k1 = func1(y(i));
k2 = func1 (y(i)+(k1/2)*h);
k3 = func1 (y(i)+(k2/2)*h);
k4 = func1(y(i)+(k3*h));
y(i+1) = y(i) + (h/6)*(k1+(2*(k2+k3))+k4);
end
whos t y
Name Size Bytes Class Attributes t 1x41 328 double y 1x41 328 double
plot(t,y)

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

KSSV
KSSV am 21 Jul. 2022
You initialize the value of y before for loop.
y = zeros(1,n) ;
y(1) = 0;
func1 = @(y) ((-(s^2)*k/tc)*sin(y - pi/2) + L*(s^2)/(2*tc)*sin(y + pi/2)/sqrt(1 + cos(y + pi/2)));

Weitere Antworten (0)

Kategorien

Mehr zu Discrete Data Plots finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by