Help me with this task using (Euler`s method)

11 次查看(过去 30 天)
Question:
Use this method to solve the following IVP:
A series RC circuit with R = 5 W and C = 0.02 F is connected with a battery of E = 100 V. At t = 0, the voltage across the capacitor is zero.
(a) Obtain the subsequent voltage across the capacitor.
(b)find the true error if the exact solution is: Vc = V(1e^(-t/RC))
Hint:
Use the formula
r(dq/dt)+(q/c)=v
---------------------------------------------
It is giving me msg operator '*' is not supported for operands of type 'function_handle'
also i wanna ypu give me advices on my work if i working right or wrong to improve as it`s my first time to use matlab
My Work:
R=5;
C=0.02;
E=100;
Y0=0;
Xinitial=0;
Xfinal=1;
h=0.01;
X=Xinitial:h:Xfinal;
Y = zeros(size(X));
N=(Xfinal-Xinitial)/h;
for i=1:N-1
Ydot=@(t,q) (E-q/C)/R;
Y(i+1) = Y(i) + h*(Ydot);
end
Vreuler= Y0 / C;
Exact=E * (1 - exp(-X/(R*C)));
Error=(Exact-Vreuler)/Exact;
polt(x.y); grid onh

采纳的回答

James Tursa
James Tursa 2020-12-14
编辑:James Tursa 2020-12-14
The function handle is something you only need to create once, before the for-loop starts. Then call that function handle with your state inside the loop. E.g.,
Ydot = @(t,q) (E-q/C)/R;
Y(1) = Y0;
for i=1:N-1
Y(i+1) = Y(i) + h*Ydot(X(i),Y(i));
end
Then the plot would be
plot(X,Y,X,Exact); grid on
And this is a more robust way of defining N:
N = numel(X);
  3 个评论
James Tursa
James Tursa 2020-12-14
编辑:James Tursa 2020-12-14
MATLAB is case sensitive. You had used uppercase X in your first post and you need to stay with that. E.g.,
Y = zeros(size(X)); % UPPERCASE X, not lowercase x
Also your plot needs to change that period to a comma and spell plot properly
plot(X,Y,X,Exact); grid on

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by