Математикадан практикалық жұмыс
Автор: Diannnna • Октябрь 6, 2022 • Практическая работа • 617 Слов (3 Страниц) • 236 Просмотры
Талгатбекова Диана, 3-апта
Практикалық жұмыс, мөж, омөж
[pic 1]
[pic 2]
Бірөлшемді Жылуөткізгіштік теңдеуі: –ге , коэффициент a = 2-ге тең.[pic 3][pic 4][pic 5]
[pic 6][pic 7]
Бастапқы шарттар:[pic 8]
Шекаралық шарт: [pic 9]
Есепті шешудің аналитикалық шешімін Штурм-Луивиль теңдеуін интегралдау арқылы шығарсақ:
Есептің аналитикалық шешімі
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
int main()
{
ofstream fout("analitik2.xls");
int n=50;
double pi=3.141592,dx=0.12,u[n],e=2.71828,dt = (dx*dx)/2;
for (int i=0; i<=n; i++){
u[i]=31*sqrt(3)*pow(e,-2*pi*18*dt*188./6)*sqrt(1./3)*cos(pi*i*dx*18./6)+sqrt(3)*pow(e,-2*pi*24*dt*188./6)*sqrt(1./3)*cos(pi*i*dx*24./6);
cout<< " "<<"u["<<i<<"] = " <<u[i]<<endl;
}
return 0;
[pic 10]
Бірөлшемді Жылуөткізгіштік теңдеуі: –ге , коэффициент a = 2-ге тең.[pic 11][pic 12][pic 13]
[pic 14][pic 15]
Бастапқы шарттар:[pic 16]
Шекаралық шарт: [pic 17]
Есепті шешудің сандық әдісін қуалау әдісі арқылы шығарсақ:
Есептің сандық шешімі
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int main() {
int N =50,alf=2;
double dx = 0.12, dt = (dx*dx)/2,maximum=0,k=0;
double a = -alf/ (dx * dx), c = a, b = 1/dt+2*alf/ (dx * dx), pi=3.141592,eps=0.000005;
double a1[N] , b1[N], u[N], un[N],d[N],F[N];
ofstream fout("sandyk2.xls");
for(int i = 0; i <= N; i++) {
un[i] = 31*cos(3*pi*dx*i)+cos(4*pi*dx*i);
}
do
{
maximum=0;
u[1]=u[0];
u[N]=u[N-1];
un[1]=un[0];
un[N]=un[N-1];
a1[1] = 1;
b1[1] = 0;
for(int i = 2; i <= N-1; i++) {
d[i]=un[i]/dt;
a1[i] = -a/(b+c*a1[i-1]);
b1[i] = (d[i]-c*b1[i-1])/(b+c*a1[i-1]);
}
for(int i = N-1; i > 0; i--) {
u[i] = a1[i+1] * u[i+1] + b1[i+1];}//keri kualau
for(int i=1;i<N;i++){
F[i]=abs(un[i]-u[i]);
}
for (int i=1;i<N;i++){
if(maximum<F[i]){
maximum = F[i];
}
}
k=k+1;
for(int i =0; i <= N; i++) {
un[i]=u[i];
}
cout<<maximum<<endl;
}
while (maximum>eps);
for(int i = 0; i <= N; i++) {
fout<<u[i]<<endl;
}
cout<<k<<endl;
cout<<endl;
return 0;
...