Write a script file that will compute the sine of an angle using the Taylor series formula:

24 次查看(过去 30 天)
Write a script file that will compute the sine of an angle using the Taylor series formula:
The program will prompt the user to input the angle in degrees, and the number of terms in the series. Use the program to calculate sin(150 degrees) using 5 and 9 terms.
Note: Can anyone help mw with this? So far this is what I have and I am not sure if it is even correct.
disp("Input the angle in degrees (x) and the number of terms (n)")
x = input('x: ');
n = input('n: ');
sum = 0;
deg = x*180/pi;
for k = 0:n
y = ((((-1)^k)*deg^(2*k+1)))/factorial(2*k+1);
sum = sum + y;
end;
fprintf('sin(%3.2f) = %1.2fln',x,sum)

采纳的回答

Mathieu NOE
Mathieu NOE 2021-9-29
hello
please don't use sum or any other native matlab function names for variables names in your code; this can shadow the native function and create trouble in code execution (and unpredictable results).
beside that , your conversion from degrees to radian was wrong (as x is supposed to be in rad in the taylor formula)
also no need for for loop as your code can be easily vectorized.
code updated :
disp("Input the angle in degrees (d) and the number of terms (n)")
d = input('d: ');
n = input('n: ');
x = d*pi/180;
% out = 0;
% for k = 0:n
% y = ((((-1)^k)*x^(2*k+1)))/factorial(2*k+1);
% out = out + y;
% end;
k = 0:n;
y = ((((-1).^k).*x.^(2*k+1)))./factorial(2*k+1);
out = sum(y);
fprintf('sin taylor (%3.2f) = %1.4f\r',d,out) % taylor serie output
fprintf('sin (%3.2f) = %1.4f\r',d,sin(x)) % sin function output
fprintf('error percentage (%3.2f) = %1.4f\r',d,error_percent) % error (%) output
  4 个评论
John Doe
John Doe 2021-10-4
Oh okay, noted, but there is also another error. The error_percentage was never declared or identified in the code.
Mathieu NOE
Mathieu NOE 2021-10-4
sorry
probably error of copy paste - that line disappeared by mistake
correction :
disp("Input the angle in degrees (d) and the number of terms (n)")
d = input('d: ');
n = input('n: ');
x = d*pi/180;
% out = 0;
% for k = 0:n
% y = ((((-1)^k)*x^(2*k+1)))/factorial(2*k+1);
% out = out + y;
% end;
k = 0:n;
y = ((((-1).^k).*x.^(2*k+1)))./factorial(2*k+1);
out = sum(y);
error_percent = 100*abs((out-sin(x))./(sin(x)+eps)); % added eps to avoid zero division for case sin(x) = 0
fprintf('sin taylor (%3.2f) = %1.4f\r',d,out) % taylor serie output
fprintf('sin (%3.2f) = %1.4f\r',d,sin(x)) % sin function output
fprintf('error percentage (%3.2f) = %1.4f\r',d,error_percent) % error (%) output

请先登录,再进行评论。

更多回答(2 个)

Chunru
Chunru 2021-9-29
disp("Input the angle in degrees (x) and the number of terms (n)")
Input the angle in degrees (x) and the number of terms (n)
%x = input('x: ');
x = 45;
%n = input('n: ');
n = 100;
sum = 0;
xrad = x * pi/180;
for k = 0:n
y = (-1)^k * xrad^(2*k+1) /factorial(2*k+1);
sum = sum + y;
end
fprintf('sin(%.2f) = %.6f\n', x, sum)
sin(45.00) = 0.707107

Matt J
Matt J 2021-9-29
Easier:
n=10;
x=pi/7;
k=0:n;
T=sum( ((-1).^k .* x.^(2*k+1))./factorial(2*k+1) )
T = 0.4339
approxError=T-sin(x)
approxError = -5.5511e-17

类别

Help CenterFile Exchange 中查找有关 Function Creation 的更多信息

产品


版本

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by