Infa Rokicki.txt

(3 KB) Pobierz

//Zadanie I od Rokickiego

//program oczywiście nie policzy nic dopóki nie stworzycie pliku interp.txt 
#include <stdio.h>
#include <math.h>

double intlagr(double x[10], double y[10], int n, double t);

void main()
{

	double t,w, x[10], y[10];
	int n, i;
	FILE *plik;
	plik = fopen ("interp.txt","r");
	
	fscanf(plik,"%d\n",&n);

	for(i=0;i<=n;i++)
	{
		
		fscanf(plik,"%lf %lf\n",&x[i],&y[i]);
	}

	printf("Podaj argument dla ktorego chcesz znalezc wartosc wielomianu interp. :");
	scanf("%lf",&t);
	w=intlagr(x,y,n,t);
	printf("w(%lf) = %lf\n",t,w);
	
	fclose(plik);
}

double intlagr(double x[50], double y[50], int n, double t)
{
	double l, yy;
	int i, k;
	
	yy=0.0;

	for(i=0;i<=n;i++)
	{

	l=1.0;
		for(k=0;k<=n;k++)
		{
		if(i!=k) l=l*((t-x[k])/(x[i]-x[k]));
		
		}
		yy=yy+l*y[i];
	}

	return yy;

}






//Zadanie 2 od Rokickiego

 (nie mozna przeprowadzić wielomianu przez te punkty poniewaz każdy wielomian jest funkcjąa z definicji funkcji wynika ze dla jednego argumentu nie moze być więcej niż jedna wartość
 czyli nie może być (2,3) i (2,5)
)







//Zadanie 3 od Rokickiego

#include <stdio.h>
#include <math.h>

double alfa;

double f(double x)
{
	double p;

	p=pow((pow(2.0,alfa)+cos(alfa*x)),1.0/3.0);
	
	return p;
}

double simpson(double a, double b, double (*f)(double x), int n);

void main()
{
	double cn, a, b, alfak, alfa0, dalfa;
	int n;

	printf("Podaj a, b, alfa0, alfak, dalfa,n:");
	scanf("%lf %lf %lf %lf %lf %d",&a,&b,&alfa0,&alfak,&dalfa,&n);
	
	alfa = alfa0;

	while(alfa<=alfak)
	{
		cn = simpson(a,b,f,n);
		printf("cn(%lf) = %lf\n",alfa,cn);
		alfa = alfa + dalfa;
	}

 

}

double simpson(double a, double b, double (*f)(double x), int n)
{

	double value;
	
	double h, x, sum;
	int   i;
	int   nc;   // oznaczenie dla liczby wezlow wewnetrznych
	
	nc = abs( n / 2 ) * 2;
	h = (b - a) / (float) nc;  // krok calkowania
	
	sum = 0.0;
	for( i=1; i<nc-1; i+=2 ) {
		x = a + (float) i * h;
		sum += 4.0*f(x) + 2.0*f(x+h);
	}	
	
	value = ( f(a) + sum + 4.0*f(b-h) + f(b) ) * h / 3.0;
	
	return value;

}





//Zadanie 4 od Rokickiego

#include <stdio.h>
#include <math.h>

double alfa;

double f(double x)
{
	double p;

	p=exp( -sin(x) * sin(x) - (alfa *x) );
	
	return p;
}

double simpson(double a, double b, double (*f)(double x), int n);

void main()
{
	double cn, a, b, alfak, alfa0, dalfa;
	int n;

	printf("Podaj a, b, alfa0, alfak, dalfa,n:");
	scanf("%lf %lf %lf %lf %lf %d",&a,&b,&alfa0,&alfak,&dalfa,&n);
	
	alfa = alfa0;

	while(alfa<=alfak)
	{
		cn = simpson(a,b,f,n);
		printf("cn(%lf) = %lf\n",alfa,cn);
		alfa = alfa + dalfa;
	}

 

}

double simpson(double a, double b, double (*f)(double x), int n)
{

	double value;
	
	double h, x, sum;
	int   i;
	int   nc;   // oznaczenie dla liczby wezlow wewnetrznych
	
	nc = abs( n / 2 ) * 2;
	h = (b - a) / (float) nc;  // krok calkowania
	
	sum = 0.0;
	for( i=1; i<nc-1; i+=2 ) {
		x = a + (float) i * h;
		sum += 4.0*f(x) + 2.0*f(x+h);
	}	
	
	value = ( f(a) + sum + 4.0*f(b-h) + f(b) ) * h / 3.0;
	
	return value;

}





//Zadanie 5 od Rokickiego 
//program oczywiście nie policzy nic dopóki nie stworzycie pliku aa.txt zawierającego 50 węzłów :>

#include <stdio.h>
#include <math.h>

double trapez(double x[50], double y[50], int n);

void main()
{
	double cn, x[50], y[50];
	int n,i;
	FILE *plik;
	plik = fopen ("wezly","r");

	fscanf(plik,"%d",&n);

	for(i=1;i<=n;i++)
	{
		fscanf(plik,"%lf %lf\n",&x[i],&y[i]);
	}

	cn = trapez(x,y,n);
	printf("cn=%lf\n",cn);

	fclose(plik);
}

double trapez(double x[50], double y[50], int n)
{
	double sum0, sum;
	int i;
	
	sum0 = 0.0;
	
	for (i=1;i<n;i++)
	{
		sum = ( y[i] + y[i+1] )*( x[i+1] - x[i] ) / 2.0;
		sum = sum0 +sum;
	}

	return sum;

}
Zgłoś jeśli naruszono regulamin