Использование кубического сплайна при решении электротехнических задач

Автор работы: Пользователь скрыл имя, 03 Июля 2013 в 16:14, курсовая работа

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

Программа предназначена для построения кубического сплайна зависимости тока ротора от коэффициента нагрузки. В программе исходные данные β и I. Исходные данные считываются из текстового файла aium225m4.txt, а записываются в файл rezult.txt. В результате исследований необходимо получить значение тока ротора при определенных коэффициентах нагрузки и влиянии тока холостого хода.
Данная программа разработана на зыке С++. С помощью математического пакета – Scilab строится график по исходным данням, а также строится график по полученным данным.

Содержание

Аннотация…………………………………………………………………..................................……….4
Введение…………………………………………………………………………………………………..5
1. Постановка задачи 6
2. Описание математической модели решения задачи 7
3. Постановка задачи………………………………………………………………..............….…...7
2. Описание математической модели решения задачи…………….......................................….…….8
3. Блок-схема …………………………………………………………...............……….………….……11
4. Описание алгоритма ……………………………………………………….............……………..…13
5. Характеристика данных и их условные обозначения ………............…….……....14
6. Текст программы…………………………………………………………...........……………….…..16
7. Контрольный пример……………………………………………………………...........………..…..21
7.1. Контрольный расчет…………………………………………………………………...........…..22
7.2. Результаты расчета с помощью Scilab......……………………................…….…...23
7.3. График экспериментальной зависимости и подобранной функции, выполненный в Scilab23
8. Анализ результатов …………………………………………………………………...........….……23
Заключение…………………………………………………………………………………….........…..24
Списки используемой литературы……………………………………...........……………….….25

Вложенные файлы: 1 файл

Министерство науки и образования Украины.docx

— 412.53 Кб (Скачать файл)

 

Таблица 5.1. Характеристика данных программы и их условные обозначения.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6. Текст программы.

#include <iostream.h>

#include <fstream.h>

#include <stdio.h>

#include <math.h>

 

float koeffizient_splaina(float*x,float*y,int N,float*b,float*c,float*d) // функция нахождения коэффициентов сплайна

{

int k;

float *h;

float *L,*D,*l;

h=new float[N+1]; // расширение памяти массиву h

l=new float[N+1]; // расширение памяти массиву l

D=new float[N+1]; // расширение памяти массиву D

L=new float[N+1]; // расширение памяти массиву L

 

for(k=1;k<=N;k++)

h[k]=x[k]-x[k-1];

for(k=1;k<=N;k++)

{

l[k]=(y[k]-y[k-1])/h[k]; // расчет значений элементов массивов h иl

}

D[1]=-h[2]/(2*(h[1]+h[2]));

L[1]=1,5*(l[2]-l[1])/(h[1]+h[2]);

for(k=3;k<=N;k++)

{

D[k-1]=-h[k]/(2*h[k-1]+2*h[k]+h[k-1]*D[k-2]);

L[k-1]=(3*l[k]-3*l[k-1]-h[k-1]*L[k-2])/(2*h[k-1]+2*h[k]+h[k-1]*D[k-2]);

}

c[N]=0;c[0]=0;

for(k=N;k>=2;k--)

c[k-1]=D[k-1]*c[k]+L[k-1];

for(k=1;k<=N;k++)

{d[k]=(c[k]-c[k-1])/(3*h[k]);

b[k]=l[k]+(2*c[k]*h[k]+h[k]*c[k-1])/3;}

 

 

delete []l;

delete []h;

delete []D;

delete []L;

return 0;

}

 

int main(int argc, char* argv[])

{int N;

FILE *g;

FILE *f;

f=fopen("E:\\rezult.txt","a+");

g=fopen("E:\\aium225m4.txt.txt","r+");

fscanf(g,"%d",&N);

cout<<"n="<<N<<"\t";

float *x,*y,*U,*a,*b,*c,*d,*P;

int i,j,m;

x=new float[N+1];

y=new float[N+1];

P=new float[N+1];

U=new float[N+1];

c=new float[N+1];

d=new float[N+1];

b=new float[N+1];

a=new float[N];

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

{fscanf (g,"%f",&x[i]);

cout<<"x["<<i<<"]"<<"="<<x[i]<<"\t";}

cout<<"\n";

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

{fscanf(g,"%f",&y[i]);

// f>>y[i];

cout<<"y["<<i<<"]"<<"="<<y[i]<<"\t";}

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

{fscanf(g,"%f",&U[i]);

//f>>U[i];

cout<<"U["<<i<<"]"<<"="<<U[i]<<"\t";}

koeffizient_splaina(x,y,N,b,c,d);

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

a[i]=y[i];

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

{

cout<<"a("<<i<<")="<<a[i-1]<<"\t"<<"\t";

cout<<"b("<<i<<")="<<b[i]<<"\t";

cout<<"c("<<i<<")="<<c[i]<<"\t";

cout<<"d("<<i<<")="<<d[i-1]<<"\n";

}

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

{if(U[m]>x[N-1])

j=N-1;

else

{

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

if(x[i]>U[m])

{j=i;break;}}

P[m]=a[j]+b[j]*(U[m]-x[j])+c[j]*(U[m]-x[j])*(U[m]-x[j])+d[j]*(U[m]-x[j])*(U[m]-x[j])*(U[m]-x[j]);

 

printf("P=%5.2f \n",P[m]); } for(i=0;i<3;i++)        

{

fprintf(f,"P=%5.2f \t",P[m]);

fprintf(f,"U=%5.2f \t",U[m]);

}

delete []x;

delete []y;

delete []P;

delete []U;

 

fclose(g);

  fclose(f);

return 0;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7. Контрольный пример.

7.1 Контрольный  расчет

     С помощью данной программы я получила ожидаемое значение тока при коэффициента нагрузки  при значениях = 0.64; 0.9;1.2.

Ниже показан screenshot работы программы в среде Microsoft Visual C++ 6.0.

Рис. 7.1. Screenshot работы результата программы.

Как мы видим, что найдены  значение пусковых токов при нагрузках U[0]=0.64, U[1]= 0.9, U[2]=1.2. Т.е. P[0]=39,92; P[1]=54,25; P[2]=70,64.

 

7.2. Результаты расчета с помощью Scilab

x=[0 0.2 0.5 0.7 0.8 1 1.1 1.3 1.5];

y=[20.6 22 34 43 49 60 65 77 91];

koeff=splin(x,y);

X=[0.64 1.2 0.9];

Y=interp(X,x,y,koeff)

 

Запуск программы:

  загрузка исходного  окружения

 

 

-->exec('E:\Документы\информатика\курсовой\5 2 sce.sce', -1)

 

-->x

x  =

 

    0.    0.2    0.5    0.7    0.8    1.    1.1    1.3    1.5 

-->y

y  =

 

    20.6    22.    34.    43.    49.    60.    65.    77.    91. 

-->X

X  =

     0.64    1.2    0.9 

-->interp(X,x,y,koeff)

 ans  =

    39.970661    70.648609    54.771506

7.3. График экспериментальной  зависимости  и подобранной  функции, выполненный в Scilab

Рис. 7.3 График экспериментальной зависимости в Scilab

 

8. Анализ работы.

 

В результате работы программы  я получила следующие значения пусковых токов I1=39,92; I2=54,25; I3=70,64. A в результате проверки работы программы в математическом пакете Scilab результаты были таковыми: I1=    39.970661 ; I2= 54.771506 ; I3=70.648609.    Данные результаты свидетельствуют о правильности работы программы и вычислении данных с небольшой погрешностью.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

 

В данной курсовой работе я  написала программу для вычисления тока ротора от коэффициента нагрузки предельной АД при номинальном напряжении и токе холостого хода с помощью методом кубической интерполяции. А также проверила правильность работы программы в математическом пакете Scilab  и построила график экспериментальных зависимостей в ________ и подобранных функций.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Списки используемой литературы:

 

1. Алексеев Е.Р., Чеснокова  О.В.,, Рудченко Е.А., Scilab: Решение инженерных и математических задач, М., 2008.-269с.

2. Алексеев Е.Р., Чеснокова  О.В., Решение задача вычислительной  математики в пакетах Mathcad 12, Matab 7, Maple 9, М., 2006.-496с.

    1. Хахаев И.А., Машков В.В. и др., OpenOffice.org: Теория и практика, М., 2008.-319с.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложения

Внизу показаны скриншоты  работы программы. Приложение 1 – текстовый  файл с начальными данными. Приложение 2 – текстовый файл с данными  полученными  программой.


Приложение 1

     Приложение 2




Информация о работе Использование кубического сплайна при решении электротехнических задач