Masodik nekifutasra Epsilon, c nyelv?
valaki segítene megírni a gépi epszilon programot?
Irjon programot ami megnezi es kiirja a gepi epszilont a float a double tipusra. Vegul kiirja oket __FLT_EPSILON__ a __DBL_EPSILON__) definialt float.h ban.
Definício:
Gepi epszilon a legkisebb szam,ami a hozzaadas utan egyeshez valmi elterot ad az egyestol.
Mas definicio:
Gepi epsilon tavolsag az 1 es szám kozott es annak kozvetlen jobb szomszedjatol.
Vysvetlenie: Realis szamok ugy vannak definialva h azok nem vegtelenek.Egyes szamok kozott helyek vannak. Ha elkezdunk szamolni
1 + 0,1 = 1,1
1 + 0,01 = 1,01
1 + 0,001 = 1,001
egy meghatarozott ido utan 1 + 0,0...001 = 1 /ez a szam 0,0...01 az epsilon. Mas mas gepen mas szam jon ki.
Tip 1:
Ne 10 es hanem 2vel osztjuk/szamoljunk,mivel 2s szamrendszerben dolgozunk.
Tip 2:
hasonlitsatok ossze a konstansokkal ami FLT_EPSILON a DBL_EPSILON, (alebo __FLT_EPSILON__ a __DBL_EPSILON__) definialva van limits.h float.h ban
valaki tudna segiteni elindulni,hogy mit kenne ...csinalni?/a szoveg furi mivel én forditottam at idegen nyelvrol /
talaltam megoldast elozo evekbol...de nekem el is kell magyaraznom...es persze megcsinalni,megerteni
Lehet ebbol jobban fogjatok tudni mit is akarnak:
#include <stdio.h>
#include <float.h>
int main(void)
{
double epsilon=1;
while ((1.0+epsilon/2.0)!=1.0)
{
epsilon/=2.0;
}
printf("szamitogepes epsilon a kiszamolas szerint je: %e\n",epsilon);
printf("szamitogepes epsilon definialva ennyi: %e\n",FLT_EPSILON);
getchar();
return 0;
}
egy masik verzio
#include <float.h>
#include <stdio.h>
int main()
{
float f=1.0;
double d=1.0;
while((f+1)!=1)
f/=2;
printf(" Float epsilon : %E\n",f);
printf(" Z float.h : %E\n\n",FLT_EPSILON);
/**************************************************/
while((d+1)!=1)
d/=2;
printf("Double epsilon : %E\n",d);
printf(" Z float.h : %E\n",DBL_EPSILON);
getchar();
return 0;
}
a harmadik viszont nem tuti h pontossan ez a feladat volt megoldva
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <float.h>
using namespace std;
int main(int argc, char *argv[])
{
float strEPS=1.0f;
printf( "sucasne epsilon, 1 + sucasne epsilon \n" );
while(1)
{
printf( "%g\t%.20f\n", strEPS, (1.0f + strEPS) );
strEPS /= 2.0f; // ak dalsie epsilon postupi o 1, potom zastane, pretoze sucasne epsilon je strojove epsilon
if ((float)(1.0+(strEPS/2.0))==1.0 )
break;
}
Az epszilon a hibatűrési tartomány, a pontos értéket adó függvény epszilon sugarú környezete. [f(x) - f'(x)| < Epszilon
Ahol f(x) a pontos értéket adó függvény, f'(x) pedig a közelített értéket adó függvény.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!