.


:




:

































 

 

 

 


5.2

u(x),

, .

. . .

5.2.11   2.2

 

 

1. .

 

: u(x)=1-x2. , u(a)=u(0)= -1. , ua=1. , ub=-3.84.

. u(x).

g(x) = -u(x) + q(x)*u(x) = 2 + (2+x)^(1/2)*(1-x2) = 2+(2+x)^(1/2)-(x^2)* *(2+x)^(1/2).

, :

f(x) = (u(x)^2 + u(x)) = 2 3*x^2 + x^4.

, ,

s(x) = g(x) f(x) =(2+x)^(1/2) - (x^2)*(2+x)^(1/2) + 3*x^2 - x^4

, :

-u+xu = u^2+u + (2+x)^(1/2) - (x^2)*(2+x)^(1/2) + 3*x^2 - x^4 x ϵ (0, 2.2),

u(0) = 1,

u(2.3) = -3.84.

 

u(x)=1-x2.

2. .

 

u(x) 0.575, 1.15, 1.725.

u(0.55) = 1-0.552 = 0.6975,

u(1.1) = 1 - 1.12 = -0.21,

u(1.65) = 1 - 1.652 = -1.7225.

, , .

 

[a,b]

0.00001

b

-3.84

Ua: 1, Ub: -3.84

:

0 0.55 1.1 1.65 2.2

:

1 0 0 0 0

-1 2.78555 -1 0 0

0 -1 2.83511 -1 0

0 0 -1 2.88043 -1

0 0 0 0 1

:

0 -1 -1 -1 0

:

0 -1 -1 -1 0

:

1 2.78555 2.83511 2.88043 1

:

0 3.06682 1.07594 -3.02901 0

:

1 -1 -1 -1 -3.84

:

1 0.6975 -0.21 -1.7225 -3.84

...

 

3. . : u(0) = -1, u(2.2) = -11.

 

[a,b]

0.000001

-1

b

-11

Ua: -1, Ub: -11

:

0 0.244444 0.488889 0.733333 0.977778 1.22222 1.46667 1.71111 1.95556 2.2

:

1 0 0 0 0 0 0 0 0 0

-1 2.14927 -1 0 0 0 0 0 0 0

0 -1 2.15402 -1 0 0 0 0 0 0

0 0 -1 2.15854 -1 0 0 0 0 0

0 0 0 -1 2.16286 -1 0 0 0 0

0 0 0 0 -1 2.16701 -1 0 0 0

0 0 0 0 0 -1 2.17101 -1 0 0

0 0 0 0 0 0 -1 2.17486 -1 0

0 0 0 0 0 0 0 -1 2.17859 -1

0 0 0 0 0 0 0 0 0 1

:

0 -1 -1 -1 -1 -1 -1 -1 -1 0

:

0 -1 -1 -1 -1 -1 -1 -1 -1 0

:

1 2.14927 2.15402 2.15854 2.16286 2.16701 2.17101 2.17486 2.17859 1

:

0 0.0895189 0.0942677 0.0987886 0.103111 0.10726 0.111254 0.11511 -9.88116 0

:

-1 -1 -1 -1 -1 -1 -1 -1 -1 -11

:

-1 -0.958525 -1.00048 -1.13678 -1.39467 -1.82925 -2.55068 -3.79223 -6.10301 -11

...

 

4. ( ):

 

// ,

void diagElem(double mas[], double z[], double x[], int N)

{

double a = 0; //

double b = 2.2; //

double h = (b - a) / N; //

 

for (int i = 0; i <= N; i++)

{

mas[0] = 1;

if ((i!= 0) & (i!= N))

mas[i] = (2 + h*h*(sqrt(2 + x[i]))) - h*h*(2 * z[i] + 1);

mas[N] = 1;

}

}

 

 

// ( .)

void F(double mas[], double z[], double x[], int N, double grA, double grB)

{

double a = 0; //

double b = 2.2; //

double h = (b - a) / N; //

 

mas[0] = -z[0] + grA;

for (int i = 1; i < N; i++)

{

 

mas[i] = -(-z[i - 1] + 2 * z[i] - z[i + 1] + sqrt(2 + x[i])*z[i] * h*h - h*h*(z[i] * z[i] + z[i]));

}

mas[N] = -z[N] + grB;

}

//

void solveProgonka(double x[], double a[], double b[], double c[], double d[], int n)

{

double alpha[nmax], betta[nmax];

 

alpha[0] = -c[0] / b[0];

betta[0] = d[0] / b[0];

 

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

{

alpha[i] = -c[i] / (b[i] + a[i] * alpha[i - 1]);

betta[i] = (d[i] - a[i] * betta[i - 1]) / (b[i] + a[i] * alpha[i - 1]);

}

 

betta[n] = (d[n] - a[n] * betta[n - 1]) / b[n] + a[n] * alpha[n - 1];

x[n] = betta[n];

 

for (int i = n - 1; i >= 0; i--)

{

x[i] = alpha[i] * x[i + 1] + betta[i];

}

}

 

//

double norm1(double x[], int n)

{

double sum;

 

sum = 0.0;

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

sum = sum + abs(x[i]);

return sum;

}

 

//

 

while (norma>eps)

{

//

for (inti = 0; i<= N; i++)

temp[i] = z[i];

 

//

diagElem(mainDiag, z, setka, N);

 

//

F(funcF, z, setka, N, ua, ub);

 

solveProgonka(delta, podDiag, mainDiag, nadDiag, funcF, N);

norma = norm1(delta,N);

 

//

for (inti = 0; i<= N; i++)

{

z[i]=delta[i]+temp[i];

}

 

}

 

 



<== | ==>
- |
:


: 2016-10-22; !; : 343 |


:

:

, .
==> ...

1331 - | 1253 -


© 2015-2024 lektsii.org - -

: 0.018 .