如何增加范围集中的数字直到给出特定答案?
How to increase number in range set till it gives a specific answer?
我写了一个 rungekutta 代码,它应该计算一个特定的 x 范围。问题是教授。想要一个不断自行累加直到达到所需答案的代码。
我尝试使用 'if' 函数,但它只能使用一次,而且不能再使用(因此,甚至会导致数组长度不匹配。
代码:
h=0.5;% step size
z=0.5;
x = 0:h:z;% the range of x
y = zeros(1,length(x));
y(1) = 50;% initial condition
F_xy = @(t,x) (37.5-3.5*x);%function
for i=1:(length(x)-1)% calculation loop
k_1 = F_xy(x(i),y(i));
k_2 = F_xy(x(i)+h,y(i)+h*k_1);
y(i+1) = y(i) + (h/2)*(k_1+k_2);% main equation
if y(i+1)>11
x=0:h:z+1;
end
end
disp (y(i+1))
数组长度错误(表明如果函数只工作一次)
41.4063
Error using plot
Vectors must be the same length.
Error in code6rungekutta2ndorder (line 30)
plot(x,y), grid on
它应该在'z'变量中继续增加+1,直到y(i+1)的答案小于11。(正确的z应该是9.5)
正如@medicine_man 所建议的,您需要一个 while
循环:
h=0.5;% step size
z=0.5;
x = 0;
y = 50;% initial condition
F_xy = @(t,x) (37.5-3.5*x);%function
m = 0;
while y(m+1) > 11
m = m+1;
x = x+h;
k_1 = F_xy(x,y(m));
k_2 = F_xy(x+h,y(m)+h*k_1);
y(m+1) = y(m) + (h/2)*(k_1+k_2);% main equation
end
figure;
plot(0:h:x, y);
您的终止条件 y(m+1) > 11
在 while
循环的每次迭代开始时被检查。在循环中,您可以增加 x
的值并更新 y
数组。循环运行直到满足终止条件。
以上代码的结果:
我写了一个 rungekutta 代码,它应该计算一个特定的 x 范围。问题是教授。想要一个不断自行累加直到达到所需答案的代码。
我尝试使用 'if' 函数,但它只能使用一次,而且不能再使用(因此,甚至会导致数组长度不匹配。
代码:
h=0.5;% step size
z=0.5;
x = 0:h:z;% the range of x
y = zeros(1,length(x));
y(1) = 50;% initial condition
F_xy = @(t,x) (37.5-3.5*x);%function
for i=1:(length(x)-1)% calculation loop
k_1 = F_xy(x(i),y(i));
k_2 = F_xy(x(i)+h,y(i)+h*k_1);
y(i+1) = y(i) + (h/2)*(k_1+k_2);% main equation
if y(i+1)>11
x=0:h:z+1;
end
end
disp (y(i+1))
数组长度错误(表明如果函数只工作一次)
41.4063
Error using plot
Vectors must be the same length.
Error in code6rungekutta2ndorder (line 30)
plot(x,y), grid on
它应该在'z'变量中继续增加+1,直到y(i+1)的答案小于11。(正确的z应该是9.5)
正如@medicine_man 所建议的,您需要一个 while
循环:
h=0.5;% step size
z=0.5;
x = 0;
y = 50;% initial condition
F_xy = @(t,x) (37.5-3.5*x);%function
m = 0;
while y(m+1) > 11
m = m+1;
x = x+h;
k_1 = F_xy(x,y(m));
k_2 = F_xy(x+h,y(m)+h*k_1);
y(m+1) = y(m) + (h/2)*(k_1+k_2);% main equation
end
figure;
plot(0:h:x, y);
您的终止条件 y(m+1) > 11
在 while
循环的每次迭代开始时被检查。在循环中,您可以增加 x
的值并更新 y
数组。循环运行直到满足终止条件。
以上代码的结果: