• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Pascal. Програмирование итерационных процессов

  • Автор темы Автор темы LizarD
  • Дата начала Дата начала

LizarD

Ученик
Регистрация
11 Июн 2011
Сообщения
6
Реакции
0
Баллы
0
Pascal. Програмирование итерационных процессов

Воть: U=(1/x)+(1/R)*("знак суммы от бесконечности до n=0"(((n+1)*(a-b))/(n*a+b*(n+1)))*(c*x/R)^n
При R=2.5 a=5.0 b=1.5 c=2.0
x1=0.01 x2=0.02 x3=0.05 x4=0.07 x5=0.1 x6=0.2 x7=0.5 x8=0.7 x9=1.0
Извеняюсь, что формула в корявом виде, если посоветуете как более читаемо выложить её, так и сделаю ;)
Основная загвоздка в написании U

Моего понимания хватило только на следующее:
lb2-5.webp
делее предпологается использовать repeat...until...

Благодарю за прочтение, а тем более желание помочь :)
 
Если я правильно понял, и формула выглядит так:
frm.webp, и при этом (чего Вы не сообщили, а в условии должно быть) вычисление требуется произвести с заданной точностью (е), то я бы это дело решил так:
Код:
CONST
 R=2.5;
 a=5.0;
 b=1.5;
 c=2.0;
 x:Array[1..9] of Real=(0.01, 0.02, 0.05, 0.07, 0.1, 0.2, 0.5, 0.7, 1.0);
 e=0.000001;

VAR
 n:Array[1..9] of Word;
 U:Array[1..9] of Real;
 i,j:Integer;
 Sum,Q:Real;

BEGIN
 For i:=1 to 9 do
  Begin
   Sum:=(a-b)/b;
   j:=0;
   Repeat
    j:=j+1;
    Q:=(j+1)*(a-b)/(j*a+b*(j+1))*Exp(j*Ln(c*x[i]/R));
    Sum:=Sum+Q;
   Until Abs(Q)<e;
   n[i]:=j;
   U[i]:=(1.0/x[i])+Sum/R;
   Writeln('x[',i,']= ',x[i]:4:2,'    U[',i,']= ',U[i]:9:5,'   n= ',n[i]:3);
  End;
 Readln
END.
Выводятся x, U и число членов суммы.
 
Владимир, именно так!
Про точность я и не подумал.

В знаминателе (j-1)

Благодарю, Владимир!
 
Эти ошибки учат бить внимательным не только вас! :)
Спасибо...
 
Эти ошибки учат бить внимательным не только вас! :)
Спасибо...
Ага. Только тогда - еще одно исправление:
строку
S:=(a-b)/b;
следует заменить на
S:=(b-a)/b;
Потому что при j=0 в знаменателе не b, а (-b).
 
Назад
Сверху