clear all; close all; clc; %% Primjer numeričkog rješavanja običnih dif. jed. u GNU Octave-u % Matematika 2, VSMTI % definiramo dif. jed. dy/dx = f(x, y) i početni uvjet f= @(x, y) x*(1+y^2) a = 0; % donja granica intervala b = 1; % gornja granica intervala y_0 = 1; % riješimo problem numerički pomoću funkcije ode45() - red 4 % ulaz: funkcija, interval na kojem rješavamo problem, % početni uvjet, dodatne opcije % izlaz: vektor x45 - vektor koji sadrži koordinate rješenja na x-osi % vektor y45 - vektor koji sadrži aproksimacije vrijednosti % funkcije rješenja %[x45, y45] = ode45(f, [a, b], y_0, 'RelTol', 1e-6); % riješimo problem i pomoću implementirane Eulerove metode n = 101; %broj čvorova [x_E,y_E] = odj_euler(f,a,b,y_0,n); % eksplicitno rješenje problema: rj =@(x) tan(x.^2/2 + pi/4) %crtamo sva dobivena rješenja na istom grafu figure(1),plot(x45, y45, 'g*--') hold on plot(x_E,y_E, 'r--') hold on fplot(rj, [0, 1], 'b-'), legend('rj. pomocu ode45()', 'rj. pomocu Eulerove metode #intervala = 100', 'egzaktno rj.')