Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
#1

Построение дифракционной картины - C++

30.06.2015, 17:24. Просмотров 430. Ответов 14
Метки нет (Все метки)

Построение дифракционной картины
 Комментарий модератора 
Нарушен п.5.18.Правил
Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
Перепишите!


Смысл задания таков:
Сделать первый цикл по точкам на экране.
В этом цикле, рассматривая каждую точку считать расстояние до каждой точки от отверстий (их тоже дробить надо на множество точечных источников). Потом складывать все волны в данной точке на экране и идти к следующей точке.
Построение дифракционной картины

Помогите по этому принципу написать программу, очень прошу, срочно нужно, а сам в программировании увы не силен и не совсем понимаю как это реализовать.
Очень нужна помощь! Буду очень благодарен! С меня + и Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2015, 17:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Построение дифракционной картины (C++):

Перевод кода с Паскаля на С++ (вычислить стоимость картины) - C++
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Мне 11 лет, и я учусь программировать на Pascal ABC. Как мне перевести...

Описать класс с именем Culture и упорядочить вектор экземпляров по цене картины - C++
Описать класс с именем CULTURE, содержащий следующие поля: • название картины; • фамилия и имя художника; • год написания картины;...

Расчет дифракционной картины - Оптика
Пишу программу, которая рисует дифракционную картину от дифракционной решетки. Параметры решетки, какие надо задаются( период, число...

Центр дифракционной картины - Оптика
Экран, на котором наблюдается дифракционная картина, расположен на расстоянии 1 м от точечного источника монохроматического света с длиной...

Что будет происходить с интенсивностью в центре наблюдаемой на экране дифракционной картины - Оптика
Ребят помогите решить задачю: Имеется круглое отверстие в непрозрачной граде, на которую падает световая волна. За отверстием ...

Построение клеточно-автоматной, фрактальной картины рынка через некоторое время - C#
Пусть рынок некоторых товаров определен в виде клеточного поля. Некоторые клетки поля вначале считаются занятыми (продавцами). Ближайшие к...

14
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
30.06.2015, 17:38  [ТС] #2
Поднимаю тему выше. Очень срочно...

Построение дифракционной картины
0
rikimaru2013
C++ Game Dev
2436 / 1130 / 240
Регистрация: 30.11.2013
Сообщений: 3,688
30.06.2015, 17:42 #3
у вас джипег
0
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
30.06.2015, 17:49  [ТС] #4
Поднимаю тему выше. Очень срочно...

Рисунок задания.
Вложение 548981

Определить как функцию координат интенсивность дифракции от двух отверстий в диафрагме (см.рис) на экране параллельно плоскости диафрагмы для трех расстояний между диафрагмой и экраном http://www.cyberforum.ru/cgi-bin/latex.cgi?({l}_{1},{l}_{2},{l}_{3}). Как изменится картина, если оставить одно отверстие. Построить распределение интенсивности на экране.
Длина волны падающего на диафрагму излучения http://www.cyberforum.ru/cgi-bin/latex.cgi?\lambda = 500нм, интенсивность I =1000 Вт/http://www.cyberforum.ru/cgi-bin/latex.cgi?{m}^{2}.
Скорость света в вакууме http://www.cyberforum.ru/cgi-bin/latex.cgi?c=3*{10}^{8} м/с.

Добавлено через 49 секунд
rikimaru2013, залить другого формата?
0
Renji
1925 / 1323 / 298
Регистрация: 05.06.2014
Сообщений: 3,808
30.06.2015, 18:05 #5
Дохлый номер. Никто не будет за бесплатно вспоминать ВУЗовский курс оптики, писать работу с графическими файлами и объяснять как заставить код работать у вашего препода (у него же никаких сторонних библиотек работы с графикой не установлено и компилятор десять лет как не обновлялся, угадал?). Возможно, кто-то подскажет как сделать цикл по уже готовым уравнениям, но вы же их не написали.
2
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
30.06.2015, 18:18  [ТС] #6
Renji, суть в том, что не нужно писать
Цитата Сообщение от Renji Посмотреть сообщение
работу с графическими файлами
здесь нужно просто написать программу на С++, которая будет выводить данные в файл, а дальше уже и могу и сам справиться с gnuplot'ом.
0
Renji
1925 / 1323 / 298
Регистрация: 05.06.2014
Сообщений: 3,808
30.06.2015, 18:24 #7
Ну тогда как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<fstream>
using namespace std;
double pixel(int x,int y)
{
    return /*вписать сюда уравнение переводящее x и y в яркость точки экрана*/;
}
int main()
{
    ofstream out("result.txt");
    for(int x=0;x<100;++x)
        for(int y=0;y<100;++y)
            out<<x<<" "<<y<<" "<<pixel(x,y)<<endl;
    return 0;
}
0
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
30.06.2015, 18:31  [ТС] #8
Renji,zss Вот у меня есть программа по построению интерференционной картины, но там есть ошибка, и что там не так, никак не могу понять, ибо выдает, что I = 0 ,а так не должно быть.
Либо я там не так обнуляю, либо уже не знаю что там может быть неправильного.

А построение дифракционной картины уравнением от интерференционной не отличается.
то есть оно будет точно таким же как в коде который ниже I+=1/4/M_PI*sqrt(ls[i].P*ls[j].P)/(rj*ri)*cos(2*M_PI/lambda*(rj-ri));

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <fstream>
using namespace std;
struct lightsource
{
    double P;
    double x;
    double y;
    double z;
};
    lightsource ls[10];
    double lambda = 500E-9;
    double c=3E8;
    double a=20E-2; double b=20E-2;
    int N=100; double I; double rj,ri,x,y;
    int main()
    { 
        int da,db;
        FILE *out;
        out = fopen("out.txt","w");
//      ofstream f1("output.txt");
 
        ls[1].P= 3; ls[2].P= 5; ls[3].P= 6;
        ls[1].x=-11E-4 ; ls[2].x=11E-4 ; ls[3].x= -11E-4;
        ls[1].y= 11E-4; ls[2].y= 0.98E-3; ls[3].y=-11E-4 ;
        ls[1].z= 1; ls[2].z= 1.01; ls[3].z= 1.02;
        
        for ( da=0;da<N;da++)
        {
            for ( db=0;db<N;db++);
                { 
                    y=0; I=0;
 
                    
                    { 
                        for (int i=1; i<=3; i++)
                        {
                            for (int j=1; j<=3; j++)
                            {
                                x+=da*a/N;
                                y+=db*b/N;
                                rj=sqrt((ls[j].x-x)*(ls[j].x-x)+(ls[j].y-y)*(ls[j].y-y) +ls[j].z*ls[j].z);
                                ri=sqrt((ls[i].x-x)*(ls[i].x-x)+(ls[i].y-y)*(ls[i].y-y) +ls[i].z*ls[i].z);
                                I+=1/4/M_PI*sqrt(ls[i].P*ls[j].P)/(rj*ri)*cos(2*M_PI/lambda*(rj-ri));
                                    
                             }
                        }
                            
                    }
                    fprintf(out,"%f %f %e\n",x,y,I);
                //  fprintf(f1,"%lf %lf %lf\n",x,y,I,"\n") ;
//                  f1 << x << '\t' << y << '\t' << I << '\n';
                    
                }
                  //fprintf(out,"\n");
        }
        
fclose((out));
}
0
zss
Модератор
Эксперт С++
6401 / 5967 / 1944
Регистрация: 18.12.2011
Сообщений: 15,367
Завершенные тесты: 1
30.06.2015, 18:35 #9
Цитата Сообщение от qwen1234 Посмотреть сообщение
I+=1/4/M_PI*sqrt(ls[i].P*ls[j].P)/(rj*ri)*cos(2*M_PI/lambda*(rj-ri));
1/4 - целочисленное деление, результат которого равен нулю
1
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
30.06.2015, 18:47  [ТС] #10
zss, хм,странно, вроде, правильно записал. Сама формула вот такая: http://www.cyberforum.ru/cgi-bin/latex.cgi?I=\frac{1}{4\pi } \sum_{i}^{} \sum_{j}^{}\frac{\sqrt{{P}_{i}*{P}_{j}}}{{r}_{i}*{r}_{j}}*cos (k({r}_{j}-{r}_{i}))
http://www.cyberforum.ru/cgi-bin/latex.cgi?k= \frac{2\pi}{\lambda  }
0
gunslinger
случайный прохожий
1137 / 755 / 192
Регистрация: 20.07.2013
Сообщений: 2,082
30.06.2015, 19:02 #11
Замени 1/4 на 1./4 или 0.25
0
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
30.06.2015, 22:00  [ТС] #12
gunslinger,zss, ну, вроде помогло, по крайней мере теперь не просто 0.
Но правильно или нет - не знаю, к сожалению.

Эти задания между собой похожи, но все же из этого уравнения нужно взять только уравнение I =...
Как же мне выполнить мою задачу?

Добавлено через 2 часа 50 минут
Поднимаю тему, очень нужна помощь! Нужно просто написать программу, что бы выводила данные. Построением не нужно заниматься, просто так называется задание.
0
zss
Модератор
Эксперт С++
6401 / 5967 / 1944
Регистрация: 18.12.2011
Сообщений: 15,367
Завершенные тесты: 1
30.06.2015, 22:07 #13
Ваша формула неверная.
Для когерентного света для первой щели
http://www.cyberforum.ru/cgi-bin/latex.cgi?{I}_{1}(x)=\frac{{a}_{1}}{j\lambda {b}_{1}}{e}^{jk({b}_{1}+\frac{x}{2{b}_{1}})}sinc(\frac{{a}_{1}x}{\lambda {b}_{1}})
см. Гудмен "введение в фурье оптику" стр. 91
0
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
01.07.2015, 10:28  [ТС] #14
zss, Хорошо, но какова тогда будет структура программы (т.е. какой код программы)? Он такой же как та программа, которую я скидывал?
Пожалуйста помогите, очень нужно...
0
zss
Модератор
Эксперт С++
6401 / 5967 / 1944
Регистрация: 18.12.2011
Сообщений: 15,367
Завершенные тесты: 1
01.07.2015, 10:30 #15
Попробуйте просто в цикле сложить I1(x) и I2(x-d-a1/2 -a2/2)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2015, 10:30
Привет! Вот еще темы с ответами:

Определить число максимумов в спектре дифракционной решетки, период дифракционной решетки. - Оптика
Дифракционная решетка шириной 12 мм содержит 4800 штрихов. Определить: 1) число максимумов в спектре дифракционной решетки для длины волны...

Записи, картины. - Pascal
Задача такая: На выставке представленно N картин. Для каждой известно 1)художник 2)инициалы 3)название 4)жанр 5)цена. Найти: 1 - самый...

Период дифракционной решетки - Оптика
Дифракционная решетка освещена параллельным пучком белого света. Разность углов отклонения конца первого и начала второго спектров...

Изменить размер картины - PHP
Как правильнее изменить размер картины средствами PHP, чтобы получилась картина максимально возможного качества. Можно ли вообще получить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
01.07.2015, 10:30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru