Напряженность и потенциал проводящего шара с зарядом q, размещенного в центре проводящей сферы
Методы решения нелинейных уравнений. Расчет напряженности электрического поля и потенциала в любой точке проводящего шара с зарядом q, размещенным в центре полой проводящей сферы с использованием средств C++ и Matlab. Листинг и блок-схема программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.05.2012 |
Размер файла | 517,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
КУРСОВОЙ ПРОЕКТ (РАБОТА)
Напряженность и потенциал проводящего шара с зарядом 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 <math.h>
#include <conio.h>
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=%i\n F(x)=%le |x-F(x)|=%le\n",x,e,n,F(x),fabs(x-F(x)));
printf("Repeat?1/0\n");
scanf_s("%i",&t);
}
while(t==1);
printf("Koturgina\n");
_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 в файл a_0_001.txt, при a1=0.01 - в файл a_0_01.txt
ТЕКСТ ПРОГРАММЫ НА С
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
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,"a_0_01.txt","w+");
for (x=0; x<=N-1; x=x+1)
{
fprintf (m, "%le %le\n", f[x],h[x]);
}
fclose(m);
break;
case 2:
a1=0.05;
F1=F(a1);
H1=H();
fopen_s(&m,"a_0_001.txt","w+");
for (x=0; x<=N-1; x=x+1)
{
fprintf (m, "%le %le\n", f[x],h[x]);
}
fclose(m);
break;
}
}
_getch();
return 0;
}
фрагмент файла из С++ (левый столбец f(x), правый столбец h(x))
9.666952e-001 9.359999e+000
8.685273e-001 9.335505e+000
8.745356e-001 9.731244e+000
9.642603e-001 1.008659e+001
9.338099e-001 1.094563e+001
8.743329e-001 1.193945e+001
8.956874e-001 1.275390e+001
5.705165e-001 1.314451e+001
6.736160e-001 1.326044e+001
7.915757e-001 1.283504e+001
6.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;
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 a_0_001.txt;
f=a_0_001(:,1);
h=a_0_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 a_0_01.txt;
f1=a_0_01(:,1);
h1=a_0_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
Размещено на Allbest.ru
Подобные документы
Обзор существующих методов по решению нелинейных уравнений. Решение нелинейных уравнений комбинированным методом и методом хорд на конкретных примерах. Разработка программы для решения нелинейных уравнений, блок-схемы алгоритма и листинг программы.
курсовая работа [435,8 K], добавлен 15.06.2013Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы.
дипломная работа [144,8 K], добавлен 25.04.2012Решение задачи по методу Адамса. Блок-схема функции main. Блок-схема функции Adams. Листинг программы. Блок-схема функции MMinor. Блок-схема функции MatrixMultiply. Блок-схема функции Determinant. Результат решения задачи на ЭВМ.
курсовая работа [68,9 K], добавлен 16.04.2004Характеристика и описание массива структур из 3-х элементов. Блок-схемы главной функции main и текст программы на языке Си. Построение графика изменения напряженности поля заряженной частицы. Таблица символических имен, работоспособность программы.
курсовая работа [365,8 K], добавлен 02.02.2010Численные методы решения нелинейных уравнений, систем линейных и нелинейных алгебраических уравнений, дифференциальных уравнений, определенных интегралов. Методы аппроксимации дискретных функций и методы решения задач линейного программирования.
методичка [185,7 K], добавлен 18.12.2014Расчет трансформатора питания. Численное решение нелинейных уравнений с заданной точностью и дифференциальных уравнений первого порядка. Разработка программы с использованием средств визуального программирования на алгоритмическом языке программирования.
курсовая работа [1,2 M], добавлен 17.08.2013Особенности точных и итерационных методов решения нелинейных уравнений. Последовательность процесса нахождения корня уравнения. Разработка программы для проверки решения нелинейных функций с помощью метода дихотомии (половинного деления) и метода хорд.
курсовая работа [539,2 K], добавлен 15.06.2013Суть основных идей и методов, особенностей и областей применения программирования для численных методов и решения нелинейных уравнений. Методы итераций, дихотомии и хорд и их использование. Алгоритм метода Ньютона, создание программы и ее тестирование.
курсовая работа [423,0 K], добавлен 17.02.2010Методика и основные этапы построения ранжированных переменных, сферы и особенности их практического применения. Порядок построения графиков в декартовой системе. Приведение примеров решение нелинейных уравнений и их систем при помощи решающего блока.
контрольная работа [364,4 K], добавлен 27.03.2011Особенности решения уравнений с одной переменной методом половинного деления. Оценка погрешности метода простой итерации. Суть решения уравнений в пакете Mathcad. Векторная запись нелинейных систем. Метод Ньютона решения систем нелинейных уравнений.
курсовая работа [2,1 M], добавлен 12.12.2013