13.04.2014, 22:15 | #11 (permalink) |
Новичок
Регистрация: 13.04.2014
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
|
13.04.2014, 22:15 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Пока люди думают, что вам ответить вы можете ознакомиться с подобными темами Нужна помощь с программой расчета колебаний струны Помогите пожалуйста с программой на строки. Паскаль |
13.04.2014, 22:31 | #12 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
1. В п/п COR вместо x ввести real x1, x2, dif. 2. В начале п/п присвоить x1=a, dif=a. 3. вместо do while(abs(xl-xp)>e.and..not.p) записать do while(dif>e.and..not.p) 4. вместо x=xp-v*(xl-xp)/(u-v) записать x2=xp-v*(xl-xp)/(u-v) 5. Далее вместо d=f(x) xl=x xp=x записать d=f(x2) xl=x2 xp=x2 6. В конце цикла while добавить dif=abs(x2-x1) x1=x2 7. Вместо cor=x поставить cor=x2 Как-то так. Попробуйте. |
|
13.04.2014, 23:01 | #14 (permalink) |
Новичок
Регистрация: 13.04.2014
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
так должно получиться?
Код:
real function COR(f,a,b,e) external F real x1,x2,e,f,xl,xp,u,v,d,dif,a,b logical P xl=a xp=b U=f(xl) v=f(xp) x1=a p=.false. do while(abs(xl-xp)>e.and..not.p) x2=xp-v*(xl-xp)/(u-v) d=f(x2) if((u*d)>0)then xl=x2 u=d else if((u*d)<0)then xp=x2 v=d else p=.true. endif endif dif=abs(x2-x1) x1=x2 enddo cor=x2 return end |
14.04.2014, 08:23 | #15 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
16.04.2014, 00:06 | #16 (permalink) |
Новичок
Регистрация: 13.04.2014
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
а теперь корень всегда получается равен 0
Код:
real function COR(f,a,b,e) external F real x1,x2,e,f,xl,xp,u,v,d,dif,a,b logical P xl=a xp=b U=f(xl) v=f(xp) x1=a p=.false. dif=a do while(dif>e.and..not.p) x2=xp-v*(xl-xp)/(u-v) d=f(x2) if((u*d)>0)then xl=x2 u=d else if((u*d)<0)then xp=x2 v=d else p=.true. endif endif dif=abs(x2-x1) x1=x2 enddo cor=x2 return end |
16.04.2014, 12:00 | #17 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Уважаемый mp_12332, к сожалению, я не обладаю ни достаточными знаниями Фортрана, ни даже Фортран-транслятором, а потому провести за Вас полную отладку программы не могу. Так что Вы уж сами. С моей точки зрения, подпрограммы у Вас в #16 и у меня в #7 полностью идентичны. Ниже я привожу результат работы моей Паскаль-программы. Колонки соответствуют параметру-корню-интегралу. Что касается Ваших "нулей", то единственное, что могу предположить - ошибка в операции вывода на экран (что-то не то выводите). Проверяйте.
|
16.04.2014, 19:00 | #18 (permalink) | ||
Новичок
Регистрация: 16.04.2014
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите, пожалуйста, не могу разобрать 2 задачи в программе Паскаль
Третья и пятая задача. Вообще...
|
||
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|