mirror of
https://bitbucket.org/Mattrixwv/octavefunctions.git
synced 2025-12-06 18:53:57 -05:00
Aid to homeword 3.1 Problem 1
This commit is contained in:
63
Homework/Homework311.m
Normal file
63
Homework/Homework311.m
Normal file
@@ -0,0 +1,63 @@
|
||||
%This is a script to do the homework for 3.1 problem1
|
||||
|
||||
pkg load symbolic;
|
||||
syms x;
|
||||
x_list = [0, 0.6, 0.9];
|
||||
xValue = 0.45;
|
||||
|
||||
%Part a
|
||||
y_list = cos(x_list);
|
||||
f = cos(x);
|
||||
disp('a:')
|
||||
[P01, P12, P02] = LagrangePolynomialSymbolic(x_list, f);
|
||||
fEval = double(subs(f, xValue));
|
||||
pEval = double(subs(P01, xValue));
|
||||
disp('Error:')
|
||||
disp(['|f(x) - P01(x)| = |' num2str(fEval, '%9.9g') ' - ' num2str(pEval, '%9.9g') '| = ' num2str(abs(fEval - pEval), '%9.9g')])
|
||||
pEval = double(subs(P02, xValue));
|
||||
disp(['|f(x) - P02(x)| = |' num2str(fEval, '%9.9g') ' - ' num2str(pEval, '%9.9g') '| = ' num2str(abs(fEval - pEval), '%9.9g')])
|
||||
|
||||
%Part b
|
||||
y_list = sqrt(1 + x_list);
|
||||
f = sqrt(1 + x);
|
||||
disp('')
|
||||
disp('')
|
||||
disp('b:')
|
||||
[P01, P12, P02] = LagrangePolynomialSymbolic(x_list, f);
|
||||
fEval = double(subs(f, xValue));
|
||||
pEval = double(subs(P01, xValue));
|
||||
disp('Error:')
|
||||
disp(['|f(x) - P01(x)| = |' num2str(fEval, '%9.9g') ' - ' num2str(pEval, '%9.9g') '| = ' num2str(abs(fEval - pEval), '%9.9g')])
|
||||
pEval = double(subs(P02, xValue));
|
||||
disp(['|f(x) - P02(x)| = |' num2str(fEval, '%9.9g') ' - ' num2str(pEval, '%9.9g') '| = ' num2str(abs(fEval - pEval), '%9.9g')])
|
||||
|
||||
%Part c
|
||||
y_list = log(x_list + 1);
|
||||
f = log(x + 1);
|
||||
disp('')
|
||||
disp('')
|
||||
disp('c:')
|
||||
[P01, P12, P02] = LagrangePolynomialSymbolic(x_list, f);
|
||||
fEval = double(subs(f, xValue));
|
||||
pEval = double(subs(P01, xValue));
|
||||
disp('Error:')
|
||||
disp(['|f(x) - P01(x)| = |' num2str(fEval, '%9.9g') ' - ' num2str(pEval, '%9.9g') '| = ' num2str(abs(fEval - pEval), '%9.9g')])
|
||||
pEval = double(subs(P02, xValue));
|
||||
disp(['|f(x) - P02(x)| = |' num2str(fEval, '%9.9g') ' - ' num2str(pEval, '%9.9g') '| = ' num2str(abs(fEval - pEval), '%9.9g')])
|
||||
|
||||
%Part d
|
||||
y_list = tan(x_list);
|
||||
f = tan(x);
|
||||
disp('')
|
||||
disp('')
|
||||
disp('d:')
|
||||
[P01, P12, P02] = LagrangePolynomialSymbolic(x_list, f);
|
||||
fEval = double(subs(f, xValue));
|
||||
pEval = double(subs(P01, xValue));
|
||||
disp('Error:')
|
||||
disp(['|f(x) - P01(x)| = |' num2str(fEval, '%9.9g') ' - ' num2str(pEval, '%9.9g') '| = ' num2str(abs(fEval - pEval), '%9.9g')])
|
||||
pEval = double(subs(P02, xValue));
|
||||
disp(['|f(x) - P02(x)| = |' num2str(fEval, '%9.9g') ' - ' num2str(pEval, '%9.9g') '| = ' num2str(abs(fEval - pEval), '%9.9g')])
|
||||
|
||||
%Cleanup your variables
|
||||
clear P01 P12 P02 f fEval pEval x xValue x_list y_list
|
||||
27
Homework/LagrangePolynomialSymbolic.m
Normal file
27
Homework/LagrangePolynomialSymbolic.m
Normal file
@@ -0,0 +1,27 @@
|
||||
function [ P01, P12, P2 ] = LagrangePolynomialSymbolic(x_list, f)
|
||||
syms x;
|
||||
format long;
|
||||
warning('off','OctSymPy:sym:rationalapprox');
|
||||
|
||||
%Evaluate P0,1
|
||||
%P01 = (((x - x_list(2))/(x_list(1) - x_list(2))) * double(subs(f, x_list(1)))) + (((x - x_list(1))/(x_list(2) - x_list(1))) * double(subs(f, x_list(2))))
|
||||
P01x = (double(subs(f, x_list(1)))/(x_list(1) - x_list(2))) + (double(subs(f, x_list(2)))/(x_list(2) - x_list(1)));
|
||||
P01c = ((double(subs(f, x_list(1)))/(x_list(1) - x_list(2))) * -x_list(2)) + ((double(subs(f, x_list(2)))/(x_list(2) - x_list(1))) * -x_list(1));
|
||||
disp(['P01 = ' num2str(P01x, '%9.9g') 'x + ' num2str(P01c, '%9.9g')])
|
||||
P01 = (P01x * x) + P01c;
|
||||
|
||||
%Evaluate P1,2
|
||||
%P12 = (((x - x_list(3))/(x_list(2) - x_list(3))) * double(subs(f, x_list(2)))) + (((x - x_list(2))/(x_list(3) - x_list(2))) * double(subs(f, x_list(3))))
|
||||
P12x = (double(subs(f, x_list(2)))/(x_list(2) - x_list(3))) + (double(subs(f, x_list(3)))/(x_list(3) - x_list(2)));
|
||||
P12c = ((double(subs(f, x_list(2)))/(x_list(2) - x_list(3))) * -x_list(3)) + ((double(subs(f, x_list(3)))/(x_list(3) - x_list(2))) * -x_list(2));
|
||||
disp(['P12 = ' num2str(P12x, '%9.9g') 'x + ' num2str(P12c, '%9.9g')])
|
||||
P12 = (P12x * x) + P12c;
|
||||
|
||||
%Evaluate P2
|
||||
%P2 = (P2x * x) + P2c;
|
||||
P2x2 = (P01x - P12x) / (x_list(1) - x_list(3));
|
||||
P2x = ((P01c) + (P01x * -x_list(3)) - ((P12x * -x_list(1)) + (P12c))) / (x_list(1) - x_list(3));
|
||||
P2c = ((P01c * -x_list(3)) - (P12c * -x_list(1))) / (x_list(1) - x_list(3));
|
||||
disp(['P02 = ' num2str(P2x2, '%9.9g') 'x^2 + ' num2str(P2x, '%9.9g') 'x + ' num2str(P2c, '%9.9g')])
|
||||
P2 = (P2x2 * x^2) + (P2x * x) + P2c;
|
||||
end
|
||||
Reference in New Issue
Block a user