![]() |
#1
|
|||
|
|||
![]()
Approximate the sine function in the first quadrant using a piecewise linear continuous function with two segments. Find the slope change point
![]() a.) 0.014 b.) 0.018 c.) 0.023 d.) 0.027 e.) 0.030 ![]() ![]() ![]() ![]() ![]() Code:
samples = 100; X = 0:1/samples:1; Y = sin(X*pi/2); xc = 0.6; % initial x value for slope change yc = 0.8; % inital y value for slope change % fundamental sine coefficient from Fourier series of PWL function b1 = 8/(pi^2*(xc*(xc-1)))*(xc*sin(xc*pi/2)-yc*sin(xc*pi/2)+xc*yc-xc); seg1 = yc/xc*X; % first linear segment samples change = ceil(xc*samples); % index of slope change seg1(change+1:samples+1) = 0; % remove seg1 above change point seg2 = (1-yc)/(1-xc)*X+yc-xc*(1-yc)/(1-xc); % samples above change point seg2(1:change) = 0; % remove seg2 up to change point Ypwl = seg1+seg2; % combine pieces error = (Y*b1-Ypwl).^2; thd = sqrt(sum(error))/sqrt(sum((Y*b1).^2)); % plot(X,Y*b1,'0',X,Ypwl,'1',X,error*100); axis([0 1 0 1], "square"); grid on; title('Piecewise Linear Sine Approximation'); legend('sin(x)','pwl(x)', '% error','Location', 'Northwest'); xlabel('X');ylabel('Y'); text(xc-0.04, yc+0.03, 'xc, yc'); text(1.01, b1, 'b1'); text(0.5,0.5, cstrcat('THD = ', num2str(thd))); text(-0.03, yc-xc*(1-yc)/(1-xc),'a'); |
#2
|
||||
|
||||
![]()
Interesting problem! Thank you.
__________________
Where everyone thinks alike, no one thinks very much |
![]() |
Thread Tools | |
Display Modes | |
|
|