Bitte um den letzten Schliff zu einem Eigenwertberechnungsbsp. in C

Ja Hallo,

Das ist mein erster Post in eurem Forum und ich habe schon eine Bitte...

Ich habe ein Programm zur Eigenwertberechnung einer 2x2 Matrix geschrieben... Im großen und ganzen geht es darum eine 2x2 Matrix einzugeben und dann die Eigenwerte zu berechnen...

Ich habe das über die Koeffizienten des charakteristischen Polynoms gemacht (Einfach ein quadratisches Polynom und die Nullstellen sind die Eigenwerte.. Koeffizienten bekommt man mittels Formel, bleiben also immer gleich).

Ich habe zwei Funktionen zur Lösung der quadratischen Polynoms geschrieben.. zwei deshalb weil ich bei der großen Lösungsformel einmal ein x/- habe...

der C Compiler schreibt mir aber noch zwei Warnungen hin...
und zwar:

call to function eigenwertuno with no prototype.
call to function eigenwertduo with no prototype.

das ist der Code:

Code:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
 
#define ROWS 2
#define COLS 2
#define n 3
 
int eigentwertuno(int *vektor)		 //Funktion zur Eigenwertberechung
{
return(-vektor[1] + sqrt(vektor[1]*vektor[1] + 4*vektor[0]*vektor[2])/2*vektor[0]);
}
 
int eigentwertduo(int *vektor)		 //Funktion zur Eigenwertberechung
{
return(-vektor[1] - sqrt(vektor[1]*vektor[1] + 4*vektor[0]*vektor[2])/2*vektor[0]);
}
 
int main ()
{
int **matrix = malloc(ROWS * sizeof(int*));	//Definiere Dynamisches Array, erstmals nur Zeilen, z.B.:{{1},{3}}
 
int col_count = 0;
int row_count = ROWS;
int eingabe = 0;
int i = 0;
 
while(row_count--)									//Erweitere und initialisiere Dynamisches Array durch mehrere Einträge in den Spalten, z.B.:{{1,2},{3,4}}
	 matrix[row_count] = malloc(COLS * sizeof(int));
 
for (row_count = 0; row_count < ROWS; row_count++)
	{
	 for (col_count = 0; col_count < COLS; col_count++)
	 printf("Geben sie das Element [%d][%d] der Matrix ein:\n",row_count,col_count); 
	 scanf("%d",&eingabe);	 //Eingabe jedes einzelnen Wertes der 2x2 - Matrix
	}
	{
	int *vektor = malloc(3*sizeof(int)); //Definiere und initialisiere einen Dynamischen Vektor mit den Koeffizienten des charakteristischen Polynoms
 
	vektor[0] = 1;
	vektor[1] = -matrix[0][0]-matrix[1][1];
	vektor[2] = matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0];
 
	for (i = 0; i < n; i++)
	printf("Die Vektorkomponenten sind: vektor[%d]\n",&i);
	printf("die Eigenwerte der eingegebenen 2x2 - Matrix sind: %d %d\n",eigenwertuno(*vektor),eigenwertduo(*vektor));//Hier sollten die Eigenwerte angezeigt werden die oben berechnet werden...
	free(vektor); //disallokiert den Speicher des dynamischen Vektors
	vektor = NULL;
	}
	while(row_count--)
	 free(matrix[row_count]); //disallokiert den Speicher der Matrix
	free(matrix);
	matrix = NULL;
 
	return(0);
}

was könnte falsch bzw. noch zu ersetzen sein ?


Danke im Voraus !

- VoP
 
Ich habe nur kurz drübergesehen, aber ich glaube, dass du da nur ein syntaktisches Problem hast.

Code:
printf("die Eigenwerte der eingegebenen 2x2 - Matrix sind: %d %d\n",eigenwertuno(*vektor),eigenwertduo(*vektor));//Hier sollten die Eigenwerte angezeigt werden die oben berechnet werden...

Lass mal den '*' vor dem vektor weg, dann müsste es eigentlich gehen. Bin jetzt zu müde, den Grund dafür zu erklären.
 
Zurück