Seuraa 
Viestejä26805

DEFDBL p,r,x
pi2 = 4 * ATN(1)  ' = kaksi kertaa pii
INPUT r
x = r - ATN(TAN(pi2 * r)) / pi2
PRINT x

Antaa reaaliluvun r kokonaisosan kun sen desimaaliosa <= 1/2, muussa tapauksessa antaa r:n kokonaisosan +1. Miten voisi korjata.  Siis "idea" tässä on se, että ei tarvitsisi minkäänlaisia if..then ym. testejä, vaan kaikki tulisi tuollaisella funtiolla.

3³+4³+5³=6³

Sivut

Kommentit (17)

Sisältö jatkuu mainoksen alla
Sisältö jatkuu mainoksen alla
Volta
Seuraa 
Viestejä123
JPI

DEFDBL p,r,x
pi2 = 4 * ATN(1)  ' = kaksi kertaa pii
INPUT r
x = r - ATN(TAN(pi2 * r)) / pi2
PRINT x

Antaa reaaliluvun r kokonaisosan kun sen desimaaliosa <= 1/2, muussa tapauksessa antaa r:n kokonaisosan +1. Miten voisi korjata.  Siis "idea" tässä on se, että ei tarvitsisi minkäänlaisia if..then ym. testejä, vaan kaikki tulisi tuollaisella funtiolla.

Miten olisi Fourier-sarja:

JPI
Seuraa 
Viestejä26805
Volta
JPI

DEFDBL p,r,x
pi2 = 4 * ATN(1)  ' = kaksi kertaa pii
INPUT r
x = r - ATN(TAN(pi2 * r)) / pi2
PRINT x

Antaa reaaliluvun r kokonaisosan kun sen desimaaliosa <= 1/2, muussa tapauksessa antaa r:n kokonaisosan +1. Miten voisi korjata.  Siis "idea" tässä on se, että ei tarvitsisi minkäänlaisia if..then ym. testejä, vaan kaikki tulisi tuollaisella funtiolla.

Miten olisi Fourier-sarja:

 

Onhan se mahdollista Fourier sarjallakin.

Toisaalta jos r on reaaliluku niin sen sen kokonaislukuosa N= r-½-atn((tan(2π(r+½)))/2π. Siis ilman FIX, INT tai MOD functioita.

QB:llä

pi2#=4*atn(1) ' pi2 = 2*π

INPUT r#

x# = r# - .5 - ATN(TAN(pi2# * (r# + .5))) / pi2#

PRINT x#

P.S. #-merkki muuttujan perässä tekee siitä double precision muuttujan.

esim:

https://www.wolframalpha.com/input/?i=3.6-.5-atn%28tan%282%CF%80%283.6%2...

3³+4³+5³=6³

JPI
Seuraa 
Viestejä26805
Simplex
JPI

Wolfram laskee väärin, koska 3.9 antaa tulokseksi 3.5. ;)

Tai sitten QB laskee väärin!!??

Toisaalta jos ajatellaan, niin funktio y=r-½-atn((tan(2π(r+½)))/2π ei oikeastaan ole ollenkaan funktio, mikä lie jakauma. Toisaalta se on lausuttua ihan rehellisten funktioiden, atn ja tan, avulla. Kuitenkin sehän on vakio kaikilla r:n arvoilla n<r<=n+1; n ∈ Z, r ∈ R  ,vaikka tuo vakio ei olekaan aina sama vaan INT(r) (vakio ei ole vakio, heh). Omituista.

Lisäksi tan(2π(r+½)) = tan(2πr), mutta jos tuon laitaa noin QB:he, nin ei pelaa.

Pitää siis todellakin tutkia lauseketta atn(tan(2πx)) matemaattisesti eikä ohjelmointikielten kutsuja kokeilemalla.

Ideani tuossa oli aluperin se, että y=tan(2π(N+x)), N∈ Z, x ∈ R, antaa jaksollisuutensa vuoksi saman kuin tan(x), jolloin atn(y) antaa juuri tuon x:n.

3³+4³+5³=6³

PPo
Seuraa 
Viestejä13915

Seuraava näyttäisi toimivan

x=n+d(>0) ,missä n on kokonaisosa ja d desimaaliosa

d<1/4: n=x-atan(tan(2πx))/2π

1/4≤d≤3/4: n=x-atan(tan(2πx)/2π-1/2

d>3/4: n=x-atan(tan(2πx)/2π-1

Eusa
Seuraa 
Viestejä16191
PPo

Seuraava näyttäisi toimivan

x=n+d(>0) ,missä n on kokonaisosa ja d desimaaliosa

d<1/4: n=x-atan(tan(2πx))/2π

1/4≤d≤3/4: n=x-atan(tan(2πx)/2π-1/2

d>3/4: n=x-atan(tan(2πx)/2π-1

Kehäpäätelmä. Kuinka selvität d:n, ellet ensin jaa x:ää kokonais- ja desimaaliosiinsa, joka oli tehtävänä. 

 

Hienorakennevakio vapausasteista: (1+2¹+3²+5³+1/2¹*3²/5³)⁻¹ = 137,036⁻¹

PPo
Seuraa 
Viestejä13915
Eusa
PPo

Seuraava näyttäisi toimivan

x=n+d(>0) ,missä n on kokonaisosa ja d desimaaliosa

d<1/4: n=x-atan(tan(2πx))/2π

1/4≤d≤3/4: n=x-atan(tan(2πx)/2π-1/2

d>3/4: n=x-atan(tan(2πx)/2π-1

Kehäpäätelmä. Kuinka selvität d:n, ellet ensin jaa x:ää kokonais- ja desimaaliosiinsa, joka oli tehtävänä. 

Lasketaan A=atan(tan(2πx))/2π, B=atan(tan(2π(x-1/2)))/2π ,

C=acos(cos(2πx))/2π ja D =acos(cos(2π(x-1/2))/2π

 Jos A=C, niin d<1/4

jos C-A=1/2, niin 1/4<d<1/2

Jos B=D, niin 1/2<d<3/4

Jos D-B=1/2, niin d>3/4

Eusa
Seuraa 
Viestejä16191
PPo
Eusa
PPo

Seuraava näyttäisi toimivan

x=n+d(>0) ,missä n on kokonaisosa ja d desimaaliosa

d<1/4: n=x-atan(tan(2πx))/2π

1/4≤d≤3/4: n=x-atan(tan(2πx)/2π-1/2

d>3/4: n=x-atan(tan(2πx)/2π-1

Kehäpäätelmä. Kuinka selvität d:n, ellet ensin jaa x:ää kokonais- ja desimaaliosiinsa, joka oli tehtävänä. 

Lasketaan A=atan(tan(2πx))/2π, B=atan(tan(2π(x-1/2)))/2π ja 

C=acos(cos(2πx))/2π

Jos A=C, niin d<1/4

jos C-A=1/2, niin 1/4

Jos B=C, niin 1/2

Jos C-B=1/2, niin d>3/4

Kuten huomaat, ei desimaaliosaa sinänsä tarvitse selvittää, tai siis sen kokonaisosan saa samalla kun selvittää tuota kiertomäärää.

Melko tehokkaasti kokonaisosan saa yksinkertaisella luupilla, jossa kerrotaan ensin 10:llä kunnes luku ylittää x:n. Sitten jaetaan 2:lla, kunnes luku alittaa x:n. lopuksi lisätään 10^n:ää, jossa n on 10:llä kertomisen luuppien määrä - 1. Kun luku menee yli x:n, käännetään vähentämään 10^(n-1), jne - lopuksi iteroidaan kohdalleen 10^0=1 -askelin. Tämä lienee konekielitasolla nopeampaa operoimista kuin trignometria.

ps: Käytännössä, jos ohjelmoinnista puuttuisi INT-funktio, käyttäisin tulostetta hyväksi, etsisin pilkun paikan, ottaisin kokonaisosan merkkijonokasi ja konversio lukuarvoksi jne... 

Hienorakennevakio vapausasteista: (1+2¹+3²+5³+1/2¹*3²/5³)⁻¹ = 137,036⁻¹

PPo
Seuraa 
Viestejä13915
Puuhikki

En osaa enää QB:tä, mutta eikös x:n kokonaisosa lasketa kaavalla x-(x mod 1)?

x mod 1=0, kun xε Z.

Mitä tarkoittaa x mod 1, kun x ei ole kokonaisluku???

pöhl
Seuraa 
Viestejä934
PPo
Puuhikki

En osaa enää QB:tä, mutta eikös x:n kokonaisosa lasketa kaavalla x-(x mod 1)?

x mod 1=0, kun xε Z.

Mitä tarkoittaa x mod 1, kun x ei ole kokonaisluku???

Yleisesti x mod y=x-y floor(x/y) kun x ja y ovat reaalilukuja ja y nollasta poikkeava. Mutta minusta on loputon suo arvailla mitä lausekkeita kelpuutat ja mitä et. Lisäksi taitaa tulla ongelmia koneen äärellisen muistin kanssa kun tietokoneissa ei olekaan 0.999...=1.

Sivut

Suosituimmat

Uusimmat

Sisältö jatkuu mainoksen alla

Uusimmat

Suosituimmat