Search code examples
matlabnumericnumerical-methods

Where did i do wrong when i tried to approximatee this data using polynomial?


I am starting to learn numerical analysis using MATLAB in my course. so far we have covered polynomial interpolation (spline, polyfit, constraint spline, etc.) I was doing this practice question and I can not get the correct answer. I have uploaded the code I used and the question, where did I do wrong? thanks in advance!

close all; clear all; clc;
format long e

x = linspace(0,1,8);
xplot = linspace(0,1);
f = @(x) atan(x.*(x+1));
y_val = f(xplot);
c = polyfit(x,f(x),7);
p = polyval(c,0.7);
err = abs(f(0.7)-p)/(f(0.7))

The question I encountered is seen in the picture

enter image description here


Solution

  • After some playing around, it seems to be a matter of computing the absolute error instead of the relative absolute error.

    The code below yields the desired answer. And yes, it is pretty unclear from the question which error is intended.

    % Definitions
    format long e
    x = linspace(0,1,8)';
    xplot= linspace(0,1);
    f = @(x) atan(x.*(x+1));
    y_val = f(xplot);
    
    % Degree of polynomial
    n = 7;
    
    % Points to evaluate function
    point1 = 0.5;
    point2 = 0.7;
    
    % Fit
    c= polyfit(x,f(x),n);
    
    % Evaluate
    approxPoint1 = polyval(c, point1);
    approxPoint2 = polyval(c, point2);
    
    % Absolute errors
    errPoint1 = abs( f(point1) - approxPoint1)
    errPoint2 = abs( f(point2) - approxPoint2)