+1 (315) 557-6473 

Program To Solve Fluid Questions in OOP Language Assignment Solution.


Instructions

Objective
If you require assistance with your Object-Oriented Programming assignment, I can help you craft a program that tackles fluid questions using OOP concepts. The task involves writing a program that effectively addresses fluid-related problems while applying principles like encapsulation, inheritance, and polymorphism. By implementing these Object-Oriented Programming techniques, the program can efficiently model fluid scenarios and provide accurate solutions. Feel free to provide any specific requirements or guidelines for your assignment, and I'll ensure the code meets your needs while demonstrating a solid understanding of OOP principles.

Requirements and Specifications

Program to solve fluid questions in OOP
Program to solve fluid questions in OOP 1

Source Code

PROBLEM 1

clc, clear all, close all

%% Parameters of the tank

R = 3;

%% We want to calculate the depth of the tank such that the volume is 30 m^3. So:

    % pi*h^2 *(3*R-h)/3 = 30

% Then, the function will be:

    % f(x) = pi*x^2 *(3*R-x)/3 - 30, where h = x

f = @(x)(pi*x^2 *(3*R - x)/3 - 30);

%% Pat a) Newton's Method

% The first derivate of this function respect to x is:

df = @(x)(2*x*pi*(3*R - x)/3 - pi*x^2 /3);

% Define initial error and tolerance

error = Inf;

tol = 1e-6;

% Define initial value

x = R;

n = 1;

while error >= tol % execute algorithm while the error is higher than the tolerance

    x = x - f(x)/df(x);

    error = abs(f(x));

% fprintf("Iteration %d, error = %.8f\n", n, error);

    n = n + 1;

end

fprintf("The solution obtained using Newton's method in %d iterations is h = %.4f m\n", n, x);

%% Part b): Secant Method

%% Define the interval [a,b] in which we assume the solution may be

a = 1;

b = 3;

% Define initial error and tolerance

error = Inf;

tol = 1e-6;

max_iters = 500;

n = 1;

while error >= tol % execute algorithm while the error is higher than the tolerance

    x0 = a;

    x1 = b;

    x2 = x1 - (x1-x0)*f(x1) / (f(x1)-f(x0)); % calculate x2

    aold = a;

    bold = b;

    % Update

    a = x1;

    b = x2;

    error = abs(b-a)/abs(a);

 %% Enable the following line if you want to check the error per iteration

% fprintf("Iter = %d, aold = %.4f, bold = %.4f, x2 = %.4f, anew = %.4f, bnew = %.4f, error = %.8f\n", n, aold, bold, x2, a, b, error);

% fprintf("Iteration %d, error: %.8f\n", n, error);

    % Increment step

    n = n + 1;

    % If the number if iterations reaches the max. number of iterations

    % allowed, it means that the problem did not find a solution

    if n >= max_iters

        break;

    end

end

fprintf("The solution obtained using Secant method in %d iterations is h = %.4f m\n", n, a);

PROBLEM 2

clc, clear all, close all

%% Define the equation of the specific heat

% We assume T = x

f = @(x)(1.1 - (0.99403 + 1.671e-4 *x + 9.7215e-8 *x^2 -9.5838e-11 *x^3 + 1.9520e-14 *x^4));

%% Pat a) Newton's Method

% The first derivate of this function respect to x is:

df = @(x)(-(1.671e-4 + 2*9.7215e-8 *x -3*9.5838e-11 *x^2 + 4*1.9520e-14 *x^3));

% Define initial error and tolerance

error = Inf;

tol = 1e-6;

% Define initial value

x = 150; % in kelvins

n = 1;

while error >= tol % execute algorithm while the error is higher than the tolerance

    x = x - f(x)/df(x);

    error = abs(f(x));

% fprintf("Iteration %d, error = %.8f\n", n, error);

    n = n + 1;

end

fprintf("The solution obtained using Newton's method in %d iterations is T = %.4f K\n", n, x);

%% Part b): Secant Method

%% Define the interval [a,b] in which we assume the solution may be

a = 0;

b = 1000;

% Define initial error and tolerance

error = Inf;

tol = 1e-6;

max_iters = 500;

n = 1;

while error >= tol % execute algorithm while the error is higher than the tolerance

    x0 = a;

    x1 = b;

    x2 = x1 - (x1-x0)*f(x1) / (f(x1)-f(x0)); % calculate x2

    aold = a;

    bold = b;

    % Update

    a = x1;

    b = x2;

    error = abs(b-a)/abs(a);

 %% Enable the following line if you want to check the error per iteration

% fprintf("Iter = %d, aold = %.4f, bold = %.4f, x2 = %.4f, anew = %.4f, bnew = %.4f, error = %.8f\n", n, aold, bold, x2, a, b, error);

% fprintf("Iteration %d, error: %.8f\n", n, error);

    % Increment step

    n = n + 1;

    % If the number if iterations reaches the max. number of iterations

    % allowed, it means that the problem did not find a solution

    if n >= max_iters

        break;

    end

end

fprintf("The solution obtained using Secant method in %d iterations is T = %.4f K\n", n, a);