Forum: Mikrocontroller und Digitale Elektronik ln(x) ohne math.h


von BassJunky (Gast)


Lesenswert?

Hi Leute,

ich muss mit einem PIC den natürlichen Logarithmus berechnen.
Leider gibt es im C18-C-Compiler keine entsprechende Funktion auch nicht 
log(x) oder log10(x).

Weiß von euch jemand wo ich mir den Code für die Berechnung des ln() 
runterladen kann?

mfg BassJunky

: Gesperrt durch Moderator
von Reiner (Gast)


Lesenswert?

hi,
hab auch mal für PIC16 x hoch y gebraucht und bin über logarithmen 
gegangen.

;Natuerlicher Logarithmus  AARG -> AARG
;
;                  n->oo
;                 -----         /       \
;                 \        1    |  x-1  | 2n+1
;  ln(x) = 2   >    ---- * | ----- |
;                 /      2n+1   |  x+1  |
;                 -----         \       /
;                  n=0
;

Das funktionierte, war aber wirklich dämlich zu programmieren. Ewig 
dieses banking.. Seitdem kommt kein PIC mehr in neue Projekte.

Reiner

von Julian Lindemeyer (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
das ist meine Aufgabe
leider habe ich nicht so richtig den Ansatz und werde mir auf 
Hilfestellungen freuen

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Julian Lindemeyer schrieb:
> das ist meine Aufgabe
Bitte die Frage in einem neuen Thread mit ein paar Anpassungen nochmal 
stellen.
Und nicht zig uralte Threads ausgraben!!!

> leider habe ich nicht so richtig den Ansatz
Dann zeig mal deinen falschen Ansatz und beschreibe, wo es klemmt. Dann 
hat man was zu diskutieren.

> PA2_48.pdf_
Besser ohne den letzten Unterstrich anhängen, denn mit einer "PDF_" 
Datei kann niemand was anfangen.

: Bearbeitet durch Moderator
von Max B. (citgo)


Lesenswert?

Beitrag "Programmiersprache C; natürlicher Logarithmus"

Müsst ihr alle die gleiche Aufgabe machen???
Anstatt einen Thread von 2003 auszukramen solltest du mal die 
Suchfunktion nutzen.

Ich habe keine Ahnung von ln() programmieren ohne math.lib aber ich habe 
dank Google Suche und der Suche hier im Forum eine mögliche Lösung 
gefunden!

von Gustl B. (-gb-)


Lesenswert?

Das ist eine Hausaufgabe. Lies die Aufgabenstellung noch mal un Ruhe 
durch. Da steht sogar wie du die Aufgabe zu lösen hast.
Es geht um die Berechnung konvergierender Reihen und die Reihe des ln 
ist sogar mit in der Aufgabenstellung angegeben.
Vor einer Hausaufgabe kommt üblicherweise Unterricht/Vorlesung. Da 
werdet ihr die nötigen Themen durchgesprochen haben. Sonst gibt es 
bestimmt Unterrichtsmaterialien, Buch, Skript, ...

Selbst wenn du das jetzt nicht in C schreiben kannst, dann schreibe es 
zumindest mal so auf, wie du es per Hand rechnen würdest.

Edit:
Auch wenn man hier oder sonst wo eine Lösung einfach finden kann, man 
sollte solche Aufgaben schon selber machen. Habt ihr denn nicht den 
Anspruch an euch selbst etwas zu verstehen?

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Julian Lindemeyer schrieb:
> leider habe ich nicht so richtig den Ansatz und werde mir auf
> Hilfestellungen freuen

Dieses Risiko würde ich an deiner Stelle nicht eingehen. Auf der letzten
Seite der Aufgabenstellung steht nämlich geschrieben:
1
Sie sollen diese Projektaufgaben selbstständig bearbeiten und lösen.
2
Alle Lösungen, die aus der Betrachtung des Quellcodes und dem Vergleich
3
mit anderen abgegeben Lösungen vermuten lassen, dass die Bearbeitung
4
nicht eigenständig durch Sie selbst erfolgte, werden mit 0 Punkten
5
bewertet oder zumindest stark abgewertet. Diese Abwertung betrifft auch
6
diejenigen Lösungen, die als Quelle für andere abgegebene Lösungen
7
vermutet werden können.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> Auf der letzten Seite der Aufgabenstellung steht nämlich geschrieben...
Du hast tatsächlich den Unterstrich vom Dateinamen weggemacht? Gnadenlos 
neugierig, wenns um Mathe geht...  ;-)

von Max B. (citgo)


Lesenswert?

Lothar M. schrieb:
> Yalu X. schrieb:
>> Auf der letzten Seite der Aufgabenstellung steht nämlich geschrieben...
> Du hast tatsächlich den Unterstrich vom Dateinamen weggemacht? Gnadenlos
> neugierig, wenns um Mathe geht...  ;-)

Lothar, also ich kann das PDF auch ganz normal öffnen ohne den 
Unterstrich wegzumachen.
1
Achtung: Bevor Sie eine Lösung für diese Projektaufgabe abgeben, sollten Sie
2
sicher sein, dass Sie in der Lage sind, die Programmierung Ihrer Lösung dem
3
Praktikumsbetreuer erklären zu können, und zwar derart, dass keine Zweifel
4
daran entstehen, dass Sie die Lösung selbständig erarbeitet haben.
5
Bitte beachten Sie den nachfolgenden Abschnitt 2!

: Bearbeitet durch User
von M.A. S. (mse2)


Lesenswert?

Ich weiß, ich bin böse, aber:
In der Aufgabenstellung steht ziemlich genau drin, was gemacht werden 
soll.
Wenn ein STUDENT(!) das nicht alleine(!) auf die Reihe kriegt, liegt 
etwas ganz gewaltig im Argen.

Besonders, wenn es nicht nur um kleinere Deilailprobleme geht, sondern 
ganz allgemein 'irgendwie nicht so richtig ein Ansatz' vorliegt.

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Ich will jetzt keine Grundsatzdiskussion vom Zaun brechen, aber ... hier 
https://faculty.utrgv.edu/eleftherios.gkioulekas/OGS/Misc/ARUSSIAN.PDF 
wurde schon vor einiger Zeit beschrieben in welche Richtung es mit der 
Bildung geht.

SCNR, ich muss den Text einfach immer wieder verlinken.

von Olaf (Gast)


Lesenswert?

> Wenn ein STUDENT(!) das nicht alleine(!) auf die Reihe kriegt, liegt
> etwas ganz gewaltig im Argen.

Ach komm...wir hatten damals auch eine Abbrecherquote von 80%.
Bloss sind die frueher halt einfach leise gegangen und haben nicht erst
im Internet nach Abschreibequellen gesucht.

Olaf

von Wolfgang (Gast)


Lesenswert?

Max B. schrieb:
> Lothar, also ich kann das PDF auch ganz normal öffnen ohne den
> Unterstrich wegzumachen.

Wie schön für dich.
Wahrscheinlich kannst du auch jeden C-Compiler mit .txt-Dateien füttern.

von Rainer V. (a_zip)


Lesenswert?

Max B. schrieb:
> Müsst ihr alle die gleiche Aufgabe machen???

Mußten alle seit 2003 die gleiche Aufgabe lösen??? Früher gabs mal 
Sammlungen von Klausuraufgaben mit Lösungen!! Heute wohl nicht mehr :-)
Gruß Rainer

von Max B. (citgo)


Lesenswert?

Wolfgang schrieb:
> Max B. schrieb:
>> Lothar, also ich kann das PDF auch ganz normal öffnen ohne den
>> Unterstrich wegzumachen.
>
> Wie schön für dich.
> Wahrscheinlich kannst du auch jeden C-Compiler mit .txt-Dateien füttern.

Hast du schlecht gefrühstückt oder warum kackst du mich so an?

Ich habe dem Lothar lediglich gesagt, dass ich das PDF so wie es ist 
öffnen kann.
Was das mit C und .txt zu tun haben soll erschließt sich mir nicht. 
Hauptsache mal andere Leute ans Bein pissen....

von Wolfgang (Gast)


Lesenswert?

BassJunky schrieb:
> Weiß von euch jemand wo ich mir den Code für die Berechnung des ln()
> runterladen kann?

Julian Lindemeyer schrieb:
> PA2_48.pdf_ (876 KB, 53 Downloads)

Du scheinst grundlegende Probleme beim Verständnis der Aufgabenstellung 
zu haben. Lies mal den ersten Satz im Abschnitt /1.2 Aufgabenstellung/. 
Da steht "Entwickeln Sie ein C Programm zur Berechnung des natürlichen 
Logarithmus.". Von runterladen ist dort nichts erwähnt.

von M.A. S. (mse2)


Lesenswert?

Olaf schrieb:
> Ach komm...wir hatten damals auch eine Abbrecherquote von 80%.

Ja, da hast Du natürlich recht.


Gustl B. schrieb:
> Ich will jetzt keine Grundsatzdiskussion vom Zaun brechen, aber ...

...die ergibt sich bei so einer Art von Frage zwangsläufig von ganz 
alleine.

von Dominik K. (Gast)


Lesenswert?

Wolfgang schrieb:
> BassJunky schrieb:
>> Weiß von euch jemand wo ich mir den Code für die Berechnung des ln()
>> runterladen kann?
>
> Julian Lindemeyer schrieb:
>> PA2_48.pdf_ (876 KB, 53 Downloads)
>
> Du scheinst grundlegende Probleme beim Verständnis der Aufgabenstellung
> zu haben. Lies mal den ersten Satz im Abschnitt /1.2 Aufgabenstellung/.
> Da steht "Entwickeln Sie ein C Programm zur Berechnung des natürlichen
> Logarithmus.". Von runterladen ist dort nichts erwähnt.

Du antwortest gerade dem TO mit seiner Frage vom 24.03.2003.
Respekt Wolfgang....Respekt!!!

von Gustl B. (-gb-)


Lesenswert?

M.A. S. schrieb:
> ...die ergibt sich bei so einer Art von Frage zwangsläufig von ganz
> alleine.

Und wo wir schon dabei sind:
Die Dateiendung hat nichts mit dem Inhalt der Datei zu tun. 
Dummerweise/Praktischerweise verwenden einige Betriebysteme diese Endung 
um Programme Dateitypen zuzuordnen. Man könnte aber viel geeigneter auch 
die ersten paar Bytes angucken und denn entscheiden welches Programm 
zuständig ist. Bei PDF ist das 0x25 0x50 0x44 0x46.

Noch witziger wird es durch Gewöhnung. Leute haben sich angewohnt, dass 
die Endung aussagt welcher Dateityp das ist. Völlig beknackt, aber irre 
praktisch - auch für Trojanerschreiber die dann eben statt .exe ein .pdf 
schreiben.

Und noch besser ist die Windows Defaulteinstellung, die diese Endungen 
sogar ausblendet. Da sieht der Benutzer also die Endung nach dem letzten 
. nicht mehr. Wenn jetzt also eine Datei Trojaner.pdf.exe heißt, dann 
sieht der Benutzer Trojaner.pdf. Tolle Sache und großes Lob an alle 
Beteiligten.

: Bearbeitet durch User
von Dergute W. (derguteweka)


Lesenswert?

Moin,

Weil ich heut' ne janz fiese moepp bin, hier eine Loesungsmoeglichkeit:
1
#include <stdio.h>
2
3
float lnp1(float x) {
4
    float lastrc = -1.0;
5
    float rc = 0.0;
6
    float xp = x;
7
    int sign = 1;
8
    int k = 1;
9
10
    while ((lastrc != rc) && k) {
11
        lastrc = rc;
12
        rc = rc + sign * xp / k;
13
        k++;
14
        xp *= x;
15
        sign = -sign;
16
    }
17
    return rc;
18
}
19
20
float ln(float x) {
21
    if (x<=2.0) {
22
      x -= 1.0;
23
      return lnp1(x);
24
    } else {
25
      x -= 1.0;
26
      x = -x / (1.0 + x);
27
      return -lnp1(x);
28
    }
29
}
30
31
int main() {
32
    int i,n;
33
    float x;
34
35
    scanf("%d",&n);
36
    for (i = 0; i < n; i++) {
37
        scanf("%f", &x);
38
        printf("%f\n", ln(x));
39
    }
40
    return 0;
41
}

SCNR,
WK

von M.A. S. (mse2)


Lesenswert?

Gustl B. schrieb:
> Und noch besser ist die Windows Defaulteinstellung, die diese Endungen
> sogar ausblendet. Da sieht der Benutzer also die Endung nach dem letzten
> . nicht mehr.

Diese Option kann man zum Glück ausschalten (was ich grundsätzlich 
mache, ich will immer alle Dateiendungen sehen).

von Wolfgang (Gast)


Lesenswert?

Dominik K. schrieb:
> Du antwortest gerade dem TO mit seiner Frage vom 24.03.2003.

Nein, ich habe auf die Aufgabenstellung in dem verlinkten PDF 
geantwortet, gerade mal 1h57m alt.

Man könnte sich natürlich fragen, warum Julian einen 16 Jahre alten 
Thread hervorkramt, oder nach welchen Gesichtspunkten die Forensoftware 
die Warnung bei Antworten auf alte Threads einblendet.

von Max B. (citgo)


Lesenswert?

Wolfgang schrieb:
> Dominik K. schrieb:
>> Du antwortest gerade dem TO mit seiner Frage vom 24.03.2003.
>
> Nein, ich habe auf die Aufgabenstellung in dem verlinkten PDF
> geantwortet, gerade mal 1h57m alt.
>


Doch!
Julian hat nicht gefragt wo man den Code runterladen kann, sondern 
BassJunky. Und der hat mit dem PDF und deren Aufgabenstellung nix zu 
tun!!!

Aber egal...

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Gustl B. schrieb:
> Die Dateiendung hat nichts mit dem Inhalt der Datei zu tun.
> Dummerweise/Praktischerweise verwenden einige Betriebysteme diese Endung
> um Programme Dateitypen zuzuordnen.
Und auch die Forensoftware: mit der korrekten Endung gibt ein paar nette 
Gimmicks. Das gilt auch für *.c und *.h und *.ino und ein paar andere 
Dateien.

Max B. schrieb:
> Lothar, also ich kann das PDF auch ganz normal öffnen ohne den
> Unterstrich wegzumachen.
Weil das von dir verwendete OS offenbar elementare Userfehler, die IMHO 
eines Technikers nicht würdig sind, ausbügelt.

Wolfgang schrieb:
> nach welchen Gesichtspunkten die Forensoftware die Warnung bei Antworten
> auf alte Threads einblendet.
Danach, dass die letzten paar Posts des Threads uralt sind. Wenn er dann 
mal reanimiert wurde, gibt sie auf...   ;-)

Max B. schrieb:
> Julian hat nicht gefragt wo man den Code runterladen kann, sondern
> BassJunky. Und der hat mit dem PDF und deren Aufgabenstellung nix zu
> tun!!!
Aus diesem Grund: neuer Thread für neues Problem.

: Bearbeitet durch Moderator
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.