フィルターのクリア

I keep receiving "Error using / Arguments must be numeric, char, or logical." when I try to find value of sym function

79 ビュー (過去 30 日間)
I am trying to solve a system of ODE's using the Runge Kutta Method and I keep receiving the above error when I try to run it. Any help would be much appreciated!
d = @(t) sqrt(d0^2 -k*t*(d0)^2);
m = @(t) 1000*(1/6)*d^3;
Fd2 = @(t,y,v) (18*pi*v)/(1000*(d^2)) ;
F1 = @(t,y,v) v ;%dy/dt = v
F2 = @(t,y,v) Fd2/m - 9.8 % dv/dt = -g + Fd/m
h = 1;
t = 0:h:15; %Analyzing up to t = 15.
v = zeros(1,length(t));
y = zeros(1,length(t));
v(1) = 0;
y(1) = 2000;
for i = 1:1:length(t) - 1
k1 = F1(t(i),y(i),v(i))
p1 = F2(t(i),y(i),v(i))
k2 = F1(t(i)+h/2, y(i)+(h/2)*k1, v(i)+(h/2)*p1)
p2 = F2(t(i)+h/2, y(i)+(h/2)*k1, v(i)+(h/2)*p1)
k3 = F1(t(i)+h/2, y(i)+(h/2)*k2, v(i)+(h/2)*p2)
p3 = F2(t(i)+h/2, y(i)+(h/2)*k2, v(i)+(h/2)*p2)
k4 = F1(t(i)+h, y(i)+(h)*k3, v(i)+(h)*p3)
p4 = F2(t(i)+h, y(i)+(h)*k3, v(i)+(h)*p3)
y(i+1) = y(1) + h * (k1+2*k2+2*k3+k4)/6
v(i+1) = v(i) + h * (p1+2*p2+2*p3+p4)/6
end
The following is the full error I receive:
Error using /
Arguments must be numeric, char, or logical.
Error in RK>@(t,y,v)Fd2/m-9.8 (line 30)
F2 = @(t,y,v) Fd2/m - 9.8 % dv/dt = -g + Fd/m
Error in RK (line 43)
p1 = F2(t(i),y(i),v(i))

採用された回答

Scott MacKenzie
Scott MacKenzie 2021 年 6 月 26 日
編集済み: Scott MacKenzie 2021 年 6 月 26 日
If a function calls another function that takes input variables, you need to define the function to pass the variables through to the other function.
So, change
F2 = @(t,y,v) Fd2/m - 9.8
to
F2 = @(t,y,v) Fd2(t,y,v)/m(t) - 9.8
Also, change
m = @(t) 1000*(1/6)*d^3;
to
m = @(t) 1000*(1/6)*d(t)^3;
  3 件のコメント
Scott MacKenzie
Scott MacKenzie 2021 年 6 月 27 日
@Michal Amar You're welcome. So, with the function definitions corrected, it seems your problem has shifted from a syntactic error to a semantic error. Semantic errors are generally trickier to resolve.
There are lot of calculations to navigate in your code. Offhand, I don't see any obvious problem. I suggest you post the new problem (unexpected imaginary numbers) as a new question. A fresh set of eyes might help. Good luck.

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by