Форум программистов, компьютерный форум, киберфорум
Maple
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147

Цикл или функция

11.03.2014, 23:34. Показов 2833. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Подскажите пожалуйста

У меня есть выражение с 4-мя неизвестными: W(r) и его производная по r - theta1(r) зависящие также и от n
И у меня есть 4 граничных условия, из которых на каждом шаге я определяю константы и доопределяю с их помощью выражение W(r), получая W_pl(r).
И мне надо найти сумму из n таких W_pl(r). Сумму ряда.
Я начала писать цикл, но запуталась в последней строчке, где происходит накопление переменной W_pl(r).
(Каждая последущая W_pl(r) равна предыдущей W_pl(r) + свежее значение W_pl(r) - есть предчувствие что что-то здесь не то)
И еще выскакивает какая-то ошибка насчет его окончания end do.

Помогите пожалуйста разобраться и подскажите пожалуйста, может проще сделать не циклом, а функцией суммирования?

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
for n from 5 to 27
> do:
> W:=r->A1*r^n+A2*r^(-n)+A3*r^(2+n)+A4*r^(2-n)+r^4*4*q/(Pi*n*(16-n^2)*(4-n^2)*D_pl*3):
> theta1:=r->D(W)(r):
> sol1:=(solve({W(a)=0,W(2*a)=0,theta1(a)=0,theta1(2*a)=0},{A1,A2,A3,A4})):
> W_pl:=r->subs(sol1,W(r))*sin(3*n*Pi/2):
> W_pl(r):=W_pl(r)+W_pl(r):
> 
> end do:
>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2014, 23:34
Ответы с готовыми решениями:

Почему если условие входа в цикл не выполняется, функция заново входит в цикл
Сам код: private void traverse_node(TreeControlItem node) { TreeControlItem childNode = default(TreeControlItem);...

Алгоритм с применением вложенных базовых структур «цикл с предусловием» или «цикл с постусловием»
Разработать алгоритм с применением вложенных базовых структур «цикл с предусловием» или «цикл с постусловием», составить и отладить...

Разработать алгоритм с применением вложенных базовых структур «цикл с предусловием» или «цикл с постусловием»
Разработать алгоритм с применением вложенных базовых структур «цикл с предусловием» или «цикл с постусловием», составить и отладить...

15
Модератор
Эксперт по математике/физике
 Аватар для VSI
5291 / 4073 / 1392
Регистрация: 30.07.2012
Сообщений: 12,489
11.03.2014, 23:42
Это то, что Вам надо было посчитать?
Maple 13
Вложения
Тип файла: rar enotik_NEW.rar (6.0 Кб, 15 просмотров)
1
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
12.03.2014, 00:32  [ТС]
Спасибо!!!
А у меня почему-то выдает ошибку
"Syntax error, reserved word `end` unexpected"
Когда этот цикл у меня работает в документе с другими вычислениями

Подскажите ,пожалуйста, а как вывести конечный результат без подробностей на каждом шаге?

Добавлено через 33 минуты
И еще вопрос
Предположим, мне надо посчитать только нечетные члены ряда
вот я пишу, чтобы в случае четного n цикл его пропускал, увеличивая на единицу, а оно не работает

Matlab M
1
2
3
4
5
6
7
8
9
10
restart;
> for n from 5 to 27 do
> if (n mod 2 =0) then n=n+1
> else
> W:=r->A1*r^n+A2*r^(-n)+A3*r^(2+n)+A4*r^(2-n)+r^4*4*q/(Pi*n*(16-n^2)*(4-n^2)*D_pl*3):
> theta1:=r->D(W)(r):
> sol1:=(solve({W(a)=0,W(2*a)=0,theta1(a)=0,theta1(2*a)=0},{A1,A2,A3,A4})):
> W_pl:=r->subs(sol1,W(r))*sin(3*n*Pi/2):
> W_pl(r):=W_pl(r)+W_pl(r):
> end do;
0
Модератор
Эксперт по математике/физике
 Аватар для VSI
5291 / 4073 / 1392
Регистрация: 30.07.2012
Сообщений: 12,489
12.03.2014, 01:33
for i from 1 to 10 by 2 do... - 1, 3, 5, 7, 9 - значения переменной i (нечетные)
for i from 2 to 10 by 2 do... - 2, 4, 6, 8, 10 - значения переменной i (четные)
1
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
13.03.2014, 00:28  [ТС]
Получается, что здесь все таки ошибка:
Цитата Сообщение от enotik Посмотреть сообщение
9> W_pl(r):=W_pl(r)+W_pl(r):
Ибо с этой строчкой и без нее он выдает одно и тоже, просто значение результата на каждом шаге, а вот как сумму всех результатов записать, чтобы накопление шло, непонятно

Добавлено через 55 минут
Я исправила на:
Matlab M
1
2
W_plsum:=r->W_plsum(r)+W_pl(r):
evalf(W_plsum(3*a/2));
Но появляется ошибка :

Matlab M
1
Error, (in W_plsum) too many levels of recursion
0
Модератор
Эксперт по математике/физике
 Аватар для VSI
5291 / 4073 / 1392
Регистрация: 30.07.2012
Сообщений: 12,489
13.03.2014, 01:28
...too many levels of recursion - слишком много уровней рекурсии... При Вашем определении функции иначе и быть не могло!
0
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
13.03.2014, 01:31  [ТС]
При Вашем определении функции иначе и быть не могло!
т.е. накопить сумму невозможно?
0
Модератор
Эксперт по математике/физике
 Аватар для VSI
5291 / 4073 / 1392
Регистрация: 30.07.2012
Сообщений: 12,489
13.03.2014, 01:36
Начнем сначала.
Вам результат нужен в численном виде или в аналитическом?
Вложения
Тип файла: rar enotik_NEW_1.rar (801 байт, 8 просмотров)
0
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
13.03.2014, 01:39  [ТС]
В аналитическом.
В численном я его получу за 2 секунды имея аналитическое выражение.
0
Модератор
Эксперт по математике/физике
 Аватар для VSI
5291 / 4073 / 1392
Регистрация: 30.07.2012
Сообщений: 12,489
13.03.2014, 01:42
Я прикрепил файл к предыдущему сообщению... Посмотрите...
1
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
13.03.2014, 02:11  [ТС]
Решила проверить по численным значениям:

Если я в первый файл
Цитата Сообщение от VSI Посмотреть сообщение
enotik_NEW.rar (6.0 Кб, 1 просмотров)
Вставлю некоторые численные значения и после накопления попрошу выводить некоторое значение
W_p(3*a/2), то получится, что он его выводит не от суммы за n уже пройденных циклов, а от текущего цикла на каждом шаге (значения проверены при ручном подставлении параметров n без циклов)
Т е получается ничего он не накапливает
вот код:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
restart;
> D_pl:=E*h^3/(12*(1-mu^2));
> E:=10^5; mu:=0.3; q:=10; a:=100; h:=1;
> 
> for n from 5 to  27 by 2 do
> W:=r->A1*r^n+A2*r^(-n)+A3*r^(2+n)+A4*r^(2-n)+r^4*4*q/(Pi*n*(16-n^2)*(4-n^2)*D_pl*3):
> theta1:=r->D(W)(r):
> sol1:=(solve({W(a)=0,W(2*a)=0,theta1(a)=0,theta1(2*a)=0},{A1,A2,A3,A4})):
> W_pl:=r->subs(sol1,W(r))*sin(3*n*Pi/2):
> W_pl(r):=W_pl(r)+W_pl(r):
> evalf(W_pl(3*a/2));
> end do;
(сначала 32, потом -13, 5 , -2, +1.... - сумма в раоне 22 при грубом округлении)
А потом я подставлю те же численные значения в вариант 2
Цитата Сообщение от VSI Посмотреть сообщение
enotik_NEW_1.rar (801 байт, 0 просмотров)
И получу численное значение не равное сумме предыдущих

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
restart;
> 
> D_pl:=E*h^3/(12*(1-mu^2));
> E:=10^5; mu:=0.3; q:=10; a:=100; h:=1;
> for n from 5 to 27 by 2 do
> W:=r->A1*r^n+A2*r^(-n)+A3*r^(2+n)+A4*r^(2-n)+r^4*4*q/(Pi*n*(16-n^2)*(4-n^2)*D_pl*3):
> theta1:=r->D(W)(r):
> sol1:=(solve({W(a)=0,W(2*a)=0,theta1(a)=0,theta1(2*a)=0},{A1,A2,A3,A4})):
> W_pl:=r->subs(sol1,W(r))*sin(3*n*Pi/2):
> W_pl(r):=W_pl(r)+W_pl(r):
> end do:
> print(W_pl(3*a/2));
здесь сумма в раоне 3...

Возникает подозрение, что сумму он считает неправильно.
Или почему в первом случае он выводит W_pl(3*a/2) от каждого значения n отдельно в не накопление...?
0
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
14.03.2014, 20:56  [ТС]
Фух, теперь вроде все правильно считает
Осталлся последний вопрос.
После прохода всего цикла окончательную сумму в аналитическом виде он мне выдает, а вот при задании численных значений, последующую команду посчитать эту сумму от необходимого числа игнорирует.
Не подскажете, в чем причина?

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
restart;
> W_plsum(r):=0:
> for n from 3 to 17 by 2 do
> W:=r->A1*r^n+A2*r^(-n)+A3*r^(2+n)+A4*r^(2-n)+r^4*4*q/(Pi*n*(16-n^2)*(4-n^2)*D_pl*3):
> theta1:=r->D(W)(r):
> sol1:=(solve({W(a)=0,W(2*a)=0,theta1(a)=0,theta1(2*a)=0},{A1,A2,A3,A4})):
> W_pl:=r->subs(sol1,W(r))*sin(3*n*Pi/2):
> W_plsum(r):=W_plsum(r)+W_pl(r):
> end do:
> print(W_plsum(r));
> D_pl:=E*h^3/(12*(1-mu^2));
> E:=10^5; mu:=0.3; q:=10; a:=100; h:=1;
> simplify(evalf(W_plsum(3*a/2)));
0
Модератор
Эксперт по математике/физике
 Аватар для VSI
5291 / 4073 / 1392
Регистрация: 30.07.2012
Сообщений: 12,489
14.03.2014, 21:57
2 > W_plsum(r):=0:
А где определение ЭТОЙ функции?
И т.д., и т.п.
1
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
14.03.2014, 22:14  [ТС]
Цитата Сообщение от VSI Посмотреть сообщение
А где определение ЭТОЙ функции?
И т.д., и т.п.
вот тут
8 > W_plsum(r):=W_plsum(r)+W_pl(r):

Она же первоначально равна нулю, а потом пополняется на каждом шаге.
Ну да, как-то неправильно W_plsum(r):=0:
Но потом -то она становится зависимой от r.
0
Модератор
Эксперт по математике/физике
 Аватар для VSI
5291 / 4073 / 1392
Регистрация: 30.07.2012
Сообщений: 12,489
14.03.2014, 22:30
Но потом -то она становится зависимой от r
Неужели?
Наберите следующее...
Миниатюры
Цикл или функция  
1
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
15.03.2014, 15:22  [ТС]
Наберите следующее...
Набрала

Не понятно, в итоге-то зависимость
Цитата Сообщение от enotik Посмотреть сообщение
print(W_plsum(r));
он выводит правильно и выводит же.
А если не задать, что
Цитата Сообщение от enotik Посмотреть сообщение
W_plsum(r):=0:
, то выдается ошибка про "слишком много уровней рекурсий"

Добавлено через 16 часов 26 минут

Прошу прощение за надоедливость и высокий процент чуши в моих постах, но я до сих пор не могу понять, как организовать цикл накопления

Ошибка тут:
Matlab M
1
W_pl(r):=W_pl(r)+W_pl(r):
Т.к. на предыдущем шаге вычисляется W_pl(r) от конкретного параметра цикла, потом складывается сама с собой...

Было бы логично (наверное) ввести некую переменную, например A. И выше написанную сумму заменить на:
Matlab M
1
A:=0
в начале цикла, а затем она накапивает W_pl(r)
Matlab M
1
A:=A+W_pl(r)
И тут все замечательно. При вызове команды
Matlab M
1
print(A);
я получаю необходимую сумму.
Но не могу ее посчитать от определенного значения, например, r=a, так как А не зависит от r.
Потом я подумала, что можно создать функцию
Matlab M
1
В:=r->A
и присвоить ей значнение А.
Теперь у меня есть функция нужной суммы, зависящая от r.
Но тут опять что-то не так, ибо вычислить ее от конкретного выражения я не могу, при всех попыткая получаю, что выводит maple одно и тоже, что при r, что при а, т.е. :B(a)=B(r)
непонятно Почему B-то не работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.03.2014, 15:22
Помогаю со студенческими работами здесь

Разработать алгоритм с применением вложенных базовых структур «цикл с предусловием» или «цикл с постусловием», составить
Разработать алгоритм с применением вложенных базовых структур «цикл с предусловием» или «цикл с постусловием», составить и отладить...

Разработать алгоритм с применением вложенных базовых структур «цикл с предусловием» или «цикл с постусловием», составить
Разработать алгоритм с применением вложенных базовых структур «цикл с предусловием» или «цикл с постусловием», составить и отладить...

Одномерный массив(ЦИКЛ-ПОКА или ЦИКЛ-ДО)
Несколько школьников выстроились в шеренгу. Для каждого школьника известен день его рождения. Требуется определить, является ли...

Цикл с предусловием или цикл с постусловием
Разработать алгоритм с применением вложенных базовых структур «цикл с предусловием» или «цикл с постусловием», составить и отладить...

Цикл с предусловием или цикл с постусловием
Разработать алгоритм с применением вложенных базовых структур «цикл с предусловием» или «цикл с постусловием», составить и отладить...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru