000
29.10.2006, 10:28 Uhr
Trivalik
|
Im Studium mussten wir in numerik etwas Programmieren. Dabei ist mir etwas aufgefallen.
Wenn ich eine Funkion in eine function auslagerte kam etwas anderes herraus.
C++: |
#include <math.h> #include <stdio.h> #include <stdlib.h>
float funktion(float x) { return 1.0f/((x+0.13f)*(x-0.13f)); }
float ganzezeile(float x,float h) { return (1.0f/((x+0.13f+h)*(x-0.13f+h))-1.0f/((x+0.13f)*(x-0.13f))); }
int main() { float h,d1,d2,d3,i,x=1.0f,f; f=-(1.0f/(((1.0f+0.13f)*(1.0f-0.13f))*((1.0f+0.13f)*(1.0f-0.13f)))) * 2.0f; printf("%-15s%-15s%-15s%-15s\n","h","d1","d2","d3"); for(i=0;i<=22;i++) { h=powf(10.0f,-i/2.0f); d1=(1.0f/h)*(1.0f/((x+0.13f+h)*(x-0.13f+h))-1.0f/((x+0.13f)*(x-0.13f))); d2=(1.0f/h)*ganzezeile(x,h); d3=(1.0f/h)*(funktion(x+h)-funktion(x)); printf("%-15g%-15g%-15g%-15g\n",h,d1,d2,d3); } system("Pause"); }
|
Ich schätze das es daher kommt das wenns auf einer Zeile steht mit höherer Genauigkeit gerechnet wird und somit die ganze Zahl genauer ist. Wenn ich eine function benutze wird in der function schon wieder auf float normalisiert, daher ungenau.
Seh ich das so richtig? |