home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / tema / neural / webtest / matika / rovnice / gauss2x2.js < prev    next >
Text File  |  2001-06-23  |  6KB  |  258 lines

  1.  
  2. function GetExample(frm, exdata, source, showalert)
  3. {
  4.  if (source)
  5.   {
  6.    a11s = frm.a11.value
  7.    a12s = frm.a12.value
  8.    a13s = frm.a13.value
  9.    a21s = frm.a21.value
  10.    a22s = frm.a22.value
  11.    a23s = frm.a23.value
  12.   }
  13.  else
  14.   {
  15.    a11s = frm.c11.value
  16.    a12s = frm.c12.value
  17.    a13s = frm.c13.value
  18.    a21s = frm.c21.value
  19.    a22s = frm.c22.value
  20.    a23s = frm.c23.value
  21.   }
  22.   
  23.  if ((a11s=="") || (a12s=="") || (a13s=="") || (a21s=="") || (a22s=="") || (a23s==""))
  24.   {
  25.    alert("Stiskn∞te nejd°φve tlaΦφtko Nov² p°φklad")
  26.    return 1
  27.   }
  28.  
  29.  a11=parseFloat(a11s)
  30.  a12=parseFloat(a12s)
  31.  a13=parseFloat(a13s)
  32.  a21=parseFloat(a21s)
  33.  a22=parseFloat(a22s)
  34.  a23=parseFloat(a23s)
  35.  if (isNaN(a11) || isNaN(a12) || isNaN(a13) || isNaN(a21) || isNaN(a22) || isNaN(a23))
  36.   {
  37.    alert("P°φklad nenφ korektnφ!")
  38.    return 2
  39.   }
  40.  
  41.  if (a11*a22==a12*a21)
  42.   {
  43.    alert("Soustava rovnic je singulßrnφ!")
  44.    return 3
  45.   }
  46.  
  47.  exdata.a11=a11
  48.  exdata.a12=a12
  49.  exdata.a13=a13
  50.  exdata.a21=a21
  51.  exdata.a22=a22
  52.  exdata.a23=a23
  53.  return 0
  54. }
  55.  
  56.  
  57. function SetExample(obj, ex, source)
  58. {
  59.  
  60.  if (source)
  61.   {
  62.    obj.a11.value = ex.a11
  63.    obj.a12.value = ex.a12
  64.    obj.a13.value = ex.a13
  65.    obj.a21.value = ex.a21
  66.    obj.a22.value = ex.a22
  67.    obj.a23.value = ex.a23
  68.  
  69.    obj.b11.value = ex.a11
  70.    obj.b12.value = ex.a12
  71.    obj.b13.value = ex.a13
  72.    obj.b21.value = ex.a21
  73.    obj.b22.value = ex.a22
  74.    obj.b23.value = ex.a23
  75.  
  76.  
  77.   }
  78.  else
  79.   {
  80.    if (obj.c11.value != "") {
  81.     obj.b11.value = obj.c11.value
  82.     obj.b12.value = obj.c12.value
  83.     obj.b13.value = obj.c13.value
  84.     obj.b21.value = obj.c21.value
  85.     obj.b22.value = obj.c22.value
  86.     obj.b23.value = obj.c23.value
  87.    }
  88.    obj.c11.value = ex.a11
  89.    obj.c12.value = ex.a12
  90.    obj.c13.value = ex.a13
  91.    obj.c21.value = ex.a21
  92.    obj.c22.value = ex.a22
  93.    obj.c23.value = ex.a23
  94.   }
  95. }
  96.  
  97.  
  98. function SetNewExample(obj)
  99. {
  100.  r1 = Math.round(Math.random()*20-10)
  101.  r2 = Math.round(Math.random()*20-10)
  102.  m1 = Math.round(Math.random()*10-5)
  103.  m2 = Math.round(Math.random()*10-5)
  104.  m3 = Math.round(Math.random()*10-5)
  105.  m4 = Math.round(Math.random()*10-5)
  106.  if (m2==0) m2=2
  107.  if (m4==0) m4=-2 
  108.  a11 = 1
  109.  a12 = m1
  110.  a13 = r1 + m1*r2
  111.  a21 = 0
  112.  a22 = m2
  113.  a23 = m2*r2
  114.  a21 += m3*a11
  115.  a22 += m3*a12
  116.  a23 += m3*a13
  117.  a11 *= m4
  118.  a12 *= m4
  119.  a13 *= m4
  120.  
  121.  ex = {a11:a11, a12:a12, a13:a13, a21:a21, a22:a22, a23:a23}
  122.  SetExample(obj, ex, true)
  123.  ex = {a11:"", a12:"", a13:"", a21:"", a22:"", a23:""}
  124.  // SetExample(obj, ex, false)
  125.  parent.frames[1].location.href="comments.html"
  126.  obj.c11.value=""
  127.  obj.c12.value=""
  128.  obj.c13.value=""
  129.  obj.c14.value=""
  130.  obj.c15.value=""
  131.  obj.c21.value=""
  132.  obj.c22.value=""
  133.  obj.c23.value=""
  134.  obj.c24.value=""
  135.  obj.c25.value=""
  136. }
  137.  
  138.  
  139. function GaussOneStep(frm,exdata)
  140. {
  141.  com=parent.frames[1].document
  142.  doc=parent.frames[0].document
  143.  frm.c14.value=""
  144.  frm.c15.value=""
  145.  frm.c24.value=""
  146.  frm.c25.value=""
  147.  if ((exdata.a11 != 0) && (exdata.a11 != 1))
  148.   {
  149.    exdata.a12 /= exdata.a11
  150.    exdata.a13 /= exdata.a11
  151.     frm.c14.value="/"
  152.        frm.c15.value=exdata.a11
  153.    exdata.a11 = 1
  154.    com.write("Prvou rovnici jsme vyd∞lili Φφslem "+frm.c15.value+", abychom v rovnici dostali 1*x. <br>")
  155.    return
  156.   } 
  157.  if ((exdata.a21 != 0) && (exdata.a11 != 0))
  158.   {
  159.    coef = exdata.a21 / exdata.a11
  160.    exdata.a22 -= coef * exdata.a12
  161.    exdata.a23 -= coef * exdata.a13
  162.       c=-coef 
  163.     if (c<0){
  164.     frm.c25.value="(2)"+c+"*(1)"
  165.     }else{
  166.     frm.c25.value="(2)+"+c+"*(1)"
  167.     }
  168. //       frm.c14.value="*"
  169. //    frm.c15.value=-coef
  170.    exdata.a21 = 0
  171.    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>")
  172.   return
  173.   }
  174.  if ((exdata.a22 != 0) && (exdata.a22 != 1))
  175.   {
  176.    exdata.a21 /= exdata.a22
  177.    exdata.a23 /= exdata.a22
  178.     frm.c24.value="/"
  179.        frm.c25.value=exdata.a22
  180.    exdata.a22 = 1
  181.    com.write("Druhou rovnici jsme vyd∞lili Φφslem "+frm.c25.value+", abychom dostali 1*y. <br>")
  182.    return
  183.   }
  184.  if ((exdata.a12 != 0) && (exdata.a22 != 0))
  185.   {
  186.    coef = exdata.a12 / exdata.a22
  187.    exdata.a11 -= coef * exdata.a21
  188.    exdata.a13 -= coef * exdata.a23
  189.         c=-coef
  190. if (c<0) {
  191.     frm.c15.value="(1)"+c+"*(2)"
  192.     }else{
  193.     frm.c15.value="(1)+"+c+"*(2)"
  194.         }
  195. //    frm.c24.value="*"
  196. //    frm.c25.value=-coef
  197.    exdata.a12 = 0
  198.      com.write("K prvΘ rovnici jsme p°iΦetli "+frm.c25.value+" nßsobek druhΘ rovnice, abychom z prvΘ rovnice vylouΦili y. <br>")
  199.    return
  200.   }
  201. if (exdata.a11==1 && exdata.a12==0){
  202.     if (exdata.a21==0 && exdata.a22==1){
  203.         alert("╪eÜenφ: x = "+exdata.a13+", y = "+exdata.a23)    
  204.     }
  205. }
  206.  
  207. function GetSolution(exdata, sol)
  208. {
  209.  A1 = exdata.a12 * exdata.a23 - exdata.a13 * exdata.a22
  210.  A2 = exdata.a11 * exdata.a23 - exdata.a13 * exdata.a21
  211.  A = exdata.a11 * exdata.a22 - exdata.a12 * exdata.a21
  212.  sol.correct = (A!=0)
  213.  if (sol.correct)
  214.   { sol.x1 = A1/A; sol.x2 = A2/A }
  215.  else
  216.   { sol.x1 = 0; sol.x2 = 0 }
  217. }
  218.  
  219.  
  220. function IsTargetFilled(frm)
  221. {
  222.  return ((frm.c11.value!="") && (frm.c12.value!="") && (frm.c13.value!="") &&
  223.          (frm.c21.value!="") && (frm.c22.value!="") && (frm.c23.value!=""))
  224. }
  225.  
  226.  
  227. function CheckDiagonal(frm, showalert)
  228. {
  229.  ex = {a11:0, a12:0, a13:0, a21:0, a22:0, a23:0}
  230.  if (GetExample(frm, ex, false, true) != 0) return false
  231.  IsE = (((ex.a11 == 0) || (ex.a11 == 1)) && ((ex.a12 == 0) || (ex.a12 == 1)) &&
  232.         ((ex.a21 == 0) || (ex.a21 == 1)) && ((ex.a22 == 0) || (ex.a22 == 1)))
  233.  if (IsE)
  234.    IsE = !(((ex.a11 != 0) && (ex.a12 != 0)) || ((ex.a21 != 0) && (ex.a22 != 0)))
  235.  
  236.  if ((!IsE) && showalert)
  237.    alert("Eliminace jeÜt∞ nenφ u konce!")
  238.  return IsE
  239. }
  240.  
  241.  
  242. function CheckEquivalent(frm, showalert)
  243. {
  244.  ex1 = {a11:0, a12:0, a13:0, a21:0, a22:0, a23:0}
  245.  ex2 = {a11:0, a12:0, a13:0, a21:0, a22:0, a23:0}
  246.  if (GetExample(frm, ex1, true, true) != 0) return false
  247.  if (GetExample(frm, ex2, false, true) != 0) return false
  248.  sol1 = {x1:0, x2:0, correct:0}
  249.  sol2 = {x1:0, x2:0, correct:0}
  250.  GetSolution(ex1, sol1)
  251.  GetSolution(ex2, sol2)
  252.  equiv = ((sol1.correct == sol2.correct) && (sol1.x1 == sol2.x1) && (sol1.x2 == sol2.x2))
  253.  if (!equiv && showalert)
  254.    alert("V °eÜenφ jsou chyby.")
  255.  return equiv
  256. }
  257.