Применение языков программирования высокого уровня для реализации численных методов и прикладных программРефераты >> Программирование и компьютеры >> Применение языков программирования высокого уровня для реализации численных методов и прикладных программ
Используемые технические средства. Для правильного функционирования программы необходимо применять следующие компоненты аппаратного комплекса: персональный компьютер класса Ix86 с 640Кб ОЗУ, оснащенный одним накопителем на гибком магнитном диске 720Кб или накопителем типа «винчестер», а так же видеоадаптером EGA или VGA (предпочтительно).Компьютер рекомендуется оснастить видеомонитором, соответствующим видеоадаптеру.
Вызов и загрузка. Для вызова программы необходимо в командой строке ДОС набрать полное имя основного модуля. Никаких параметров в командной строке не требуется.
Входные и выходные данные. Входными и выходными данными для программы является файл (файлы) данных пользователя и выводит информацию, содержащуюся в них на экран дисплея.
Приложения
приложение 1
#include <stdio.h>
#include <math.h>
//описание переменных, используемых в программе
double pi=3.14,a=1.8,b=-2.0,c=0.1,d=1.6,e=0.9,eps=0.000001;
int i=0;
double x,y;
//описания функций решения методами Ньютона и простых итераций
extern double newton(double xn,double yn);
extern double iterac(double xn,double yn);
int main(void)
{
//запрос начального приближения у пользователя
scanf("%f",&x);
scanf("%f",&y);
//вывод результатов через вызовы функций на экран
printf ("Окончательное решение по методу Ньютона\n");
printf ("%g\t%g\n", newton(x,y));
printf ("Окончательное решение по методу итераций\n");
printf ("%g\t%g\n", iterac(x,y));
return (0);
}
//функция решения системы уравнений методом ньютона
double newton(double xn,double yn)
{
double f1,f2,xxn,yyn;
double df1dx,df1dy,df2dx,df2dy,dxy;
do
{
i++;
//описания исходных ураванений
f1=sin(xn+a)+b*yn+c;
f2=cos(yn+d)+e*xn;
//производные
df1dx=cos(xn+a);
df1dy=b;
df2dx=e;
df2dy=-sin(yn+d);
//якобиан системы
dxy=df1dx*df2dy-df1dy*df2dx;
//очередное значение х
xxn=xn-((f1*df2dy-f2*df1dy)/dxy);
//очередное значение y
yyn=yn+((f1*df2dx-f2*df1dx)/dxy);
//проверка точности решения и окончания счета
if (fabs(xxn-xn)<eps||fabs(yyn-yn)<eps) goto b;
//изменение текущих значений переменных х и у
xn=xxn; yn=yyn;
}
while (1);
b: return (xxn,yyn);
}
//решение системы уравнений методом простых итераций
double iterac(double xi, double yi)
{
double xxi,yyi;
do
{
i++;
//явное выражение переменной x
xxi=-cos(yi+d)/e;
//явное выражение переменной y
yyi=-(sin(xi+a)+c)/b;
//проверка точности решения и ококнчания счета
if (fabs(xxi-xi)<eps||fabs(yyi-yi)<eps) goto c;
//изменение текущих значений
xi=xxi;yi=yyi;
}
while(1);
c: return (xxi,yyi);
}
Приложение 2
//
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <math.h>
#define NFONTS 11
char *Fonts[NFONTS] = {
"Default_Font", "Triplex_Font", "Small_Font",
"SansSerif_Font", "Gothic_Font", "Script_Font", "Simplex_Font", "TriplexScript_Font",
"Complex_Font", "European_Font", "Bold_Font"
};
int xmax,ymax,i=0,MaxColors;
//
//прототипы функций
//
void demoline(void);
void democircle(void);
void demopix(void);
void demopieslice(void);
void demotext (void);
void MainWindow(char *header);
void DrawBorder(void);
void StatusLine(char *msg);
void demoarcs(void);
void demobars(void);
void demo3dbars(void);
void diagram(void);
void endpage(void);
void endpage1(void);
void endpage2(void);
//
//начало главной функции
//
int main(void)
{
/* автоматическое определение типа видеоадаптера */
int gdriver = DETECT, gmode, errorcode;
char msg[80];
// инициализация графических и локальных переменных
initgraph(&gdriver, &gmode, "");
xmax=getmaxx();
ymax=getmaxy();
// проверка результатов инициализации
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
//вызовы функций
demoline();
demopix();
demobars();
demo3dbars();
demopieslice();
diagram();
democircle();
demoarcs();
demotext();
endpage();
endpage1();
endpage2();
cleardevice();
closegraph();
return 0;
}
//
//функция демонстрации линий
//
void demoline(void)
{
//формирование графического окна и статусной строки
MainWindow( "Line demonstration" );
StatusLine( "Press any key to continue ." );
//процесс рисования линий
do
{
setcolor( random( MaxColors - random(15) ) + random(15) );
lineto (xmax,i);
lineto (xmax,ymax);
lineto (i,ymax);
lineto (i+1,i+1);
i=i+1;xmax=xmax-1;ymax=ymax-1;
}
while (xmax!=(xmax/2));
getch();
cleardevice();
clearviewport();
}
//
//функция демонстрации окружностей
//
void democircle(void)
//xmax=getmaxx();
//ymax=getmaxy();
{
MainWindow( "Circle demonstration" );
StatusLine( "Press any key to continue ." );
randomize();
moveto(random(xmax),random(ymax));
do
{
i++;
//установка случайного цвета
setcolor( random( MaxColors - random(15) ) + random(15) );
circle(random(getmaxx()),random(getmaxy()),random(100));
}
while( !kbhit() ); // повторение пока не нажата клавиша
getch();
clearviewport();
i=1;
do
{
i++;
setcolor( random( MaxColors - random(15) ) + random(15) );
circle(getmaxx()/2,getmaxy()/2,i);
if (i==400)
{setcolor(0);
do
{i--;circle(getmaxx()/2,getmaxy()/2,i);}
while(i!=0);}
}
while( !kbhit() ); // повторение пока не нажата клавиша
getch();
cleardevice();
}
//
//функция демонстрации рисования точек в произвольном //порядке
//
void demopix(void)
{
MainWindow( "Pix demonstration" );
StatusLine( "Press any key to continue ." );
do
{
i++;
setcolor( random( MaxColors - random(15) ) + random(15) );
putpixel(random(getmaxx()),random(getmaxy()),random(15));
}
while( !kbhit() ); // повторение пока не нажата клавиша
xmax=getmaxx();
ymax=getmaxy();
getch();
cleardevice();
}
//
//функция демонстрации рисования секторов
//
void demopieslice(void)
{
MainWindow( "Pie Chart Demonstration" );
StatusLine( "Press any key to continue ." );