Clear Filters
Clear Filters

How do I add additional values for k into the function?

2 views (last 30 days)
clear; clc; close('all');
y = 0.2;
t = 0;
h = 0.01;
tn = 0.2;
[t, y] = Euler(t, y, h, tn);
function [t, y] = Euler(t0, y0, h, tn)
t = (t0:h:tn)';
y = zeros(size(t));
y(1) = y0;
for i = 1:1:length(t)-1
y(i+1) = y(i) + h*f(y(i),t(i));
end
fprintf('The concentration of H2O after 0.2 seconds (kf=30):\n')
disp(y(21))
end
function dydt = f(y,t)
k1 = 30;
c = 0.2;
b = 0.4;
a = 0.5;
dydt = k1*b*a;
end
So for example, the output I have now is:
The concentration of H2O after 0.2 seconds (kf=30): 1.4000
How do I add a k2 and a k3 to the function both with values of 20 and 40 and make my output:
The concentration of H2O after 0.2 seconds (kf=30): 1.4000
The concentration of H2O after 0.2 seconds (kf=20): _______
The concentration of H2O after 0.2 seconds (kf=40): _______
  5 Comments
johnmurdock
johnmurdock on 26 Apr 2019
I understand controlling the k1 values, however I can't figure out how to impliment it all in the script file.

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 26 Apr 2019
y = 0.2;
t = 0;
h = 0.01;
tn = 0.2;
kf_vals = [30 20 40];
for Kidx = 1 : length(kf_vals)
kf = kf_vals(Kidx);
%we assume that all the t values are the same
[t, y(:,Kidx)] = Euler(t, y, h, tn, kf);
end
for Kidx = 1 : length(kf_vals)
kf = kf_vals(Kidx);
fprintf('The concentration of H2O after %g seconds (kf=%g): %g\n', t(end), kf, y(end, Kidx));
end
function [t, y] = Euler(t0, y0, h, tn, kf)
t = (t0:h:tn)';
y = zeros(size(t));
y(1) = y0;
for i = 1:1:length(t)-1
y(i+1) = y(i) + h*f(y(i), t(i), kf);
end
end
function dydt = f(y, t, kf)
c = 0.2;
b = 0.4;
a = 0.5;
dydt = kf*b*a;
end

Tags

Community Treasure Hunt

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

Start Hunting!