Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как это сделать на С? 
:(
    Опции темы
spea
Дата 26.10.2012, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.10.2012

Репутация: нет
Всего: нет



Цитата
но боюсь, что это маловероятно. 
 как же это глупо звучало.. Ведь можно было сделать всё гораздо проще:   
Код
for( i = 0; i < N; i++) /* расчет G для каждой точки */
      { 
            G[i] = 0;
            for( k = 0; k < N; k++)
            {
                  G[i] += (faa[i] * A ( i ) * FS( i, k )) /
                  (4 * pi * ng * R);
            }
      }  
/* ниже тексты функций */
 
Теперь, в принципе, можно посчитать любое количество точек.

feodorv, огромное спасибо! не знаю, что бы я без Вас делал) 

Стыдно уже что-то ещё спрашивать, после такой оказанной помощи, но можно ли каким-либо образом ускорить вычисления?

Это сообщение отредактировал(а) spea - 26.10.2012, 20:29
PM MAIL   Вверх
feodorv
Дата 26.10.2012, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(spea @  26.10.2012,  14:39 Найти цитируемый пост)
 можно ли каким-либо образом ускорить вычисления?

Я бы прежде всего вычислил до цикла то, что не зависит от переменной цикла:
Цитата(spea @  26.10.2012,  14:39 Найти цитируемый пост)
                  G[i] += (faa[i] * A ( i ) * FS( i, k )) /
                  (4 * pi * ng * R);

Здесь 4 * pi * ng * R - константа с точки зрения цикла, её можно вынести за пределы цикла по k:
Код

float cc = (4 * pi * ng * R);
for( i = 0; i < N; i++) /* расчет G для каждой точки */

   G[i] = 0;
   for( k = 0; k < N; k++)  G[i] += faa[i] * A ( i ) * FS( i, k );
   G[i] *= cc;
}  

Как-то так. А насчёт sin, cos, acos и т.д. - подсказать ничего не могу...

Результаты-то хоть похожи на настоящие?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
spea
Дата 27.10.2012, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.10.2012

Репутация: нет
Всего: нет



Цитата
Результаты-то хоть похожи на настоящие?
С уверенностью не могу говорить об этом, пока не обработаю сразу все точки. Но для максимального количества точек, что я обсчитывал (50 тыс.), значения и их распределения вполне адекватные и реальные. В Dplot пробовал строить поверхности - получаются очень даже симпатичные изолинии). Да, кстати, можно ли организовать построение поверхностей с помощью Си ?

Это сообщение отредактировал(а) spea - 27.10.2012, 00:34
PM MAIL   Вверх
feodorv
Дата 27.10.2012, 04:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(spea @  27.10.2012,  01:33 Найти цитируемый пост)
получаются очень даже симпатичные изолинии

 smile 

Цитата(spea @  27.10.2012,  01:33 Найти цитируемый пост)
Да, кстати, можно ли организовать построение поверхностей с помощью Си ?

В самом Си нет средств рисования, но можно воспользоваться графическими библиотеками, например, GDI+ или OpenGL. Но изучение всего этого потребует уйму времени smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
math64
Дата 28.10.2012, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Можно перейти от сферических координат к декартовым - вместо двух массивов с широтой и долготой будут три с координатами X, Y, Z.
Тогда вычислений sin и cos будет меньше.
Для построения поверхностей можно воспользоваться готовой программой, а вывод Вашей программы организовать такой, какой требуется на вход программы построения поверхностей.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0886 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.