Soucet rady se dvema parametry – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Soucet rady se dvema parametry – Python – Fórum – Programujte.comSoucet rady se dvema parametry – Python – Fórum – Programujte.com

 

honzik
~ Anonymní uživatel
19 příspěvků
20. 12. 2011   #1
-
0
-

Ahoj vsem

rozhodl jsem se zacit programovat. Je  mi teda 14 let a na internetu psali ze na zacatky je dobry pascal nebo python. Jelikoz bracha mel doma prirucku pythona vyhral to on

Prisel jsem na jednu ulohu kterou resi v ramci vyucovani programovani na matfyzu. Je to soucet ciselne rady

a nejak na to nemuzu prijit ...ale postoupil jsem takto:

import os
import sys
import math
from math import cos



    
x=-4.008
while x<=4.008:
    x=x+0.008

    f1=(3.0/4.0)**(2.0*1-1)*cos((2.0*1-1)*x)  
    f2=(3.0/4.0)**(2.0*2-1)*cos((2.0*2-1)*x)
    f3=(3.0/4.0)**(2.0*3-1)*cos((2.0*3-1)*x)
    f4=(3.0/4.0)**(2.0*4-1)*cos((2.0*4-1)*x)
    f5=(3.0/4.0)**(2.0*5-1)*cos((2.0*5-1)*x)
    f6=(3.0/4.0)**(2.0*6-1)*cos((2.0*6-1)*x)
    f7=(3.0/4.0)**(2.0*7-1)*cos((2.0*7-1)*x)

    print x,f1+f2+f3,f1+f2+f3+f4+f5,f1+f2+f3+f4+f5+f6+f7

resim druhou cast zadani:

tenhle skript udela to ze dle zadani vypise x, coz je podle zadani rozdeleni intervalu (-4,4) na 1000 kroku jak to tam chteji a dale pro prislusne x vypise soucet pro n=3,5,7. Tedy jestli jsem to pochopil spravne vemu nejaky x z intervalu <-4,4>, dosadim ho za x a potom udelam sumaci treba pro n=3. Kdyz potom prevedu vypis do .txt a vykreslim pomoci gnuplotu tak se mi to vykresli pro n=3 a n=7 stejne. Ale problem nastane kdyz budu chtit treba zmineny soucet n=33. Nebudu preci do print psat f1+f2+f3...+f33. Neexistuje nejaka jednoducha moznost jak to zapsat zjednodusene???dekuji vam vsem

Nahlásit jako SPAM
IP: 85.162.147.–
KIIV
~ Moderátor
+43
God of flame
20. 12. 2011   #2
-
0
-

tak mas tam porad stejnej vyraz a meni se tam jen dve cislice (prekvapive to n) - co takhle pouzit dalsi cyklus od 1 do n?

Staci jedina promenna sum kterou inicializujes na zacatku na 0 a pak uz k tomu jen pricitas aktualni prvek

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
honzik
~ Anonymní uživatel
19 příspěvků
20. 12. 2011   #3
-
0
-

#2 KIIV
dekuji za odpoved...ale moc tomu nerozumim co jsi napsal...zkousel jsem ruzne kombinace cyklu for n in range(1,n) i while ale bez uspechu. Pak jsem taky prisel na funkci sum ale tu jsem rozchodil pouze pro pripad suma od n=1 do k z x....


#vypise soucet cisel 1+2+3+4+5+6+7+8+9+10

f=sum(range(1,11))
print f

no jo ale jak to udelat aby se mi pocitala suma podle nejakyho predpisu funkce? dekuji za odpoved

Nahlásit jako SPAM
IP: 85.162.147.–
KIIV
~ Moderátor
+43
God of flame
20. 12. 2011   #4
-
0
-

tak to delas blbe... hod sem kod (kristalova koule je zrovna v servisu)

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
honzik
~ Anonymní uživatel
19 příspěvků
20. 12. 2011   #5
-
0
-

#4 KIIV
no mas ho nahore ale tady je jeste jednou:

import os
import sys
import math
from math import cos



    
x=-4.008
while x<=4.008:
    x=x+0.008
  
        
    f1=(3.0/4.0)**(2.0*1-1)*cos((2.0*1-1)*x)
    f2=(3.0/4.0)**(2.0*2-1)*cos((2.0*2-1)*x)
    f3=(3.0/4.0)**(2.0*3-1)*cos((2.0*3-1)*x)
    f4=(3.0/4.0)**(2.0*4-1)*cos((2.0*4-1)*x)
    f5=(3.0/4.0)**(2.0*5-1)*cos((2.0*5-1)*x)
    f6=(3.0/4.0)**(2.0*6-1)*cos((2.0*6-1)*x)
    f7=(3.0/4.0)**(2.0*7-1)*cos((2.0*7-1)*x)
    
    print x,f1+f2+f3,f1+f2+f3+f4+f5,f1+f2+f3+f4+f5+f6+f7

dekuji Honza

Nahlásit jako SPAM
IP: 85.162.147.–
KIIV
~ Moderátor
+43
God of flame
20. 12. 2011   #6
-
0
-

sem samozrejme myslel s tim, jak si tvrdil zes tam narval for cyklus..

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
20. 12. 2011   #7
-
0
-

No sice neprogramuju v pythonu ale neco mensiho sem zkusil:

import os
import sys
import math
from math import cos

def rada(x,n):
    suma, k = 0, 1
    while (k<=n):
        suma = suma + ((3.0/4.0)**(2.0*k-1))*cos((2.0*k-1)*x)
        k = k+1
    return suma

x=-4.008
while x<=4.008:
    x=x+0.008
    print x,rada(x,3), rada(x,7), rada(x,33)
Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
sputnikone+1
Věrný člen
20. 12. 2011   #8
-
0
-

#7 KIIV
Trochu jsem to učesal (lambda, iterátor, sum funkce)

from math import cos


def rada(x, n):
    g = lambda k: ((3.0 / 4.0) ** (2.0 * k - 1)) * cos((2.0 * k - 1) * x)
    kroky = [g(y) for y in range(1, n + 1)]
    return sum(kroky)

x = -4.008
while x <= 4.008:
    x += 0.008
    print x, rada(x, 3), rada(x, 7), rada(x, 33)
Nahlásit jako SPAM
IP: 89.102.207.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

Podobná vlákna

Soucet rady — založil AvsFan

Proměná, mezi dvěma událostmi — založil Petr Sýkora

Rozdíl mezi dvěma příkazy — založil Montezo

Dny mezi dvema daty — založil kejta

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý