Infa Rokicki, wip, Informatyka II
[ Pobierz całość w formacie PDF ]
//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 wewnetrznychnc = abs( n / 2 ) * 2;h = (b - a) / (float) nc; // krok calkowaniasum = 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 wewnetrznychnc = abs( n / 2 ) * 2;h = (b - a) / (float) nc; // krok calkowaniasum = 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;}
[ Pobierz całość w formacie PDF ]