tic
format long
suma1 = 0;
suma2 = 0;
pi = 3.14159265359;
x = pi*(5/6)
N=input(' Podaj N ');
for k = 0 : N
suma1 = suma1 + (((((-1).^k).*(x.^(1+2*k)))./(factorial(1+2*k))).^2)';
end
disp('Suma pi*(5/6) wynosi:')
disp(suma1)
x = pi*(1/3)
for k = 0 : N
suma2 = suma2 + (((((-1).^k).*(x.^(1+2*k)))./(factorial(1+2*k))).^2)';
end
disp('Suma pi*(1/3) wynosi:')
disp(suma2)
toc
Wydaje mi się, że coś jest w nim spaprane. Niby rozwinięcia Taylora są okey, więc powinno dobrze liczyć, ale takie daje mi to wyniki dla np. 10 kroków.
>> Projekt
x =
2.617993877991667
Podaj N 10
Suma pi*(5/6) wynosi:
16.875978022596069
x =
1.047197551196667
Suma pi*(1/3) wynosi:
1.133365644334625
Elapsed time is 2.550988 seconds.
I tutaj moje pytanie. Bo wyliczając ten sinus w np wolframie, dla podanych wartości x wyskakują zupełnie inne wyniki, bo dla \(\displaystyle{ \frac{ 1 }{3} \pi}\) jest \(\displaystyle{ 0.75}\) a dla \(\displaystyle{ \frac{ 5 }{6} \pi}\) jest \(\displaystyle{ 0.25}\) . Mogli byście mi pomóc i wyjaśnić skąd wyskakują takie różnice, bo siedzę nad tym już trochę czasu i nie mogę do tego dojść :/ I w ogóle czy ten kod jest dobry do tego zadania ?
Ostatnio zmieniony 10 cze 2015, o 13:55 przez Afish, łącznie zmieniany 1 raz.
Powód:Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
ksisquare no tak własnie powinien się rozwijać, ale na wolfram alpha dostałem taki wzór jaki mam teraz w kodzie. Dokładniej taki \(\displaystyle{ (\sum_{k=0}^{ \infty }\frac{ (-1)^{k}* x^{(1+2k)} }{(1+2k)!}) ^{2}}\) Czyżby wolfram kłamał ? :p A co do tej kropki to ma być tak "^.2" ??? Ale przy takim ustawieniu kropki wychodzą jakieś liczby zespolone xd
Teraz spróbowałem inny wzór a dokładnie taki \(\displaystyle{ -(\sum_{k=1}^{ \infty }\frac{ (-1)^{k}* (2^{(-1+2k) }*x ^{2k}) }{(2k)!} )}\) też z wolframa, są inne wyniki i chyba nawet dobre ^^
>> Projekt
x =
2.617993877991667
Podaj N 10
Suma szeregu dla x = pi*(5/6) wynosi:
0.249997214057695
x =
1.047197551196667
Suma szeregu dla x = pi*(1/3) wynosi:
0.750000000000054
Elapsed time is 1.307703 seconds.
>>
Ale nie wiem czy znowu dobrze te kropki wstawiłem :
Co do pierwszego kodu:
1) Kropki nie są potrzebne.
2) Wzór mówi, że najpierw dodajemy, a potem podnosimy do kwadratu całość (nie dodajemy "kwadratów" do siebie).
3) W Matlabie liczby \(\displaystyle{ \pi}\) nie trzeba definiować.
tic
format long
suma1 = 0;
suma2 = 0;
x = pi*(5/6)
N=input(' Podaj N ');
for k = 0 : N
suma1 = suma1 + ((((-1)^k)*(x^(1+2*k)))/(factorial(1+2*k)));
end
disp('Suma pi*(5/6) wynosi:')
disp(suma1^2)
x = pi*(1/3)
for k = 0 : N
suma2 = suma2 + ((((-1)^k)*(x^(1+2*k)))/(factorial(1+2*k)));
end
disp('Suma pi*(1/3) wynosi:')
disp(suma2^2)
toc
mdd dzięki znowu coś więcej wiem np o tym \(\displaystyle{ \pi}\) albo kropkach Już wychodzą dobre wyniki, ale użyłem tego drugiego wzoru.
Mam jeszcze jedno pytanie dotyczące tego zagadnienia. Bo mam jeszcze jeden podpunkt do zreazlizowania, a dokładniej "Zobrazować błędy względne w funkcji liczby wyrazów sumowanego szeregu (obcięcia)". I jak rozmawiałem na początku z naszym Doktorem to powiedział, że mogę zrobić to tak, że po prostu obliczam w matlabie po matlabowsku gotowym sinusem ten wynik, a pozniej odejmę od niego to co mi wyszło tym szeregiem Taylora. A wczoraj dostałem jeszcze od niego jakieś notatki dotyczące błędu obcięcia w szeregu Taylora, ale tak średnio z tego coś rozumiem :p Myślicie że ten pierwszy sposób wystarczy żeby obliczyć ten błąd i się nie przyczepi ?