Die Mathe-Redaktion - 17.01.2018 19:08 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
ListenpunktSchwätz / Top 15
ListenpunktWerde Mathe-Millionär!
ListenpunktZur Award-Abstimmung
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden oder den Newsletter bestellen.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 857 Gäste und 35 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » C: Euklidische Norm
Druckversion
Druckversion
Autor
Universität/Hochschule J C: Euklidische Norm
Specialagent
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2012
Mitteilungen: 56
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2017-12-15


Guten Morgen,

ich möchte für Vektoren der Länge 100 die Summennorm, euklidische Norm und Maximumsnorm berechnen. Für die euklidische Norm (im Code die Funktion norm2) bekomme ich aber immer den Wert 0 ausgegeben. Könnte mir jemand einen Hinweis geben wieso ich immer die 0 bekomme?

Danke!
C
  1. #include <stdlib.h>
  2. #include <time.h>
  3. #include <math.h>
  4. #include <stdio.h>
  5.  
  6. enum { N = 100 };
  7.  
  8. double norm1(int n, double* v)
  9. {
  10. double norm = 0;
  11.  
  12. for (n = 0; n < N; n++)
  13. {
  14. norm = norm + v[n];
  15. }
  16.  
  17. return norm;
  18. }
  19.  
  20. double norm2(int n, double* v)
  21. {
  22. int quadrat = 0;
  23. double wurzel;
  24.  
  25. for (n = 0; n < N; n++)
  26. {
  27. quadrat = quadrat + ((v[n])*(v[n]));
  28. }
  29.  
  30. wurzel = sqrt(quadrat);
  31.  
  32. return wurzel;
  33. }
  34.  
  35. double normInf(int n, double *v)
  36. {
  37. double maximum = v[0];
  38.  
  39. for (n = 1; n < N; n++)
  40. {
  41. if (v[n] > maximum)
  42. {
  43. maximum = v[n];
  44. }
  45. }
  46.  
  47. return maximum;
  48. }
  49.  
  50.  
  51. int main(void)
  52. {
  53. int n = N;
  54. double v[N];
  55.  
  56. // Initialisiere v mit Zufallszahlen
  57. srand(time(NULL));
  58.  
  59. for (int i = 0; i < N; i++)
  60. {
  61. v[i] = (double)rand() / RAND_MAX;
  62. }
  63.  
  64.  
  65. printf("Die Summennorm ist: %lf \n", norm1(n,v));
  66. printf("Die euklidische Norm ist: %lf \n", norm2(n,v));
  67. printf("Die Maximumsnorm ist: %lf \n", normInf(n,v));
  68. return 0;
  69. }



Wahlurne Für Specialagent bei den Matheplanet-Awards stimmen
  Profil  Quote  Link auf diesen Beitrag Link
Gothos
Junior Letzter Besuch: in der letzten Woche
Dabei seit: 23.02.2014
Mitteilungen: 19
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2017-12-15


Hi Specialagent,

überlege Dir folgende Punkte:

1. Welche Werte nehmen die Werte von v an?
2. Die Variable quadrat in der Funktion norm2 hat den Datentyp int. Was bedeutet dies im Hinblick auf 1?

--Gothos



Wahlurne Für Gothos bei den Matheplanet-Awards stimmen
  Profil  Quote  Link auf diesen Beitrag Link
Specialagent
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2012
Mitteilungen: 56
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2017-12-15


Hi,

Danke für den Hinweis. Der Datentyp sollte natürlich double sein.




Wahlurne Für Specialagent bei den Matheplanet-Awards stimmen
  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 3799
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2017-12-15


Hallo Specialagent,

auch die Variable quadrat sollte vom Typ double sein. Außerdem ergibt das Übergeben der Variablen n in deinen drei Funktionen überhaupt keinen Sinn. Sinnvoller wäre es, N zu übergeben.

Bei norm1 und normInf muss jeweils der Absolutbetrag von v[n] genommen werden.



Wahlurne Für StrgAltEntf bei den Matheplanet-Awards stimmen
  Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 26137
Aus: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2017-12-15


2017-12-15 18:18 - StrgAltEntf in Beitrag No. 3 schreibt:
Außerdem ergibt das Übergeben der Variablen n in deinen drei Funktionen überhaupt keinen Sinn. Sinnvoller wäre es, N zu übergeben.
Das wäre genauso sinnlos frown
Denn der Parameter wird einfach als Laufvariable für die for-Schleife verwendet. Völlig egal, was da übergeben wird.

Das Ganze klappt auch nur, weil N global (*bäh*) definiert ist.

Gruß vom ¼


-----------------
Bild



Wahlurne Für viertel bei den Matheplanet-Awards stimmen
  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 3799
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2017-12-15


2017-12-15 18:36 - viertel in Beitrag No. 4 schreibt:
2017-12-15 18:18 - StrgAltEntf in Beitrag No. 3 schreibt:
Außerdem ergibt das Übergeben der Variablen n in deinen drei Funktionen überhaupt keinen Sinn. Sinnvoller wäre es, N zu übergeben.
Das wäre genauso sinnlos frown
Denn der Parameter wird einfach als Laufvariable für die for-Schleife verwendet. Völlig egal, was da übergeben wird.

Ich meinte natürlich die Deklaration der Funktionen und nicht den Aufruf.



Wahlurne Für StrgAltEntf bei den Matheplanet-Awards stimmen
  Profil  Quote  Link auf diesen Beitrag Link
Specialagent
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2012
Mitteilungen: 56
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, vom Themenstarter, eingetragen 2017-12-16


Hallo,

danke euch für die Hilfe!



Wahlurne Für Specialagent bei den Matheplanet-Awards stimmen
  Profil  Quote  Link auf diesen Beitrag Link
Specialagent hat die Antworten auf ihre/seine Frage gesehen.
Das Thema wurde von einem Senior oder Moderator abgehakt.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2017 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]