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

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

Восстановить пароль Регистрация
 
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
30.06.2015, 17:24     Построение дифракционной картины #1
Построение дифракционной картины
 Комментарий модератора 
Нарушен п.5.18.Правил
Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
Перепишите!


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

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

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

Построение дифракционной картины
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2134 / 967 / 223
Регистрация: 30.11.2013
Сообщений: 3,235
30.06.2015, 17:42     Построение дифракционной картины #3
у вас джипег
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, залить другого формата?
Renji
1534 / 982 / 240
Регистрация: 05.06.2014
Сообщений: 2,960
30.06.2015, 18:05     Построение дифракционной картины #5
Дохлый номер. Никто не будет за бесплатно вспоминать ВУЗовский курс оптики, писать работу с графическими файлами и объяснять как заставить код работать у вашего препода (у него же никаких сторонних библиотек работы с графикой не установлено и компилятор десять лет как не обновлялся, угадал?). Возможно, кто-то подскажет как сделать цикл по уже готовым уравнениям, но вы же их не написали.
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
30.06.2015, 18:18  [ТС]     Построение дифракционной картины #6
Renji, суть в том, что не нужно писать
Цитата Сообщение от Renji Посмотреть сообщение
работу с графическими файлами
здесь нужно просто написать программу на С++, которая будет выводить данные в файл, а дальше уже и могу и сам справиться с gnuplot'ом.
Renji
1534 / 982 / 240
Регистрация: 05.06.2014
Сообщений: 2,960
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;
}
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));
}
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,168
Завершенные тесты: 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 - целочисленное деление, результат которого равен нулю
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  }
gunslinger
случайный прохожий
 Аватар для gunslinger
1097 / 715 / 184
Регистрация: 20.07.2013
Сообщений: 1,970
30.06.2015, 19:02     Построение дифракционной картины #11
Замени 1/4 на 1./4 или 0.25
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
30.06.2015, 22:00  [ТС]     Построение дифракционной картины #12
gunslinger,zss, ну, вроде помогло, по крайней мере теперь не просто 0.
Но правильно или нет - не знаю, к сожалению.

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

Добавлено через 2 часа 50 минут
Поднимаю тему, очень нужна помощь! Нужно просто написать программу, что бы выводила данные. Построением не нужно заниматься, просто так называется задание.
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,168
Завершенные тесты: 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
qwen1234
0 / 0 / 0
Регистрация: 29.09.2014
Сообщений: 93
01.07.2015, 10:28  [ТС]     Построение дифракционной картины #14
zss, Хорошо, но какова тогда будет структура программы (т.е. какой код программы)? Он такой же как та программа, которую я скидывал?
Пожалуйста помогите, очень нужно...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2015, 10:30     Построение дифракционной картины
Еще ссылки по теме:

C++ Построение интерфейса на VC++.
C++ Перевод кода с Паскаля на С++ (вычислить стоимость картины)
Построение В*-дерева C++

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,168
Завершенные тесты: 1
01.07.2015, 10:30     Построение дифракционной картины #15
Попробуйте просто в цикле сложить I1(x) и I2(x-d-a1/2 -a2/2)
Yandex
Объявления
01.07.2015, 10:30     Построение дифракционной картины
Ответ Создать тему
Опции темы

Текущее время: 09:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru