Напряженность и потенциал проводящего шара с зарядом q, размещенного в центре проводящей сферы
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
поля;
fi - потнциал;
a1 - радиус шара;
а2, а3 - радиусы сферы;
r - расяние от центра шара до точки определения напряженности и потенциала;
dr - шаг увеличения расстояния;
eps1, eps2 - абсолютные диэлектрические проницаемости внешнего пространства (вакуум) и внешнего (сфера);
БЛОК-СХЕМА
Функция main
Функция f1(a1,a2,a3,r)
СТРУКТУРА И РАБОТА ПРОГРАММЫ
Программа на языке C состоит из двух функций: main() и f1(a1,a2,a3,r), вычисляющая напряженность электрического поля и потенциал в точке на расстоянии r от центра шара с зарядом q, размещенного в центре полой проводящей сферы. Функция main()
Работа программы начинается с функции main, содержащей один оператор цикла for и один оператор многовариантного деления switch, вложенный в цикл, так как параметр a в программе имеет два значения и обознается a=0.01 и a1=0.05. При расчете происходит обращение сначала к функции F, в которую передается значение параметра a. Функция F имеет два оператора цикла for, один из которых вложен в другой. После выполнения функции F происходит обращение к функции H, имеющей два оператора цикла for, как и в предыдущей функции один вложен в другой.
В конце выполнения программы значения массивов f и h записываются в файл: при а=0.05 в файл a_0_001.txt, при a1=0.01 - в файл a_0_01.txt
ТЕКСТ ПРОГРАММЫ НА С
#include "stdafx.h"
#include
#include
#include
#include f[300];n[300];q[300];h[300];x,N;F(double);F(double a)
{(x=0; x<=N-1; x=x+1)
{[x]=0;i;z,ni;(i=1; i<=12; i=i+1)
{=(double)rand()/RAND_MAX;=-0.5-(-0.5-0.5)*z;[x]=n[x]+ni;
}[x]=exp(-a*x)+0.1*n[x];
}0;}H();H()
{x1;[0]=q[10]=0;[1]=q[9]=0.2;[2]=q[8]=0.4;[3]=q[7]=0.6;[4]=q[6]=0.8;[5]=1;(x=0; x<=N-1; x=x+1)
{[x]=0;(x1=0; x1<=N-1; x1=x1+1)
{[x]=h[x]+f[x1]*q[x-x1];
}
}0;
}_tmain(int argc, _TCHAR* argv[])
{a,F1,H1,a1;t;=300;(t=1; t<=2; t=t+1)
{(t)
{1 :=0.01;=F(a);=H();*m;_s(&m,"a_0_01.txt","w+");(x=0; x<=N-1; x=x+1)
{(m, "%le %le\n", f[x],h[x]);
}(m);;2:=0.05;=F(a1);=H();_s(&m,"a_0_001.txt","w+");(x=0; x<=N-1; x=x+1)
{(m, "%le %le\n", f[x],h[x]);
}(m);;
}
}
_getch();0;
}
фрагмент файла из С++ (левый столбец f(x), правый столбец h(x))
.666952e-001 9.359999e+000
.685273e-001 9.335505e+000
.745356e-001 9.731244e+000
.642603e-001 1.008659e+001
.338099e-001 1.094563e+001
.743329e-001 1.193945e+001
.956874e-001 1.275390e+001
.705165e-001 1.314451e+001
.736160e-001 1.326044e+001
.915757e-001 1.283504e+001
.777456e-001 1.219029e+001
РАБОТА В СИСТЕМЕ MATLAB
Программа в системе Matlab состоит из пяти функций. Интерфейс (function kursovaja()), function kursmain1() - загрузка файла с данными из С a_0_001.txt, расчет сигнала при a=0.05, обращаясь к функциям function f=F(a) - расчет сигнала с помехой и function h=H(f) - сигнала после фильтра и построение данных, полученных из С и Matlab. Аналогичная функция function kursmain2() - загрузка файла с данными из С a_0_01.txt, расчет сигнала при a=0.01, обращаясь к тем же расчетным функциям, построение графиков по данным из С и Matlab.
Работа начинается с запуска function kursovaja(), появляются два графических окна. На каждом имеется значение параметра a и кнопка, при нажатии которой выводятся графики из функции, соответствующей значению а (при a=0.05 из function kursmain1(), при a=0.01 из function kursmain2()).
ТЕКСТ ПРОГРАММЫ НА MATLAB
function kursovaja()
global a a1 h1 h2;=figure(1);(h1,color,[0.25 0.3 0.2]);(h1,numbertitle,off,name,Курсовая a=0.05);=position;=normalized;=units;=[0.2 0.95 0.28 0.04];=uicontrol(style,text,un,nor,pos,p0,string,значение паремтра a);=[0.50 0.95 0.08 0.04];=uicontrol(style,edit,un,nor,pos,p1,string,0.05);=[0.6 0.95 0.15 0.04];(style,pushbutton,un,nor,pos,p4,string,a=0.05,callback,kursmain);=figure(2);(h2,color,[0.25 0.3 0.2]);(h2,numbertitle,off,name,Курсовая a=0.01);=uicontrol(style,text,un,nor,pos,p0,string,значение паремтра a);=uicontrol(style,edit,un,nor,pos,p1,string,0.01);(style,pushbutton,un,nor,pos,p4,string,a=0.01,callback,kursmain2);kursmain()a h1(h1)a_0_001.txt;=a_0_001(:,1);=a_0_001(:,2);(2,2,1);(f),grid,xlabel(сигнал с помехой C++);(2,2,2)(h),grid,xlabel(сигнал после фильтра C++);=position;=normalized;=units;=get(a,string);=str2num(a);=F(a1);(2,2,3)(f),grid,xlabel(сигнал с помехой matlab);=H(f);(2,2,4)(h),grid,xlabel(сигнал после фильтра matlab);kursmain2()a1 h2(h2)a_0_01.txt;=a_0_01(:,1);=a_0_01(:,2);(2,2,1);(x,f1),grid,xlabel(сигнал с помехой C++);
subplot(2,2,2)(x,h1),grid,xlabel(сигнал после фильтра C++);
pos=position;=normalized;=units;=get(a1,string);=str2num(a);=F(a1);(2,2,3)
plot(x,f),grid,xlabel(сигнал с помехой matlab);
h=H(f);
subplot(2,2,4)
plot(x,h),grid,xlabel(сигнал после фильтра matlab);
function f=F(a);x=1:300(x,1)=0;i=1:12(i,1)=0.5.*randn(1,1);(x,1)=n(x,1)+ni(i,1);(x)=exp(-a.*x)+0.1.*n(x);h=H(f)
clc;=zeros(300,1);(10,1)=0.2;(9,1)=0.4;(8,1)=0.6;(7,1)=0.8;(2,1)=q(10,1);(3,1)=q(9,1);
q(4,1)=q(8,1);
q(5,1)=q(7,1);
q(6,1)=1;x=1:300(x,1)=0;x1=1:300(x1,1)=0;(x-x1)>0(x1,1)=f(x1)*q(x-x1);(x1,1)=0;(x,1)=h(x,1)+hi(x1,1);
end
ЗАКЛЮЧЕНИЕ
Для того, чтобы программы и результаты попали на бумагу было сделаны следующие действия. Тексты программ на С++ и matlab и результаты, полученные в ходе программы на С++ выделялись, затем копировались из файла сочетанием клавиш ctrl+c и вставлялись сочетанием клавиш ctrl+v. Графические окна копировались клавишей Print Screen и вставлялись сочетанием клавиш ctrl+v. Затем все было распечатано.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1.Березин Б.И. Базовый курс / Симанович С.В. и др. - СПб: Издательство Питер, 2000. - 640с
2.Кетков Ю.Л. Matlab 7: Программирование, численные методы / Кетков Ю.Л. и др. - СПб: Издательство БХВ Петербург, 2005. - 752с
.Потемкин В.Г. Система инженерных и научных расчетов MATLAB / Потемкин В.Г. - М: Издательство Диалог МИФИ, 1999
.Романова Г.Н. Информатика: Методические указания по курсовой работе / Г.Н. Романова - Красноярск: ИПЦ КГТУ, 2003. - 38с
.Романова Г.Н. Курс лекций по С++ и Matlab / Г.Н. Романова - Красноярск: ИПЦ КГТУ, 2003