home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2002 September
/
Chip_2002-09_cd1.bin
/
tema
/
neural
/
webtest
/
matika
/
rovnice
/
gauss2x2.js
< prev
next >
Wrap
Text File
|
2001-06-23
|
6KB
|
258 lines
function GetExample(frm, exdata, source, showalert)
{
if (source)
{
a11s = frm.a11.value
a12s = frm.a12.value
a13s = frm.a13.value
a21s = frm.a21.value
a22s = frm.a22.value
a23s = frm.a23.value
}
else
{
a11s = frm.c11.value
a12s = frm.c12.value
a13s = frm.c13.value
a21s = frm.c21.value
a22s = frm.c22.value
a23s = frm.c23.value
}
if ((a11s=="") || (a12s=="") || (a13s=="") || (a21s=="") || (a22s=="") || (a23s==""))
{
alert("Stiskn∞te nejd°φve tlaΦφtko Nov² p°φklad")
return 1
}
a11=parseFloat(a11s)
a12=parseFloat(a12s)
a13=parseFloat(a13s)
a21=parseFloat(a21s)
a22=parseFloat(a22s)
a23=parseFloat(a23s)
if (isNaN(a11) || isNaN(a12) || isNaN(a13) || isNaN(a21) || isNaN(a22) || isNaN(a23))
{
alert("P°φklad nenφ korektnφ!")
return 2
}
if (a11*a22==a12*a21)
{
alert("Soustava rovnic je singulßrnφ!")
return 3
}
exdata.a11=a11
exdata.a12=a12
exdata.a13=a13
exdata.a21=a21
exdata.a22=a22
exdata.a23=a23
return 0
}
function SetExample(obj, ex, source)
{
if (source)
{
obj.a11.value = ex.a11
obj.a12.value = ex.a12
obj.a13.value = ex.a13
obj.a21.value = ex.a21
obj.a22.value = ex.a22
obj.a23.value = ex.a23
obj.b11.value = ex.a11
obj.b12.value = ex.a12
obj.b13.value = ex.a13
obj.b21.value = ex.a21
obj.b22.value = ex.a22
obj.b23.value = ex.a23
}
else
{
if (obj.c11.value != "") {
obj.b11.value = obj.c11.value
obj.b12.value = obj.c12.value
obj.b13.value = obj.c13.value
obj.b21.value = obj.c21.value
obj.b22.value = obj.c22.value
obj.b23.value = obj.c23.value
}
obj.c11.value = ex.a11
obj.c12.value = ex.a12
obj.c13.value = ex.a13
obj.c21.value = ex.a21
obj.c22.value = ex.a22
obj.c23.value = ex.a23
}
}
function SetNewExample(obj)
{
r1 = Math.round(Math.random()*20-10)
r2 = Math.round(Math.random()*20-10)
m1 = Math.round(Math.random()*10-5)
m2 = Math.round(Math.random()*10-5)
m3 = Math.round(Math.random()*10-5)
m4 = Math.round(Math.random()*10-5)
if (m2==0) m2=2
if (m4==0) m4=-2
a11 = 1
a12 = m1
a13 = r1 + m1*r2
a21 = 0
a22 = m2
a23 = m2*r2
a21 += m3*a11
a22 += m3*a12
a23 += m3*a13
a11 *= m4
a12 *= m4
a13 *= m4
ex = {a11:a11, a12:a12, a13:a13, a21:a21, a22:a22, a23:a23}
SetExample(obj, ex, true)
ex = {a11:"", a12:"", a13:"", a21:"", a22:"", a23:""}
// SetExample(obj, ex, false)
parent.frames[1].location.href="comments.html"
obj.c11.value=""
obj.c12.value=""
obj.c13.value=""
obj.c14.value=""
obj.c15.value=""
obj.c21.value=""
obj.c22.value=""
obj.c23.value=""
obj.c24.value=""
obj.c25.value=""
}
function GaussOneStep(frm,exdata)
{
com=parent.frames[1].document
doc=parent.frames[0].document
frm.c14.value=""
frm.c15.value=""
frm.c24.value=""
frm.c25.value=""
if ((exdata.a11 != 0) && (exdata.a11 != 1))
{
exdata.a12 /= exdata.a11
exdata.a13 /= exdata.a11
frm.c14.value="/"
frm.c15.value=exdata.a11
exdata.a11 = 1
com.write("Prvou rovnici jsme vyd∞lili Φφslem "+frm.c15.value+", abychom v rovnici dostali 1*x. <br>")
return
}
if ((exdata.a21 != 0) && (exdata.a11 != 0))
{
coef = exdata.a21 / exdata.a11
exdata.a22 -= coef * exdata.a12
exdata.a23 -= coef * exdata.a13
c=-coef
if (c<0){
frm.c25.value="(2)"+c+"*(1)"
}else{
frm.c25.value="(2)+"+c+"*(1)"
}
// frm.c14.value="*"
// frm.c15.value=-coef
exdata.a21 = 0
com.write("Ke druhΘ rovnici jsme p°iΦetli "+frm.c15.value+" nßsobek upravenΘ prvΘ rovnice, abychom vylouΦili x (dostali jsme 0*x). <br>")
return
}
if ((exdata.a22 != 0) && (exdata.a22 != 1))
{
exdata.a21 /= exdata.a22
exdata.a23 /= exdata.a22
frm.c24.value="/"
frm.c25.value=exdata.a22
exdata.a22 = 1
com.write("Druhou rovnici jsme vyd∞lili Φφslem "+frm.c25.value+", abychom dostali 1*y. <br>")
return
}
if ((exdata.a12 != 0) && (exdata.a22 != 0))
{
coef = exdata.a12 / exdata.a22
exdata.a11 -= coef * exdata.a21
exdata.a13 -= coef * exdata.a23
c=-coef
if (c<0) {
frm.c15.value="(1)"+c+"*(2)"
}else{
frm.c15.value="(1)+"+c+"*(2)"
}
// frm.c24.value="*"
// frm.c25.value=-coef
exdata.a12 = 0
com.write("K prvΘ rovnici jsme p°iΦetli "+frm.c25.value+" nßsobek druhΘ rovnice, abychom z prvΘ rovnice vylouΦili y. <br>")
return
}
if (exdata.a11==1 && exdata.a12==0){
if (exdata.a21==0 && exdata.a22==1){
alert("╪eÜenφ: x = "+exdata.a13+", y = "+exdata.a23)
}
}
}
function GetSolution(exdata, sol)
{
A1 = exdata.a12 * exdata.a23 - exdata.a13 * exdata.a22
A2 = exdata.a11 * exdata.a23 - exdata.a13 * exdata.a21
A = exdata.a11 * exdata.a22 - exdata.a12 * exdata.a21
sol.correct = (A!=0)
if (sol.correct)
{ sol.x1 = A1/A; sol.x2 = A2/A }
else
{ sol.x1 = 0; sol.x2 = 0 }
}
function IsTargetFilled(frm)
{
return ((frm.c11.value!="") && (frm.c12.value!="") && (frm.c13.value!="") &&
(frm.c21.value!="") && (frm.c22.value!="") && (frm.c23.value!=""))
}
function CheckDiagonal(frm, showalert)
{
ex = {a11:0, a12:0, a13:0, a21:0, a22:0, a23:0}
if (GetExample(frm, ex, false, true) != 0) return false
IsE = (((ex.a11 == 0) || (ex.a11 == 1)) && ((ex.a12 == 0) || (ex.a12 == 1)) &&
((ex.a21 == 0) || (ex.a21 == 1)) && ((ex.a22 == 0) || (ex.a22 == 1)))
if (IsE)
IsE = !(((ex.a11 != 0) && (ex.a12 != 0)) || ((ex.a21 != 0) && (ex.a22 != 0)))
if ((!IsE) && showalert)
alert("Eliminace jeÜt∞ nenφ u konce!")
return IsE
}
function CheckEquivalent(frm, showalert)
{
ex1 = {a11:0, a12:0, a13:0, a21:0, a22:0, a23:0}
ex2 = {a11:0, a12:0, a13:0, a21:0, a22:0, a23:0}
if (GetExample(frm, ex1, true, true) != 0) return false
if (GetExample(frm, ex2, false, true) != 0) return false
sol1 = {x1:0, x2:0, correct:0}
sol2 = {x1:0, x2:0, correct:0}
GetSolution(ex1, sol1)
GetSolution(ex2, sol2)
equiv = ((sol1.correct == sol2.correct) && (sol1.x1 == sol2.x1) && (sol1.x2 == sol2.x2))
if (!equiv && showalert)
alert("V °eÜenφ jsou chyby.")
return equiv
}