Azzera filtri
Azzera filtri

Writing a sin function program dealing with factorials, help in editing and error?

12 visualizzazioni (ultimi 30 giorni)
I am trying to write a specific program involving the sine function and factorials.
The problem states that:
sin(x) = x - x^3 / 3! + x^5 / 5! - x^7 / 7! + x^9 / 9!
I am trying to get the error rate very low, basically having the number of terms it takes to get enough accuracy by 10^-5, so that:
abs[sin(x) - sk(x)] / abs[sin(x)] = 10^-5
I know the sk equation should be written as:
sk = x-x^3 / 3! + .......x^(2k-1) / (2k-1)!
I am starting out my program with:
for s = 1: maxs
nsteps(s) = (ones(s)
end
I am confused on how to add on to my code to create my desired result, I know intuitively that when plotting this, the #'s should increase as x increases.
[Merged information from duplicate question]
I am trying to write a specific program involving the sine function and factorials.
The problem states that:
sin(x) = x - x^3 / 3! + x^5 / 5! - x^7 / 7! + x^9 / 9!
I am trying to get the error rate very low, basically having the number of terms it takes to get enough accuracy by 10^-5, so that:
abs[sin(x) - sk(x)] / abs[sin(x)] = 10^-5
I know the sk equation should be written as:
sk = x-x^3 / 3! + .......x^(2k-1) / (2k-1)!
I am starting out my program with:
for s = 1: maxs
nsteps(s) = (ones(s)
end
I am confused on how to add on to my code to create my desired result, I know intuitively that when plotting this, the #'s should increase as x increases.
Here is my code:
function [s] = fact(t)
s = 1:max(s);
for s = 1:max(s)
nsteps(s) = ones(s);
end
for t = (1:2:2*k-1);
(-1)^(0:k-1) .* x^t ./ factorial(t);
end
I receive this error when performing it:
??? Undefined function or variable 's'.
??? Undefined function or variable "s".
Error in ==> fact at 2
s = 1:max(s);
HELP PLEASE!

Risposte (2)

Walter Roberson
Walter Roberson il 23 Apr 2012
t = (1:2:2*k-1);
(-1).^(0:k-1) .* x.^t ./ factorial(t)
Or something like that.
(Note: corrected -- ^ operators had to be .^ )
  7 Commenti
Reelz
Reelz il 23 Apr 2012
I rewrote my code trying to define variables as is:
function s = mysin(t)
s = 0;
for s = 1:max(s)
nsteps(s) = ones(s);
k = 0:.1:pi/2;
x = 0:.1:2;
t = (1:2:2*k-1);
end
while t = (-1)^(0:k-1) .* x^t ./ factorial(t)
end
still receiving this error though:
??? Error: File: mysin.m Line: 9 Column: 9
The expression to the left of the equals sign is not a valid target for an
assignment.
Walter Roberson
Walter Roberson il 23 Apr 2012
"=" is not permitted in a "while". "while" has to be given a logical test.
Warning: You initialize s to 0, so max(s) is 0, and 1:0 is the empty vector, so your "for" loop will not do any iterations.
What is the purpose of your nsteps vector? Why are you trying to initialize it to a square matrix such as
1 1 1
1 1 1
1 1 1
(i.e., ones(3))

Accedi per commentare.


Richard Brown
Richard Brown il 23 Apr 2012
I take it this is a programming exercise, not a straight mathematics question - you can work out the number of terms pretty easily using Taylor's theorem with remainder ...

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by