Семестровая работа по «Вычислительная физика»

Автор работы: Пользователь скрыл имя, 31 Октября 2013 в 18:56, контрольная работа

Краткое описание

Задание №1.
Поиск нулей функции на заданном промежутке.
Дано:
A=1; B=4

Прикрепленные файлы: 1 файл

вычка.docx

— 46.07 Кб (Скачать документ)

Министерство образования  и науки Российской Федерации

 Федеральное государственное  образовательное  бюджетное учреждение

высшего профессионального  образования

Волгоградский государственный  технический университет

Кафедра «Вычислительная  техника»

 

 

 

 

 

 

Семестровая работа

 

по дисциплине «Вычислительная физика»

 

Вариант №23

 

 

 

 

 

 

 

 

 

 

                                                                         Выполнил:  

студент группы Ф-169

Трофимова О.И.

                                                                         Проверил:

Еськин Д.Л.

 

 

 

 

 

 

 

 

 

 

 

Волгоград 2012 г.

 

Задание №1.

 Поиск нулей функции  на заданном промежутке.

Дано:

A=1; B=4

Решение

  1. x =1.659999 погрешность F1= - 0.010106
  2. x =3.709997 погрешность F2= 0.005725

График функции :

 

 

 

 

 

 

 

 

 

 

 

 

Листинг программы

#include <stdio.h>

#include <math.h>

#include <iostream>

float F(float x)

{

           return (log(sqrt(x)*sin(x-1)+0.2));

}

int main()

{

           FILE*D;

           D=fopen("1.txt","w");

           float A,B,x,dx,a[1000],k,F1,F2;

           int j;

          A=1;

          B=4;

          dx=0.01;

           x=A;

           j=1;

    while (x<B)

    {

           if (F(x)*F(x+dx)<0)

      {

            a[j]=x;

            j++;

      }

    fprintf(D," %f \n",x);

    x=x+dx;

    }

        j=j-1;

         k=j;

         printf("j=%d \n",j);

         j=1;

    while (j<=k)

    {

            printf("koren=%f \n",a[j]);

            j++;

    }

         x=a[1];

         F1=F(x);

         x=a[2];

         F2=F(x);

         printf("F1=%f F2=%f",F1,F2);

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание №2. Вычислить значение определенного интеграла

Дано:

A=1; B=4

Решение

Значение интеграла, высчитанного аналитическим способом:

 

Метод трапеций:

I=0.291124

I=0.321504

I=0.330275

I=0.345820

I=0.345882

I=0.338432

I=0.339560

I=0.340394

I=0.341020

I=0.345960

I=0.341946

I=0.345936

I=0.342612

I=0.345943

I=0.343076

I=0.345948

I=0.343457

I=0.343545

I=0.343706

Метод левых треугольников:

I=0.273140

I=0.310248

I=0.322318

I=0.339219

I=0.340602

I=0.334238

I=0.335938

I=0.337208

I=0.338177

I=0.343319

I=0.339606

I=0.343736

I=0.340624

I=0.344058

I=0.341348

I=0.344298

I=0.341928

I=0.342101

I=0.342337

Метод правых прямоугольников:

 I=0.309108

I=0.332760

I=0.338232

I=0.352421

I=0.351163

I=0.342627

I=0.343181

I=0.343579

I=0.343863

I=0.348600

I=0.344285

I=0.348136

I=0.344600

I=0.347829

I=0.344804

I=0.347598

I=0.344985

I=0.344989

I=0.345076

 

 

 

 

 

 

 

 

Листинг программы

#include <stdio.h>

#include <math.h>

#include <cmath>

      float p(float x)

{

     return (log(sqrt(x)*sin(x-1)+0.2));

}

 

      float F1(float a,float b,float dx)

{            

                 float I=0.0,x;

       for (x=a; x<b; x=x+dx)

       I=I+dx/2*( p(x)+p(x+dx));

       return(I);

}

      float F2(float a,float b,float dx)

{             

                float I1=0.0,x;

      for (x=a; x<b; x=x+dx)

       I1=I1+dx*p(x);

      return(I1);

}

      float F3(float a,float b,float dx);

{

                float I2=0.0,x;

      for (x=a; x<b; x=x+dx)

       I2=I2+dx*p(x+dx);

                 return(I2);

 }

int main()

{

float x,h,a,b,I,I1,I2,dx;

FILE*z;

z=fopen ("1.txt","w");

FILE*k;

k=fopen ("I.txt","w");

FILE*u;

u=fopen ("I1.txt","w");

FILE*t;

t=fopen ("I2.txt","w");

a=1;

b=4;

{

y=50;

dx=(b-a)/y;

while (y<1000)

{

dx=(b-a)/y;

           I=F1(a,b,dx);

           I1=F2(a,b,dx);

  I2=F3(a,b,dx);

  y=y+50;

fprintf (z,"%f\n",y);

fprintf (k,"I=%f \n",I);

fprintf (u,"I1=%f \n",I1);

fprintf (t,"I2=%f \n",I2);

}

}

}

Задание №3.Решить дифференциальное уравнение.

Дано:;

X(0)=100;

X’(0)=30.

Решение:

К такому дифференциальному  уравнению приводит задача вида:

Графики:

  1. Зависимость координаты от времени

  1. Зависимость скорости от времени

 

 

Листинг программы

           #include <stdio.h>

           #include <math.h>

           float F (float x,float v)

           if (v==0)

           return (-1*(0+10));

           return (-1*(0.2*pow(v,3)/fabs(v)+10));

}

           int main()

{

            float x0,v0,v,dt,m,h,tmax,xnow,xpast,tnow,tpast,vnow,vpast;

             int i,k;

             FILE*n;

             FILE*o;

             FILE*t;

             n=fopen ("1.txt","w");

             o=fopen ("2.txt","w");

             t=fopen ("3.txt","w");

             x0=100;

             m=1;

             v0=30;

             k=50;

             tmax=5;

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

{

              dt=tmax/k;

               k=k*2;

               tpast=0;

               tnow=0;

             xpast=x0;

             vpast=v0;

}

           while (tnow<tmax)

{  

            xnow= xpast+vpast*dt;

            vnow=vpast+F(xpast,vpast)*dt;

            tnow+=dt;

            xpast=xnow;

            vpast=vnow;

 

            fprintf (n,"%f  \n  ",tnow);

            fprintf (o,"%f  \n  ",xnow);

            fprintf (t,"%f  \n  ",vnow);

}

}


Информация о работе Семестровая работа по «Вычислительная физика»