.


:




:

































 

 

 

 


Void approks_analit_funkc_polinomom(int n, int m, float x1, float




2. n

3. :

float q[n+1]; //

//

//

4. x1 x2 ,

5. m , (m>n),

6. float function(float x), f=f(x), :

Float function(float x)

{

Float f;

f=sqrt(exp(x)+exp(-x));

Return f;

}

7. :

approks_analit_funkc_polinomom(n, m, x1, x2, q, &s0);

8. ( ) q[n+1] s0.

: :

n=3, m=11, x1=0.0, x2=1.0.

:

#include <stdio.h>

#include <math.h>

#include <conio.h>

void approks_analit_funkc_polinomom(int n, int m, float x1, float x2, float q[n+1], float *s0);

int main(int argc, char **argv)

{

int n; // ,

int m; // , m>n

float x1, x2; //

float s0; //

int i; //

Char c0;

printf("\nApproksimacija polinomom\n");

printf("\nSteprn approks. polinoma n = ");

scanf("%d", &n);

float q[n+1]; //

//

//

printf("\nLevaja granica approks. x1 = ");

scanf("%f", &x1);

printf("\nPravaja granica approks. x2 = ");

scanf("%f", &x2);

printf("\nUzlov approksimacii (m>n) m= ");

scanf("%d", &m);

approks_analit_funkc_polinomom(n, m, x1, x2, q, &s0);

printf("\nKoefficienty approks. polinoma po vozrast. stepeney:\n");

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

printf("%10.5f", q[i]);

printf("\n");

printf("\nSrednekvadr. pogreshn. approksimacii: %e\n", s0);

printf("\n");

c0=getch();

Return 0;

}

:

Float function(float x)

{

Float f;

f=sqrt(exp(x)+exp(-x));

Return f;

}

:

, :

f(x)=1,4142 0,0011 x + 0,361 x2 0,017 x3

 

 

, ,

:

1. :

void approks_Chebyshev(int n, float x1, float x2, float q[n+1], float cheb[n+1], float r[n+1][n+1], float *eps);

2. n ,

3. :

float q[n+1]; //

//

//

float cheb[n+1]; //

//

float r[n+1][n+1]; //

//

4. x1 x2 ,

5. float function(float x), f=f(x), :

Float function(float x)

//

// f=f(x)

//

{

Float f;

f=log(x);

Return f;

}

6. :

approks_Chebyshev(n, x1, x2, q, cheb, r, &eps);

7. ( ) q[n+1] cheb[n+1], r[n+1][n+1] eps .

: :

x1=1,0 x2=2,0.

:

#include <stdio.h>

#include <math.h>

#include <conio.h>

void approks_Chebyshev(int n, float x1, float x2, float q[n+1], float cheb[n+1], float r[n+1][n+1], float *eps);

int main(int argc, char **argv)

{

int n; //

float x1, x2; //

float eps; //

// (x1, x2)

int i, j; //

printf("\n stepen approks. polinoma n = ");

scanf("%d", &n);

float q[n+1]; //

//

//

float cheb[n+1]; //

//

float r[n+1][n+1]; //

//

printf("\n levaja granica approks. x1 = ");

scanf("%f", &x1);

printf("\n pravaja granica approks. x2 = ");

scanf("%f", &x2);

approks_Chebyshev(n, x1, x2, q, cheb, r, &eps);

printf("\nKoefficienty approks. polinoma:\n");

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

printf("%12.6f", q[i]);

printf("\n");

printf("\nKoefficienty chebyshev. approksim.:\n");

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

printf("%12.6f", cheb[i]);

printf("\n");

printf("\nKoefficienty mnogochlenov chebysheva:\n");

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

{

for (j=0; j<n+1; j++)

printf("%10.2f", r[i][j]);

printf("\n");

}

printf("\n");

printf("\nAbsoljutnaja pogreshn. approksimacii: %e\n", eps);

Return 0;

}

:

Float function(float x)

//

// f=f(x)

//

{

Float f;

f=log(x);

Return f;

}

:

, :

f(x)=-1,481 + 2,087 x - 0,712 x2 + 0,106 x3

:

T(x)=0,376 + 0,343 T1(x) 0,029 T2(x) + 0,0033 T3(x)

-

:

1. :

void spline(int n, float x[n], float y[n], float r[n][3], float s[n-1][4]);

2. n ,

3. :

float x[n], y[n]; //

//

float r[n][3], s[n-1][4]; //

//

//

//

4. x [n], y[n],

5. -:

Spline(n, x, y, r, s);

6. ( ) s[n-1][4].

: - , :

x 0.0 0.2 0.4 0.6 0.8 1.0
y 2.5 0.75 -1.15 -2.75 -3.85 -4.15

n=6.

:

#include <stdio.h>

#include <math.h>

#include <conio.h>

void spline(int n, float x[n], float y[n], float r[n][3], float s[n-1][4]);

int main(int argc, char **argv)

{

int n; //

int i, j; //

Char c0;

printf("\nUzlov approksimacii n= ");

scanf("%d", &n);

float x[n], y[n]; //

float r[n][3], s[n-1][4]; //

//

//

printf("\nVvedite vector argumenta (%d znacheniy):\n", n);

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

scanf("%f", &x[i]);

printf("\n");

printf("\nVvedite vector funkcii (%d znacheniy):\n", n);

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

scanf("%f", &y[i]);

printf("\n");

printf("\nApproksimacija kubicheskimi splajnami\n");

Spline(n, x, y, r, s);

printf("\nApproksimir. kubich. splajny\n");

printf("\nUchastok\t\tkoefficienty approks. splajna\n");

for (i=0; i<n-1; i++)

{

printf("\n %d\t\t", i+1);

for (j=0; j<4; j++)

printf("%10.5f", s[i][j]);

}

printf("\n");

c0=getch();

Return 0;

}

:

, :

  2,5 - 7,586 x 7,69 5x2 + 9,375 x3
  2,484 - 7,352 x 8,867 x2 + 11,328 x3
  3,109 12,039 x + 2,852 x2 + 1,562 x3
  1,844 5,711 x 7,695 x2 + 7,422 x3
  2,444 - 7,961 x 4,883 x2 + 6,25 x3

-

:

  1. :

int approks_drobi(int l, int m, int n, float q[2][l+1]);

  1. l ,
  2. n (n<l),
  3. m (m=n m=n-1),
  4. q[2][l+1] : , ; ,
  5. q[2][l+1],
  6. :

result = approks_drobi(l, m, n, q);

  1. ( ) q[2][l+1].

: :

f(x) = (1 x) / (1 5x + 6x2)

:

#include <stdio.h>

#include <math.h>

#include <conio.h>

int approks_drobi(int l, int m, int n, float q[2][l+1]);

int main(int argc, char **argv)

{

int l; //

int n; // (n<l)

int m; //

// (m=n m=n-1)

int i, rezult; //

Char c;

printf("\n l=");

scanf("%d", &l);

printf("\n m=");

scanf("%d", &m);

printf("\n n=");

scanf("%d", &n);

float q[2][l+1]; //

//

//

//

printf("\n Koeff. chislit. ishodn. drobi:\n");

for (i=0; i<=l; i++)

scanf("%f", &q[0][i]);

printf("\n");

printf("\n Koeff. znamenat. ishodn. drobi:\n");

for (i=0; i<=l; i++)

scanf("%f", &q[1][i]);

printf("\n");

rezult=approks_drobi(l, m, n, q);

if(rezult==0) //

{

printf("\n Koeff. chislit. approks. drobi:\n");

for (i=0; i<=m; i++)

printf("%12.6f", q[0][i]);

printf("\n");

printf("\n Koeff. znamenat. approks. drobi:\n");

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

printf("%12.6f", q[1][i]);

printf("\n");

}

else printf("\n Reshenija net!\n");

c=getch();

Return 0;

}

:

, :

fappr(x) = 1 / (1 4x)

 


:

1. :

int gessenberger(int n, float a[n][n], float p[2][n]);

2. n ,

3. :

float a[n][n]; //

float p[2][n]; // :

// ,

// ,

4. a[n][n],

5. :

rezult=gessenberger(n, a, p);

6. ( )

: n=4:

-1.44 1.0 0.62 0.02

a[4][4]= -15.5 -2.1 12.0 0.59

0.0 0.0 0.0 1.0

-4.6 4.84 -531.0 -2.92

:

#include <stdio.h>

#include <math.h>

#include <conio.h>

int gessenberger(int n, float a[n][n], float p[2][n]);

int main(int argc, char **argv)

{

int n; //

int i,j, rezult; //

Char c;

printf("\nRazmer matricy n=");

scanf("%d", &n);

float a[n][n]; //

float p[2][n]; // :

// - ,

// -

//

printf("\n Vvesti matricu\n");

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

{

printf("\n stroka %d (%d chisel):\n", i+1, n);

for (j=0; j<n; j++)

scanf("%f", &a[i][j]);

}

printf("\n\n");

rezult=gessenberger(n, a, p);

if(rezult==0) //

{

printf("\n Sobstv. znachenija");

printf("\n Dejstvit. chasti Mnimye chasti \n");

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

printf(" %12.6f %12.6f\n", p[0][i], p[1][i]);

printf("\n");

}

c=getch();

Return 0;

}

:

,

p1,2 = -1.77 j 3.92315 p3,4 = -1.46 j 22.93697


-

:

1. :

void invers(int n, float a[n][n], float invert[n][n], float q[n+1]);

2. n ,

3. :

float a[n][n]; //

float invert[n][n]; //

float q[n+1]; //

//

4. a[n][n],

5. :

Invers(n, a, invert, q);

6. ( ) ,

: (n=3):

0.0 1.0 0.0

a[3][3]= 0.0 0.0 1.0

-2.0 -3.0 -3.0

:

#include <stdio.h>

#include <math.h>

#include <conio.h>

void invers(int n, float a[n][n], float invert[n][n], float q[n+1]);

int main(int argc, char **argv)

{

int n; //

int i,j; //

Char c;

printf("\n n=");

scanf("%d", &n);

float a[n][n], invert[n][n], q[n+1];

// a[n][n] -

// invert[n][n] - ;

// q[n+1] -

// ,

// (n- )
//

//

printf("\n Vvesti matricu\n");

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

{

printf("\n stroka %d (%d chisel):\n", i+1, n);

for (j=0; j<n; j++)

scanf("%f", &a[i][j]);

}

printf("\n\n");

Invers(n, a, invert, q);

printf("\n Harakt. polinom:\n");

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

printf("%10.3f", q[i]);

printf("\n\n");

printf("\n Obratn. matriza:\n");

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

{

for (j=0; j<n; j++)

printf("%10.3f", invert[i][j]);

printf("\n");

}

printf("\n\n");

c=getch();

Return 0;

}

:

, :

W(p) = p4 + 3p3 + 3p2 +2

 

( )

:

1. :

int danilevski(int n, float a[n][n], float q[n+1]);

2. n ,

3. :

float a[n][n]; //

float q[n+1]; //

//

4. a[n][n],

5. :

rezult=danilevski(n, a, q);

6. ( )

: (n=4):

-4.0 -3.0 1.0 1.0

a[4][4]= 2.0 0.0 4.0 -1.0

1.0 1.0 2.0 -2.0

1.0 1.0 -1.0 -1.0

:

#include <stdio.h>

#include <math.h>

#include <conio.h>

int danilevski(int n, float a[n][n], float q[n+1]);

int main(int argc, char **argv)

{

int n; //

int i,j, rezult; //

Char c;

printf("\n n=");

scanf("%d", &n);

float a[n][n]; // ,

//

float q[n+1]; //

//

//

//

printf("\n Vvesti matricu\n");

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

{

printf("\n stroka %d (%d chisel):\n", i+1, n);

for (j=0; j<n; j++)

scanf("%f", &a[i][j]);

}

printf("\n\n");

rezult=danilevski(n, a, q);

if (rezult==0) //

{

printf ("\nMatrica Frobeniusa:\n");

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

{

for (j=0; j<n; j++)

printf("%10.5f", a[i][j]);

printf("\n");

}

printf("\n\n");

printf("\n Koeff. harakterist. polinoma:\n");

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

printf("%12.6f", q[i]);

printf("\n\n");

}

c=getch();

Return 0;

}

:

, :

W(p) = p4 + 3p3 - 7p2 24p -15

 


(LU -)

:

1. :

int LU(int n, float a[n][n]);

2. n ,

3. :

float a[n][n]; // , -

// LU-

7. a[n][n],

5. :

rezult=LU(n, a);

6. ( ) LU -.

: LU - (n=4):

-1.44 1.0 0.62 0.02

a[4][4]= -15.5 -2.1 12.0 0.59

0.0 0.0 0.0 1.0

-4.6 4.84 -531.0 -2.92

:

#include <stdio.h>

#include <math.h>

#include <conio.h>

int LU(int n, float a[n][n]);

int main(int argc, char **argv)

{

int n; //

int i,j, rezult; //

Char c;

printf("\n n=");

scanf("%d", &n);

float a[n][n]; // ,

// LU-

//

printf("\n Vvesti matricu\n");

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

{

printf("\n stroka %d (%d chisel):\n", i+1, n);

for (j=0; j<n; j++)

scanf("%f", &a[i][j]);

}

printf("\n\n");

rezult=LU(n, a);

if(rezult==0) //

{

printf("\n LU-matrica:\n");

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

{

for(j=0; j<n; j++)

printf("%12.6f", a[i][j]);

printf("\n");

}

}

else printf("\n Reshenija net!\n");

printf("\n\n");

c=getch();

Return 0;

}

:

,

1.0 0.0 0.0 0.0

L= 10.8333 1.0 0.0 0.0

3.1944 -0.1272 1.0 0.0

0.0 0.0 0.0 1.0

L - .

-1.44 1.0 0.62 0.02

U= 0.0 -12.9333 5.2833 0.3733

0.0 0.0 -532.3083 -2.9364

0.0 0.0 0.0 1.0

U - .

 

 


:

1. :

void minim_modificir_Powell(int n, float x[n], float eps, int *iter, float *minimum);

2. n ,

3. float x[n]- , ,

4. x [n],

5. eps,

6. float function(float x[]), :

float function(float x[])

{

Float f;

f=100.0*(x[1]-x[0]*x[0])*(x[1]-x[0]*x[0]) + (1.0-x[0])*(1.0-x[0]);

Return f;

}

7. :

minim_modificir_Powell(n, x, eps, &iter, &minimum);

8. ( ) x[n], iter, minimum.

:

f(x1, x2) = 100(x2 x12)2 + (1 x1)2

x1=5.0, x2=10.0 eps=1.0e-10.

: fmin = 0.0 x1=1.0, x2=1.0.

:

#include <stdio.h>

#include <math.h>

#include <conio.h>

void minim_modificir_Powell(int n, float x[n], float eps, int *iter, float *minimum);

int main(int argc, char **argv)

{

int n; //

int i; //

Char c0;

printf("\nKol-vo peremenn. n= ");

scanf("%d", &n);

float x[n]; // ,

// -

//

float eps; //

int iter; //

float minimum; //

printf("\nVvedite vector nach. pribl.(%d znacheniy):\n", n);

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

scanf("%f", &x[i]);

printf("\nVvedite porog minimiz. funkcii:");

scanf("%e", &eps);

printf("\n");

printf("\nMinimiz. funkcii modific. metodom Pauella\n");

minim_modificir_Powell(n, x, eps, &iter, &minimum);

printf("\nMinimizir. znach. peremenn.:\n");

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

printf("%10.5f", x[i]);

printf("\n");

printf("\nMinim. znach. funkcii: %e\n", minimum);

printf("\nKol-vo iterac.: %d\n", iter);

c0=getch();

Return 0;

}

:

float function(float x[])

{

Float f;

f=100.0*(x[1]-x[0]*x[0])*(x[1]-x[0]*x[0]) + (1.0-x[0])*(1.0-x[0]);

Return f;

}

:

, fmin = 1,5078e-11
x1 = 1,0 x2 = 1,0 13 .

 


--

:

1. :

void minim_Davidon_Fletcher_Powell(int n, float x[n], float eps, int *iter, float *minimum);

2. n ,

3. float x[n]- , ,

4. x [n],

5. eps,

6. float function(float x[]), :

float function(float x[])

{

Float f;

f=100.0*(x[1]-x[0]*x[0])*(x[1]-x[0]*x[0]) + (1.0-x[0])*(1.0-x[0]);

Return f;

}

7. :

minim_Davidon_Fletcher_Powell(n, x, eps, &iter, &minimum);

8. ( ) x[n], iter, minimum.

:

f(x1, x2) = 100(x2 x12)2 + (1 x1)2

x1=5.0, x2=10.0 eps=1.0e-10.

: fmin = 0.0 x1=1.0, x2=1.0.

:

#include <stdio.h>

#include <math.h>

#include <conio.h>

void minim_Davidon_Fletcher_Powell(int n, float x[n], float eps, int *iter, float *minimum);

int main(int argc, char **argv)

{

int n; //

int i; //

Char c0;

printf("\nKol-vo peremenn. n= ");

scanf("%d", &n);

float x[n]; // ,

// -

//

float eps; //

int iter; //

float minimum; //

printf("\nVvedite vector nach. pribl.(%d znacheniy):\n", n);

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

scanf("%f", &x[i]);

printf("\nVvedite porog minimiz. funkcii:");

scanf("%e", &eps);

printf("\n");

printf("\nMinimiz. funkcii metodom Davidona-Fletchera-Pauella\n");

minim_Davidon_Fletcher_Powell(n, x, eps, &iter, &minimum);

printf("\nMinimizir. znach. peremenn.:\n");

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

printf("%10.5f", x[i]);

printf("\n");

printf("\nMinim. znach. funkcii: %e\n", minimum);

printf("\nKol-vo iterac.: %d\n", iter);

c0=getch();

Return 0;

}

:

float function(float x[])

{

Float f;

f=100.0*(x[1]-x[0]*x[0])*(x[1]-x[0]*x[0]) + (1.0-x[0])*(1.0-x[0]);

Return f;

}

:

, fmin = 2,145265e-7
x1 = 0,99954 x2 = 0,99907 32 .


-

:

1. :

void Runge_Kutt_4(int n, float h, float t0, float t1, int s1, float x[n], float out[][n+1], int *k);

void graphics_diffur_koshi(int n, int k, int amplituda, char path[], float out[][n+1]);

2. n ,

3. x[n] ( ),

4. out[k][n+1] :

k=(t1- t0)/(h*s1) + 1,

,

( ),

5. h ,

6. t0, t1 ,

7. s1 ,

8. void pr_chasti(float x[], float p[]) p[i]=p(x[j]) ( p[n] x[n] ), ,

void pr_chasti(float x[], float p[])

{

p[0]=x[1];

p[1]=x[2];

p[2]=-2.0*x[0]-5.0*x[1]-2.5*x[2];

}

9. x[n] ,

10. :

Runge_Kutt_4(n, h, t0, t1, s1, x, out, &k);

out, .

,

- amplituda - ( ),

- path[30] - , , d:/user/out.txt,

11. :





:


: 2017-03-11; !; : 473 |


:

:

: , .
==> ...

1718 - | 1680 -


© 2015-2024 lektsii.org - -

: 0.586 .