| |
|
|
p.specht
| Wurzeln ungerader ganzzahliger Radix (3. Wurzel, 5., 7. etc.) de negativen Pagar son matemáticamente zulässig. Reelle Argumente haben esta real Ergebnisse, el el gleiche Vorzeichen tragen como el Radikand, d.i. el Valor de el el Wurzel Se señala.
Leider wissen viele Programmiersprachen el no, y XProfan es como no Excepción. El entsprechenden Se bloquea haben mich para folgenden Vergleich unterschiedlicher Kubikwurzel-Algorithmen geführt, el como no abstürzen.
Windowtitle "Diverse Kubikwurzelalgorithmen en el Vergleich"
cls:font 2:set("decimals",17)
declarar x!,y1!,y2!,y3!,y4!,w$,ex!
Repeat
Imprimir "\n Radikand x = ";:input w$:caso w$="":end
w$=upper$(trim$(w$)):ex!=if(instr("E",w$), val(substr$(w$,-1,"E")),0)
ifnot between(ex!,-53,53):beep:imprimir "\n *** Exponent out of Range! ***"
waitinput:cls:continue:endif:x!=val(w$)
y1!=cubrt1(x!):y2!=cubrt2(x!):y3!=cubrt3(x!)
locate 4,3
imprimir " cubrt1(x) cubrt2(x) cubrt3(x)"
locate 6,3 :imprimir format$("%g",y1!)
locate 6,27:imprimir format$("%g",y2!)
locate 6,52:imprimir format$("%g",y3!)
imprimir "\n Abs.Diff: y2-y1= y3-y1= y3-y2="
locate 9,3 :imprimir format$("%g",y2!-y1!)
locate 9,27:imprimir format$("%g",y3!-y1!)
locate 9,52:imprimir format$("%g",y3!-y2!)
imprimir "\n Probe: y1^3 y2^3= y3^3="
locate 12,3 :imprimir format$("%g",sqr(y1!)*y1!)
locate 12,27:imprimir format$("%g",sqr(y2!)*y2!)
locate 12,52:imprimir format$("%g",sqr(y3!)*y3!)
waitinput
cls
until 0
proc cubrt1 :parámetros x!
var sgn!=1-2*(x!<0):x!=abs(x!)
volver if(x!=0,0,sgn!*x!^0.333333333333333333)
ENDPROC
proc cubrt2 :parámetros x!
var sgn!=1-2*(x!<0):x!=abs(x!)
volver if(x!=0,0,sgn!*sqrt(x!)/x!^(1/6))
ENDPROC
proc cubrt3 :parámetros v!
caso V!=0:volver 0.0:declarar sg!,epsi!,r!,last_r!,i&
sg!=if(V!<0,-1,1):v!=abs(v!):r!=1:i&=0
epsi!=1.77*10^(-15+lg(V!)*(lg(V!)>0)/3)
'lg(x)=ln(x)*0.434294481903251827
mientras que i&<=3000:last_r!=r!:r!=(2*r!+V!/sqr(r!))/3
inc i&:caso abs(r!-last_r!)<=epsi!:romper
endwhile:caso i&>3000:volver -9.9999999999e-52
volver r!*sg!
ENDPROC
P.S.: Beim Kubieren (dreimal con se incluso multiplizieren) de Null y negativen Pagar con el ^-Symbol passieren ebenfalls Se bloquea, como lo no solchen Argumente verträgt. Hier es Abhilfe aber einfacher :proc cub :parámetros x!:volver sqr(x!)*x!:ENDPROC |
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 22.05.2021 ▲ |
|
|
|