Напряженность и потенциал проводящего шара с зарядом 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