Difference between revisions of "NL/Documentation/How Tos/Calc: functie INVERSEMAT"

From Apache OpenOffice Wiki
Jump to: navigation, search
m (Reverted edits by Carasen12 (Talk) to last revision by DiGro)
Line 1: Line 1:
 +
__NOTOC__
  
 +
== INVERSEMAT ==
 +
Geeft de inverse van een matrix terug.
  
 +
=== Syntaxis: ===
 +
<tt>'''INVERSEMAT(matrix)'''</tt>
 +
: geeft de inverse terug van de vierkante matrix <tt>'''matrix'''</tt>, welke een matrix als regel of een bereik mag zijn, die alle getallen bevat.
  
 +
: <tt>'''INVERSEMAT'''</tt> geeft een matrix terug en moet worden ingevoerd als een matrixformule (bijvoorbeeld door '''Ctrl-Shift-Enter''' te gebruiken in plaats van alleen '''Enter''').
  
# Copyright 2006 Google Inc.
+
: Een matrix heeft alleen een inverse als de determinant er van niet nul is.
#
+
# Licensed under the Apache License, Version 2.0 (the "License");
+
# you may not use this file except in compliance with the License.
+
# You may obtain a copy of the License at
+
#
+
#    http://www.apache.org/licenses/LICENSE-2.0
+
#
+
# Unless required by applicable law or agreed to in writing, software
+
# distributed under the License is distributed on an "AS IS" BASIS,
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
# See the License for the specific language governing permissions and
+
# limitations under the License.
+
  
# OO.o build profile analyzer. To get the required patches look at:
+
=== Voorbeeld: ===
# http://wiki.services.openoffice.org/wiki/BuildSpeedup
+
<tt>'''=INVERSEMAT({4;2|3;2})'''</tt>
# Author: Kai Backman, kaib@google.com
+
: indien ingevoerd als een matrixformule in cel B3, geeft <tt>'''{1;-1|-1,5;2}'''</tt> terug, zodat de cellen B3, C3, B4, C4 respectievelijk weergeven <tt>'''1'''</tt>, <tt>'''-1'''</tt>, <tt>'''-1,5'''</tt>, <tt>'''2'''</tt>.
  
import os
+
<tt>'''=INVERSEMAT(A1:B2)'''</tt>
import re
+
: indien ingevoerd als een matrixformule in cel B3, waarbij de cellen A1, B1, A2, B2 respectievelijk bevatten <tt>'''4'''</tt>, <tt>'''2'''</tt>, <tt>'''3'''</tt>, <tt>'''2'''</tt>, geeft respectievelijk <tt>'''1'''</tt>, <tt>'''-1'''</tt>, <tt>'''-1,5'''</tt>, <tt>'''2'''</tt> terug in de cellen B3, C3, B4 en C4.
import sys
+
  
def SortProfileTimes(lhs, rhs):
+
=== Zie ook: ===
  if lhs[1] < rhs[1]<>: return 1
+
  elif rhs[1] < lhs[1]<>: return -1
+
  else<>: return 0
+
  
def ProcessLogFile(file_name, target_durations):
+
[[Documentation/nl/How_Tos/Calc: functie DETERMINANT.MAT|'''DETERMINANT.MAT''']],
#  print "Processing file: " + file_name
+
[[Documentation/nl/How_Tos/Calc: functie PRODUCTMAT|'''PRODUCTMAT''']],
  file = open(file_name)
+
[[Documentation/nl/How_Tos/Calc: functie EENHEIDSMAT|'''EENHEIDSMAT''']]
  start_time = 0
+
  end_time = 0
+
  
  target_start = 0
+
[[Documentation/nl/How_Tos/Matrices gebruiken|'''Hoe matrices te gebruiken in Calc''']]
  target_name = ""
+
  line = file.readline()
+
  while line<>!= ""<>:
+
    tokens = line[:-1].split(" ")
+
    line = file.readline()
+
  
    if len(tokens) < 2<>: continue
+
[[Documentation/nl/How_Tos/Calc: Matrixfuncties|'''Matrixfuncties''']]
    if tokens[1] == "build"<>:
+
      if tokens[0] == "s"<>:
+
        start_time = int(tokens[2]) * 1000
+
      elif tokens[0] == "e"<>:
+
        end_time = int(tokens[2]) * 1000
+
    elif tokens[1] == "target"<>:
+
      if tokens[0] == "s":
+
        target_start = int(tokens[2])
+
        target_name = tokens[3]
+
      elif tokens[0] == "e" and target_name == tokens[3]:
+
        target_duration = int(tokens[2]) - target_start
+
        target_tokens = tokens[3].split(".")
+
        target_class = target_tokens[-1]
+
        if target_class in target_durations<>:
+
          target_durations[target_class] += target_duration
+
        else<>:
+
          target_durations[target_class] = target_duration
+
  file.close()
+
  return end_time - start_time
+
  return
+
  
 
+
[[Documentation/nl/How_Tos/Calc: Functies alfabetisch gesorteerd|'''Functies - alfabetisch gesorteerd''']],
if __name__ == "__main__":
+
[[Documentation/nl/How_Tos/Calc: Functies gesorteerd per categorie|'''Functies - gesorteerd per categorie''']]
  target_durations = {}
+
[[Category: NL/Documentation/Reference/Calc]]
  total_time = 0
+
  for file_name in sys.argv[1:]<>:
+
    total_time += ProcessLogFile(file_name, target_durations)
+
 
+
  profile = target_durations.items()
+
  profile.sort(SortProfileTimes)
+
  total_target_time = 0
+
  for target_iter in profile<>:
+
    target_promille = target_iter[1] * 1000 / total_time
+
    if target_promille > 0<>:
+
      print "%6.ds<>%3.d.%1.d%%<>%s"<>% (target_iter[1] / 1000, target_promille/10,
+
                                      target_promille<>% 10, target_iter[0])
+
    total_target_time += target_iter[1]
+
  print "Running time:<>%d s targets:<>%d s<>%d%%"<>% (total_time / 1000, total_target_time / 1000,
+
                                                  total_target_time * 100 / total_time)
+

Revision as of 08:00, 29 June 2010


INVERSEMAT

Geeft de inverse van een matrix terug.

Syntaxis:

INVERSEMAT(matrix)

geeft de inverse terug van de vierkante matrix matrix, welke een matrix als regel of een bereik mag zijn, die alle getallen bevat.
INVERSEMAT geeft een matrix terug en moet worden ingevoerd als een matrixformule (bijvoorbeeld door Ctrl-Shift-Enter te gebruiken in plaats van alleen Enter).
Een matrix heeft alleen een inverse als de determinant er van niet nul is.

Voorbeeld:

=INVERSEMAT({4;2|3;2})

indien ingevoerd als een matrixformule in cel B3, geeft {1;-1|-1,5;2} terug, zodat de cellen B3, C3, B4, C4 respectievelijk weergeven 1, -1, -1,5, 2.

=INVERSEMAT(A1:B2)

indien ingevoerd als een matrixformule in cel B3, waarbij de cellen A1, B1, A2, B2 respectievelijk bevatten 4, 2, 3, 2, geeft respectievelijk 1, -1, -1,5, 2 terug in de cellen B3, C3, B4 en C4.

Zie ook:

DETERMINANT.MAT, PRODUCTMAT, EENHEIDSMAT

Hoe matrices te gebruiken in Calc

Matrixfuncties

Functies - alfabetisch gesorteerd, Functies - gesorteerd per categorie

Personal tools