|
2 / 2 / 0
Регистрация: 21.02.2024
Сообщений: 33
|
||||||
Задача с условиями и интегралами на Fortran28.02.2024, 18:05. Показов 4899. Ответов 54
Добрый вечер!
Дали задание, запрограммировать задачу на Фортране и не могу понять где у меня ошибки и как их исправить Изначально даны файлы A(1 2 3 2 1), B(1 2 3 2 1), T(2 2 2 2 2), и пределы от a до b (-2 -1 0 1 2) T = 2 M = 3 Y = 5 Итог, нужно вывести все R Мой код:
0
|
||||||
| 28.02.2024, 18:05 | |
|
Ответы с готовыми решениями:
54
задача с интегралами Задача на массивы Fortran |
|
7960 / 5121 / 2162
Регистрация: 02.02.2014
Сообщений: 13,495
|
||||||
| 06.03.2024, 21:24 | ||||||
Сообщение было отмечено Catstail как решение
Решение
топорное решение - на строке 52 поставить close(1) и по остальным файлам. грамотное решение: перед do k=1,50 прочитать все файлы и записать данные в массивы один раз! потом просто использовать заполненные массивы.
1
|
||||||
|
2 / 2 / 0
Регистрация: 21.02.2024
Сообщений: 33
|
|
| 06.03.2024, 21:43 [ТС] | |
|
Krasme,
Cпасибо огромное! Скорее всего на следующих днях появятся вопросы по этому коду тут, завтра спрошу у руководителя про один подвох
0
|
|
|
7960 / 5121 / 2162
Регистрация: 02.02.2014
Сообщений: 13,495
|
|
| 06.03.2024, 22:00 | |
|
поправочка..
![]() не 52 строка, а 56.. короче, после замыкания цикла do i = 1,5
0
|
|
|
2 / 2 / 0
Регистрация: 21.02.2024
Сообщений: 33
|
|
| 06.03.2024, 22:01 [ТС] | |
|
Krasme, Я решил поступить грамотно
0
|
|
|
2470 / 1616 / 742
Регистрация: 17.03.2022
Сообщений: 5,275
|
|
| 06.03.2024, 23:33 | |
|
FrenchRedPaw, грамотно было бы переписать этот "шедевр" с нуля.
Вот, например, процедура VV, а точнее, ее 3-й параметр (снаружи OOO, внутри IY). Он исправно вычисляется при каждом вызове процедуры, но никогда и нигде не используется. Внутри процедуры его упоминания легко убрать, снаружи даже это не потребуется - просто удалить массив вместе с соответствующей частью вызовов и все. И вот такого тут добрая половина. Оставшаяся половина все же что-то делает, но при сколько-нибудь обдуманной записи кода сокращается еще раза в два как минимум.
0
|
|
|
Модератор
|
||
| 07.03.2024, 02:33 | ||
|
0
|
||
| 07.03.2024, 04:34 | ||
|
1
|
||
|
Модератор
|
||
| 07.03.2024, 08:25 | ||
|
0
|
||
|
2470 / 1616 / 742
Регистрация: 17.03.2022
Сообщений: 5,275
|
||
| 07.03.2024, 09:57 | ||
|
0
|
||
|
2470 / 1616 / 742
Регистрация: 17.03.2022
Сообщений: 5,275
|
||
| 07.03.2024, 13:27 | ||
|
При этом с точки зрения основной программы третий аргумент процедуры является INOUT, т.е. на стадии компиляции программы неизвестно, будет ли значение, вернувшееся в результате первого вызова, использоваться во втором, а с точки зрения процедуры - она просто заполняет и возвращает какой-то массив и ничего не знает о его последующем использовании (или неиспользовании).
1
|
||
|
2 / 2 / 0
Регистрация: 21.02.2024
Сообщений: 33
|
||||||
| 13.03.2024, 22:23 [ТС] | ||||||
|
По итогу код после каждого повторного запуска выдает разные значения и не все близки к правде
Как можно разобраться хотя бы с первым пунктом? Может я неправильно по итогу написал код тех условий, которые были даны на картинке... Pphantom, вроде бы исправил то, что подметили. Файлы txt которые использую, прикрепил: A.txt B.txt T.txt predeli.txt Y.txt Сам код выглядит так:
0
|
||||||
|
2470 / 1616 / 742
Регистрация: 17.03.2022
Сообщений: 5,275
|
||
| 13.03.2024, 23:13 | ||
|
Серьезно, при таком качестве кода нет смысла искать частные ошибки. Если вы будете и дальше писать в таком стиле, то пока одну поправите - десяток новых внесете. Надо сначала научиться программировать на чем-нибудь, а потом научиться программировать на Фортране, причем, судя по всему, и тому, и другому учиться придется с нуля. Какие "разные" результаты оно у вас выдает - непонятно, поскольку типовой проблемой является, например, чтение 50 чисел из Y.txt, в котором их содержится 49.
0
|
||
|
2 / 2 / 0
Регистрация: 21.02.2024
Сообщений: 33
|
|
| 13.03.2024, 23:34 [ТС] | |
|
Pphantom, вторая процедура была сделана уже для 50 значений функций
Вот вы говорите что это хаотический ужас, но для себя, по сравнению с другими программами я вижу только момент, что после open добавляется close, и то что ввод значений типа "real" записать более компактно, а так же, вместо .eq. использовать знак =. Условия с картинки у меня подписаны в коде, что и где считается (кроме первой) Не посчитайте это за грубость, просто я говорю со своей стороны необразованного человека и что мне может броситься в глаза. Добавлено через 12 минут В 70 строке ошибка (там должно быть i = 1, 21) Добавил close Добавил в файл Y.txt в начале значение 0.00000 20 запусков программы дали одинаковые результаты, уже хорошо Надо будет посидеть подумать, почему дает ответ не тот, который нужен
0
|
|
|
2470 / 1616 / 742
Регистрация: 17.03.2022
Сообщений: 5,275
|
|||||||||||||||||||||||||||
| 14.03.2024, 00:10 | |||||||||||||||||||||||||||
Сообщение было отмечено Catstail как решение
РешениеЛюбая из этих двух процедур переделывается в такую:
Затем код можно внимательно просмотреть и вычистить лишнее. Впрочем, если бы вы сразу писали комментарии - что и зачем в какой строке делаете, проблемы были бы замечены сразу. Итак, после чистки получаем следующее:
А теперь можно вспомнить, что это вообще-то Фортран, а не Паскаль/Си/что-то-еще-универсальное-и-не-предназначенное-для-вычислительной-математики, и преобразовать функцию к виду, имеющему смысл уже для Фортрана:
И вот если нечто подобное проделать и с основной программой, то произойдет примерно то же самое - она тоже сильно сократится, куча ее деталей пропадет из-за полной ненадобности, а остальное станет читаемым.
1
|
|||||||||||||||||||||||||||
|
2 / 2 / 0
Регистрация: 21.02.2024
Сообщений: 33
|
|
| 14.03.2024, 00:17 [ТС] | |
|
Pphantom
Простите за столь позднее беспокойство и спасибо за ответ Посмотрю уже на следующий день, все внимательно прочитав и проанализировав (постараюсь вникнуть по крайней мере)
0
|
|
|
2470 / 1616 / 742
Регистрация: 17.03.2022
Сообщений: 5,275
|
|
| 16.03.2024, 15:49 | |
|
Ну и как процесс вникания?
![]() А то при переписывании основной программы действительно вылавливаются ошибки: например, вызовы процедуры интегрирования в 41, 45 и 50-й строках, когда еще данные до конца не прочитаны.
0
|
|
|
2 / 2 / 0
Регистрация: 21.02.2024
Сообщений: 33
|
||||||
| 27.03.2024, 00:31 [ТС] | ||||||
|
Pphantom, Добрый вечер
Простите за столь позднее беспокойство, только приехал из больницы Пробежал глазами, условие в начале сделал проще, а так вроде больше нечего сокращать, так же заставил функцию работать Сам код:
0
|
||||||
|
2470 / 1616 / 742
Регистрация: 17.03.2022
Сообщений: 5,275
|
||||||
| 27.03.2024, 12:10 | ||||||
Сообщение было отмечено Pphantom как решение
Решение
На самом деле и это можно сильно сократить. При этом сразу же удастся заметить, что вы зачем-то считаете интегралы в цикле чтения данных, что и само по себе не нужно, и заметно замедляет дело, поскольку вместо одного вычисления для каждого интеграла этих вычислений получается 21.
В итоге лишней оказывается куча массивов, каких-то промежуточных переменных без содержательных названий, а заодно - еще и множество скобочек (а то просто LISP какой-то получался). Вот, собственно, некоторое приближение: я просто упрощал программу, но она эквивалентна предыдущей за вычетом уже упомянутого 21-кратного интегрирования. Часть комментариев сохранена на соответствующих местах, хотя то, к чему они относились, ликвидировалось при расчистке.
0
|
||||||
|
2 / 2 / 0
Регистрация: 21.02.2024
Сообщений: 33
|
|
| 27.03.2024, 21:14 [ТС] | |
|
Pphantom, Да я думаю уже достаточно неплохо сокращено
У меня теперь вопрос, а правильно ли сформулированы те условия, которые даны мною на трех картинках? Где у (x) - 21 значения, а у (y) - 25 Если да, то надо будет спросить у преподавателя какими входными данными лучше воспользоваться (вдруг не те использую) для проверки Благодарю за ответ
0
|
|
| 27.03.2024, 21:14 | |
|
[Fortran-95] Silverfrost, задача ЭМП с внутренним источником
Задача с несколькими условиями
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|