Entries tagged regular

MAC-Adresse per Skript aus ifconfig

Posted on 9. Februar 2012 Comments

Soweit ich weiß, gibt es unter Linux keinen Befehl oder eine Datei in der die MAC-Adresse steht, nur ifconfig. Für die weitere Verwendung ist das natürlich unpraktisch und so habe ich hier eben ein bisschen was mit grep und regular expressions zusammengeskriptet/kopiert:

#!/bin/bash
ifconfig |grep $1 | grep -m 1 -Eo '[[:alnum:]][[:alnum:]](:[[:alnum:]][[:alnum:]]){5}'

Das am besten unter der Datei grepMacAdr speichern, noch schnell mit

chhmod +x  grepMacAdr

ausführtbar machen, dann erfolgt der Aufruf mit

./grepMacAdr eth0

eth0 ist hier das Netzwerkgerät. Wenn das bekannt ist kann auch direkt im Skript $1(=erster Parameter) durch die entsprechende Bezeichnung geändert werden.

Zur Erklärung: ifconfig ruft den Befehl auf, der alle Netzwerkgeräte samt Konfiguration ausgibt, von denen schneidet das Tool grep nur den Abschnitt heraus, der das übergebene Netzwerkgerät behandelt(bzw. die erste Zeile, da steht die MAC-Adresse im allgemeinen) und davon wiederrum wird mit einer Regular Expression(-E) dann nach dem Muster XX:XX:XX:XX:XX gesucht. Falls, was mit dem ersten grep falsch gelaufen ist, wird nur das erste ausgeben(-m 1). Ausgegeben wird dabei nur der Teil, der das Muster einhält, nicht die ganze Zeile(-o)

Ihr findet das Skript auch als fertige Datei hier.

flattr this!

Berechnen von Nullstellen in Matlab

Posted on 30. Juli 2011 Comments

Als Beispiel möchte ich hier die Funktion und ihre Ableitung benutzen:

Nullstellen mit Matlab: Funktion

  • a, b: Intervall
  • eta: Genauigkeit
  • format long: 15 Nachkommastellen

 

 //update: GitHub

 

1. Bisektion (Wikipedia)

function [nullstelle,i]=bisektion(a,b)
  format long;
  eta = 0.00001;
  i=0;
  if(f(b)*f(a)<0)
    while(abs(b-a)>eta)
      if(f((a+b)/2)*f(a)>0)
        a=(a+b)/2;
      else
        b=(a+b)/2;
      end
      i=i+1;
    end
    nullstelle=(a+b)/2;
  end

function f_x=f(x)
  f_x=x.^6-x-1;

2. Newtown-Verfahren

function [nullstelle,i]=newton_verfahren(x)
  format long;
  eta=0.00001;
  diff=1;
  i=0;
  while(diff>eta)
    nullstelle = x;
    [f_x,fp_x]=f(x);
    x=x-f_x/fp_x;
    i=i+1;
    diff=abs(x-nullstelle);
  end
  nullstelle=x;

function [f_x,fp_x]=f(x)
  f_x  = x.^6-x-1;
  fp_x = 6*x.^5-1;

 

3. Sekanten-Verfahren

function [nullstelle,i]=sekanten_verfahren(a,b)
  format long;
  eta=0.00001;
  i=0;
  while(abs(b-a)>eta)
    nullstelle=b;
    b=b-f(b)*(b-a)/(f(b)-f(a));
    a=nullstelle;
    i=i+1;
  end
  nullstelle=(a+b)/2;

function f_x=f(x)
  f_x=x.^6-x-1;

4. Regular-Falsi

function [nullstelle,i]=regula_falsi(a,b)
  format long;
  eta=0.00001;
  i=0;
  diff=1;
  if(f(b)*f(a)<0)
    nullstelle = a;
    while(diff>eta)
      x=(a*f(b)-b*f(a))/(f(b)-f(a));
      if(f(x)<0)
        a=x;
      else
        b=x;
      end
      diff=abs(x-nullstelle);
      nullstelle = x;
      i=i+1;
    end
  end

function f_x=f(x)
  f_x=x.^6-x-1;

flattr this!