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 |
-
:
- :
int approks_drobi(int l, int m, int n, float q[2][l+1]);
- l ,
- n (n<l),
- m (m=n m=n-1),
- q[2][l+1] : , ; ,
- q[2][l+1],
- :
result = approks_drobi(l, m, n, q);
- ( ) 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. :