Autor Wątek: Ciąg geometryczny i arytmetyczny  (Przeczytany 2883 razy)

Offline maly rekinek

  • Użytkownik

# Czerwiec 25, 2008, 18:58:48
Witam

mam pytanie: w jaki sposób obliczyć sumę poniższego ciągu:

x=2*1,1^2 + 3*1,1^3 + 4*1,1^4 + 5*1,1^5 + ...  + x*1,1^x

Niby w tym jest ciąg geometryczny, ale te liczby przed mnożeniem przeszkadzają, które tworzą jakby ciąg arytmetyczny.

Jeżeli dałoby się to prosiłbym odpowiedź bez użycia logarytmów i ln.
« Ostatnia zmiana: Czerwiec 25, 2008, 19:05:54 wysłana przez maly rekinek »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

swiru

  • Gość
# Czerwiec 25, 2008, 19:39:02
Kod: (c) [Zaznacz]
float ciag(int x)
{
  if(x!=1)
  {
     return(ciag(x-1) + x*pow(1.1,x));
  }
  else
  return 0;
};

??
« Ostatnia zmiana: Czerwiec 25, 2008, 19:46:27 wysłana przez swiru »

Offline frea

  • Użytkownik

# Czerwiec 25, 2008, 20:52:11
sume mozesz rozpisac sobie na taki trojkat

1.1^2 + 1.1^2
1.1^3 + 1.1^3 + 1.1^3
1.1^4 + 1.1^4 + 1.1^4 + 1.1^4
....
1.1^i + 1.1^i + ... + 1.1^i

Posumuj kolumnami zamiast wierszami i powinno ci prosto wyjsc :). bedziesz mial sumie sum szeregow geometrycznych w postaci
a * ( 1 - 1.1 ^ i) / 1.1 + a^2 * ( 1.1 - 1.1^i) / 1.1 etc.


edit: ps. jak potrzebujesz czesciej cos takiego policzyc polecam ksiazke Knutha - Matematyka Dyskretna.

swiru

  • Gość
# Czerwiec 25, 2008, 21:33:36
Chyba "Matematyka Konkretna"? :)

Offline maly rekinek

  • Użytkownik

# Czerwiec 25, 2008, 22:48:10
swiru sprawdziłem i bardzo fajnie to działa, normalnie przeczytałeś mi w myślach, że chciałem to napisać w programie  ;)

frea ten przykład, który mi podałaś/aś wydał się trudny, po co sobie tak kompilować głowę :)

ale dzięki Wam wszystkim za szybką odpowiedź

pozdrawiam
« Ostatnia zmiana: Czerwiec 25, 2008, 22:56:39 wysłana przez maly rekinek »

Offline Wyszo

  • Użytkownik

# Czerwiec 25, 2008, 22:59:38
Cytuj
edit: ps. jak potrzebujesz czesciej cos takiego policzyc polecam ksiazke Knutha - Matematyka Dyskretna.

Cytuj
Chyba "Matematyka Konkretna"?

Niezupełnie - to dwie książki, które różnią się zakresem (i stopniem wgłębienia się w zagadnienia) problematyki, autorami, stylem pisania, itd.

EDIT: a może to ta sama książka, tylko inne wydanie? W każdym razie jak porównywałem materiał o funkcjach tworzących - w "dyskretnej" nie ma na ten temat nic, w konkretnej jest chyba 20 stron...
« Ostatnia zmiana: Czerwiec 25, 2008, 23:02:40 wysłana przez Wyszo »

swiru

  • Gość
# Czerwiec 25, 2008, 23:05:17
@Wyszo: to dwie rozne ksiazki napisane przez roznych autorow. frea wskazal na ksiazke Knutha wiec wywnioskowalem ze chodzilo mu wlasnie o "matematyke konkretna"

Offline Wyszo

  • Użytkownik

# Czerwiec 26, 2008, 00:27:29
Aaaaa, no tak - dyskretną pisał Ross & Wright, a konkretną: Knuth i Patashnik (czy jakoś tak) :) Już pamiętam :D

Offline frea

  • Użytkownik

# Czerwiec 26, 2008, 16:33:20
swiru sprawdziłem i bardzo fajnie to działa, normalnie przeczytałeś mi w myślach, że chciałem to napisać w programie  ;)

frea ten przykład, który mi podałaś/aś wydał się trudny, po co sobie tak kompilować głowę :)
No to jest dokladnie ten sam przyklad co podales :).
btw to co ja napisalem bedzie ci sie liczyc szybciutko, a ten kod wyzej bedzie dluzej.

Sroki za zamieszanie, chodzilo mi o ksiazke Knutha Matematyka Konkretna.

PS. podałaś/aś :D.

Offline maly rekinek

  • Użytkownik

# Czerwiec 26, 2008, 23:15:52
btw to co ja napisalem bedzie ci sie liczyc szybciutko, a ten kod wyzej bedzie dluzej.

marnujesz się na tym forum
powinieneś zostać jasnowidzem

ponieważ zależy mi na szybkości, porzuciłem skrypt swiru i wnikałem w Twój post z przykładem
zauważyłem, że masz sporo expa, musiałeś stoczyć wiele bitw z potworami matematycznymi, ale powiem Ci, że jesteś jeszcze nie gotowy do walki z bossem, a do dlatego, że zrobiłeś mały błąd w swoim równaniu (boss rozłożyłby Ciebie na kawałki, błąd przygotowania do walki zaznaczyłem Ci  na czarno poniżej abyś mógł ćwiczyć)

a * ( 1 - 1.1 ^ i) / (1-1.1) + a^2 * ( 1.1 - 1.1^i) /(1- 1.1) etc.

pozdrawiam i dziękuje
oczywiście zastosuje się do Twego przykładu
« Ostatnia zmiana: Czerwiec 26, 2008, 23:19:27 wysłana przez maly rekinek »

swiru

  • Gość
# Czerwiec 26, 2008, 23:20:02
ponieważ zależy mi na szybkości, porzuciłem skrypt swiru i wnikałem w Twój post z przykładem
Mogę to przyśpieszyć :) ale wyjdzie mały potworek ;]
« Ostatnia zmiana: Czerwiec 26, 2008, 23:22:34 wysłana przez swiru »

Offline maly rekinek

  • Użytkownik

# Czerwiec 27, 2008, 00:05:49
ponieważ zależy mi na szybkości, porzuciłem skrypt swiru i wnikałem w Twój post z przykładem
Mogę to przyśpieszyć :) ale wyjdzie mały potworek ;]

swiru już chyba nie da rady bardziej przyspieszyć, jedynie pozostaje pytanie, czy lepiej robić to iteracyjnie, czy rekurencyjnie tak jak u Ciebie by było powiedzmy w nowym poście

poniżej umieszczam rozwiązanie (dla potomnych) - iteracyjne
// pod $i podaje się liczbę dla której chce się liczyć

$i=6;
$sum=pow(1.1,2)*(1-pow(1.1,$i-1))/(-0.1);


for($d=2;$d<=$i;$d++)

$sum=$sum+pow(1.1,$d)*(1-pow(1.1,$i-$d+1))/(-0.1);

echo $sum;

//edit by revo: uzywac znacznik code!
« Ostatnia zmiana: Czerwiec 27, 2008, 00:21:46 wysłana przez revo »

swiru

  • Gość
# Czerwiec 27, 2008, 00:08:53
swiru już chyba nie da rady bardziej przyspieszyć, jedynie pozostaje pytanie, czy lepiej robić to iteracyjnie, czy rekurencyjnie tak jak u Ciebie by było powiedzmy w nowym poście
Dziwne bo właśnie znęcam się na kompilatorem :)
Podam jak dopnę swego ;]

@down wlasnie testuje :) kurde idę po gaśnice  ;D
« Ostatnia zmiana: Czerwiec 27, 2008, 00:43:52 wysłana przez swiru »

Offline revo

  • Użytkownik

# Czerwiec 27, 2008, 00:20:22
Heh, dlaczego was jeszcze nikt nie skarcił? Pomijając fakt, że pewnie można to sprowadzić do zwartej postaci, to licząc 'ręcznie' oczywiste jest takie coś:

float ciag(int n)
{
float x = 1.1f;
float sum = 0;

for (int i=2; i<=n; i++)
{
x *= 1.1f;
sum += i * x;
}

return sum;
}

Offline frea

  • Użytkownik

# Czerwiec 27, 2008, 16:13:55
Pomylilem sie w tym pierwszym poscie ;).
Poprawnie jest ( mam nadzieje ) :

x + 2x^2 + 3x^3 + ... + ix^i =
x(1-x^i)/(1-x) + x^2(1-x^(i-1))/(1-x) + x^3(1-x^(i-2))/(1-x) + ... + x^i =
1/(1-x) * ( x + x^2 + ... + x^i - i*x^i)=
1/(1-x) * ( x * (1 - x^i)/(1-x) - i * x^i)

Dla x = 2, i = 4 sie zgadza :p.