Напряженность и потенциал проводящего шара с зарядом q, размещенного в центре проводящей сферы
Программа в системе Matlab состоит из пяти функций. Интерфейс (function kursovaja ()), function kursmain1() — загрузка файла с данными из С a0001.txt, расчет сигнала при a=0.05, обращаясь к функциям function f=F (a) — расчет сигнала с помехой и function h=H (f) — сигнала после фильтра и построение данных, полученных из С и Matlab. Аналогичная функция function kursmain2() — загрузка файла… Читать ещё >
Напряженность и потенциал проводящего шара с зарядом q, размещенного в центре проводящей сферы (реферат, курсовая, диплом, контрольная)
КУРСОВОЙ ПРОЕКТ (РАБОТА)
Напряженность и потенциал проводящего шара с зарядом q, размещенного в центре проводящей сферы
ЗАДАНИЕ Проводящий шар с зарядом q размещен в центре полой проводящей сферы.
a1 — радиус шара;
a2, a3 — радиусы сферы;
1, 2 — абсолютные диэлектрические проницаемости внешнего пространства (вакуум) и внутреннего сферы (диэлектрик).
Элекрическое поле (E) и потенциал () определены следующими соотношениями:
q q q 1 1
E =; = + (-); при a1 <= r <= a2;
42 r2 41a3 42 r a2
q
E= 0; =; при a2 <= r <= a3 ;
41a3
q q
E=; =; при r >= a3 ;
41r2 41r
r — расстояние от центра шара до точки определения поля.
Вычислить E, и построить зависимости от r при:
1) a2 = 2a1; a3 = 2.5a1 ;
2) a2 = 10a1; a3 = 15a1 ;
2 = 1,81 .
АННОТАЦИЯ Данная курсовая работа предназначена для расчета напряженности электрического поля и потенциала в любой точке проводящего шара с зарядом q, размещенным в центре полой проводящей сферы с использованием средств C++ и Matlab.
ВВЕДЕНИЕ
РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ. МЕТОДЫ ПРОСТЫХ ИТЕРАЦИЙ Для решения математических задач используются основные группы методов: графические, аналитические, численные.
Графические методы позволяют в ряде случаев оценить порядок искомой величины. Основная идея этих методов состоит в том, что решение находится путем геометрических построений. Например, для нахождения корней уравнения f (x)=0 строится график функции y=f (x), точки пересечения которого с осью абсцисс и будут искомыми корнями.
При использовании аналитических методов решение задачи удается выразить с помощью формул.
Основным инструментом для решения сложных математических задач в настоящее время являются численные методы, позволяющие свести решение задачи к выполнению конечного числа арифметических действий над числами; при этом результаты получаются в виде числовых значений. Многие ЧМ разработаны давно, однако при вычислениях вручную они могли использоваться лишь для решения не слишком трудоемких задач.
Численное решение нелинейных (алгебраических) уравнений вида f (x)=0 заключается в нахождении значений x, удовлетворяющих (с заданной точностью) данному уравнению. Сначала происходит нахождение отрезков из области определения функции f (x), внутри которых содержится только один корень решаемого уравнения. Далее вычисляется приближенное значение корня с заданной точностью. Часто вместо отрезка локализации достаточно указать начальное приближение к корню.
В данной курсовой работе мы рассмотрим численный метод решения нелинейных уравнений — метод простых итераций. Этот метод можно применить к уравнениям, которые могут быть представлены в виде F (x)=f (x)-x=0
y
y=x
y=f (x)
x0 x1 x2xs x
Рисунок 1 — Геометрическая интерпретация Сначала мы вводим первую итерацию х0 — т.0 (х0,f (x0)), последующая итерация находится с помощью итерационного соотношения x=f (x) (новая через старую). Т. е. следующие итерации (x1,f (x1)), (x2,f (x2)) и т. д. до тех пор, пока истинно |f (x)-x|<=eps, где eps — это точность. Рассмотрим решение нелинейного уравнения методом простых итераций на примере.
Пример. Начнем с постановки задачи.
Задача: решить нелинейное уравнение F (x)=lg (x)+2x-3=0 методом простых итераций, вычислить корень с заданной точностью eps.
Исходные данные: уравнение, точность, первая итерация.
Результат: вывод на экран (корень, точность, количество итерации, контрольное число (|f (x)-x|).
БЛОК-СХЕМА напряженность электрическое поле заряд matlab
aлгоритма решения нелинейного уравнения с помощью метода простых итераций с точностью eps
Правило остановки итерации: F (xs)>0, F (x1)?eps, |x1-x0|?eps. Для того, чтобы правильно найти корень, мы будем продолжать итерации, пока будут истинны оба итеранта.
СЛОВЕСНЫЙ АЛГОРИТМ
1. Начало.
2. Ввод с клавиатуры первой итерации x и точности eps.
3. n=1
4. |x-f (x)|>=eps, если да — на 5, нет — на 8
5. Нахождение следующей итерации x=f (x)
6. n=n+1
7. на 4
8. вывод на экран x, eps, n, F (x), |f (x)-x|
9. подпись
10. конец
ТЕКСТ ПРОГРАММЫ
#include «stdafx.h»
#include
#include
double F (double);
double F (double a)
{
return -(3*log10(a*a)+3)/6;
}
int _tmain ()
{double x, e;
int n, t;
do
{
printf («x=»);
scanf_s («%le» ,&x);
printf («e=»);
scanf_s («%le» ,&e);
n=1;
do
{
x=F (x);
n=n+1;
}
while (fabs (x-F (x))>=e);
printf («x=%le e=%le n=%in F (x)=%le |x-F (x)|=%len», x, e, n, F (x), fabs (x-F (x)));
printf («Repeat?1/0n»);
scanf_s («%i» ,&t);
}
while (t==1);
printf («Koturginan»);
_getch ();
return 0;
}
АНАЛИЗ ЗАДАНИЯ
Данная курсовая работа позволяет рассчитать потенциал и напряженность электрического поля в любой точке относительно проводящего шара с зарядом q, размещенным в центре полой проводящей сферы, с использованием средств C++ и Matlab.
СЛОВЕСНЫЙ АЛГОРИТМ
1. Начало
2. Создание файла kursov1. txt;
3. Вычисление E, fi при a1=1, a2=2*a1, a3=2,5*a1, dr=0,01*a1;
4. Запись E, fi, r в файл kursov1. txt;
5. Закрытие файла kursov1. txt;
6. Создание файла kursov2. txt;
7. Вычисление E, fi при a1=1, a2=10*a1, a3=15*a1;
8. Запись E, fi, r в файл kursov2. txt;
9. Закрытие файла kursov2. txt;
10. Конец.
ПОЯСНЕНИЯ К БЛОК-СХЕМЕ
E — напряженность электрического поля;
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 в файл a0_001.txt, при a1=0.01 — в файл a0_01.txt
ТЕКСТ ПРОГРАММЫ НА С
#include «stdafx.h»
#include
#include
#include
#include
double f[300];
double n[300];
double q[300];
double h[300];
int x, N;
double F (double);
double F (double a)
{
for (x=0; x<=N-1; x=x+1)
{
f[x]=0;
int i;
double z, ni;
for (i=1; i<=12; i=i+1)
{
z=(double)rand ()/RAND_MAX;
ni=-0.5-(-0.5−0.5)*z;
n[x]=n[x]+ni;
}
f[x]=exp (-a*x)+0.1*n[x];
}
return 0;}
double H ();
double H ()
{
int x1;
q[0]=q[10]=0;
q[1]=q[9]=0.2;
q[2]=q[8]=0.4;
q[3]=q[7]=0.6;
q[4]=q[6]=0.8;
q[5]=1;
for (x=0; x<=N-1; x=x+1)
{
h[x]=0;
for (x1=0; x1<=N-1; x1=x1+1)
{
h[x]=h[x]+f[x1]*q[x-x1];
}
}
return 0;
}
int _tmain (int argc, _TCHAR* argv[])
{
double a, F1, H1,a1;
int t;
N=300;
for (t=1; t<=2; t=t+1)
{
switch (t)
{
case 1 :
a=0.01;
F1=F (a);
H1=H ();
FILE *m;
fopen_s (&m," a0_01.txt" ," w+");
for (x=0; x<=N-1; x=x+1)
{
fprintf (m, «%le %len», f[x], h[x]);
}
fclose (m);
break;
case 2:
a1=0.05;
F1=F (a1);
H1=H ();
fopen_s (&m," a0_001.txt" ," w+");
for (x=0; x<=N-1; x=x+1)
{
fprintf (m, «%le %len», f[x], h[x]);
}
fclose (m);
break;
}
}
_getch ();
return 0;
}
фрагмент файла из С++ (левый столбец f (x), правый столбец h (x))
9.66 6952e-001 9.35 9999e+000
8.68 5273e-001 9.33 5505e+000
8.74 5356e-001 9.73 1244e+000
9.64 2603e-001 1.8659e+001
9.33 8099e-001 1.9 4563e+001
8.74 3329e-001 1.19 3945e+001
8.95 6874e-001 1.27 5390e+001
5.70 5165e-001 1.31 4451e+001
6.73 6160e-001 1.32 6044e+001
7.91 5757e-001 1.28 3504e+001
6.77 7456e-001 1.21 9029e+001
РАБОТА В СИСТЕМЕ MATLAB
Программа в системе Matlab состоит из пяти функций. Интерфейс (function kursovaja ()), function kursmain1() — загрузка файла с данными из С a0_001.txt, расчет сигнала при a=0.05, обращаясь к функциям function f=F (a) — расчет сигнала с помехой и function h=H (f) — сигнала после фильтра и построение данных, полученных из С и Matlab. Аналогичная функция function kursmain2() — загрузка файла с данными из С a0_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;
h1=figure (1);
set (h1,'color',[0.25 0.3 0.2]);
set (h1,'numbertitle','off','name','Курсовая a=0.05');
pos='position';
nor='normalized';
un='units';
p0=[0.2 0.95 0.28 0.04];
tt=uicontrol ('style','text', un, nor, pos, p0,'string','значение паремтра a');
p1=[0.50 0.95 0.08 0.04];
a=uicontrol ('style','edit', un, nor, pos, p1,'string','0.05');
p4=[0.6 0.95 0.15 0.04];
uicontrol ('style','pushbutton', un, nor, pos, p4,'string','a=0.05','callback','kursmain');
h2=figure (2);
set (h2,'color',[0.25 0.3 0.2]);
set (h2,'numbertitle','off','name','Курсовая a=0.01');
tt1=uicontrol ('style','text', un, nor, pos, p0,'string','значение паремтра a');
a1=uicontrol ('style','edit', un, nor, pos, p1,'string','0.01');
uicontrol ('style','pushbutton', un, nor, pos, p4,'string','a=0.01','callback','kursmain2');
function kursmain ()
global a h1
figure (h1)
load a0_001.txt;
f=a0_001(, 1);
h=a0_001(, 2);
subplot (2,2,1);
plot (f), grid, xlabel ('сигнал с помехой C++');
subplot (2,2,2)
plot (h), grid, xlabel ('сигнал после фильтра C++');
pos='position';
nor='normalized';
un='units';
a=get (a,'string');
a1=str2num (a);
f=F (a1);
subplot (2,2,3)
plot (f), grid, xlabel ('сигнал с помехой matlab');
h=H (f);
subplot (2,2,4)
plot (h), grid, xlabel ('сигнал после фильтра matlab');
function kursmain2()
global a1 h2
figure (h2)
load a0_01.txt;
f1=a0_01(, 1);
h1=a0_01(, 2);
subplot (2,2,1);
plot (x, f1), grid, xlabel ('сигнал с помехой C++');
subplot (2,2,2)
plot (x, h1), grid, xlabel ('сигнал после фильтра C++');
pos='position';
nor='normalized';
un='units';
a=get (a1,'string');
a1=str2num (a);
f=F (a1);
subplot (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)
clc;
for x=1:300
n (x, 1)=0;
for i=1:12
ni (i, 1)=0.5.*randn (1,1);
n (x, 1)=n (x, 1)+ni (i, 1);
end
f (x)=exp (-a.*x)+0.1.*n (x);
end
function h=H (f)
clc;
q=zeros (300,1);
q (10,1)=0.2;
q (9,1)=0.4;
q (8,1)=0.6;
q (7,1)=0.8;
q (2,1)=q (10,1);
q (3,1)=q (9,1);
q (4,1)=q (8,1);
q (5,1)=q (7,1);
q (6,1)=1;
for x=1:300
h (x, 1)=0;
for x1=1:300
hi (x1,1)=0;
if (x-x1)>0
hi (x1,1)=f (x1)*q (x-x1);
else
hi (x1,1)=0;
end
h (x, 1)=h (x, 1)+hi (x1,1);
end
end
ЗАКЛЮЧЕНИЕ
Для того, чтобы программы и результаты попали на бумагу было сделаны следующие действия. Тексты программ на С++ и matlab и результаты, полученные в ходе программы на С++ выделялись, затем копировались из файла сочетанием клавиш ctrl+c и вставлялись сочетанием клавиш ctrl+v. Графические окна копировались клавишей Print Screen и вставлялись сочетанием клавиш ctrl+v. Затем все было распечатано.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Березин Б. И. Базовый курс / Симанович С. В. и др. — СПб: Издательство «Питер», 2000. — 640с
2. Кетков Ю. Л. Matlab 7: Программирование, численные методы / Кетков Ю. Л. и др. — СПб: Издательство «БХВ Петербург», 2005. — 752с
3. Потемкин В. Г. Система инженерных и научных расчетов MATLAB / Потемкин В. Г. — М: Издательство «Диалог МИФИ», 1999
4. Романова Г. Н. Информатика: Методические указания по курсовой работе / Г. Н. Романова — Красноярск: ИПЦ КГТУ, 2003. — 38с
5. Романова Г. Н. Курс лекций по С++ и Matlab / Г. Н. Романова — Красноярск: ИПЦ КГТУ, 2003