Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 11.03.2015, 14:12   #1 (permalink)
Максим777999
Новичок
 
Регистрация: 11.03.2015
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Программирование в Паскале, для функции разработать и протестировать программу

Добрый день, прошу помощи с написание программ в паскале или напишите похожие примеры на мое уравнение, буду благодарен
Для функции разработать и протестировать программу, выполняющую:
1.нахождение всех действительных корней уравнения на отрезке [a; b], если таковые имеются (решение соответствующего уравнения выполнить с точностью до e=0,0001 одним из численных методов: хорд, не более, чем за 20 итераций.
2. вычисление определенного интеграла f(x) на интервале табулирования [a; b] одним из перечисленных методов: правых прямоугольников.
x^4 + 0.5x^3 – 4x^2 – 3x – 0.5 = 0
интервал [–1, 0]
Заранее спасибо.
Максим777999 вне форума   Ответить с цитированием

Старый 11.03.2015, 14:12
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Подобные темы уже встречались на форуме, пролистайте их

Программирование функции 1/х
Разработать программу шифрования текстовых файлов, Паскаль
Разработать программу в среде Delphi
Разработать программу с использованием и без использовая динамических структур данных
Программирование функции

Старый 11.03.2015, 16:24   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,347
Сказал(а) спасибо: 288
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от Максим777999 Посмотреть сообщение
Добрый день, прошу помощи с написание программ в паскале или напишите похожие примеры на мое уравнение, буду благодарен
Для функции разработать и протестировать программу, выполняющую:
1.нахождение всех действительных корней уравнения на отрезке [a; b], если таковые имеются (решение соответствующего уравнения выполнить с точностью до e=0,0001 одним из численных методов: хорд, не более, чем за 20 итераций.
2. вычисление определенного интеграла f(x) на интервале табулирования [a; b] одним из перечисленных методов: правых прямоугольников.
x^4 + 0.5x^3 – 4x^2 – 3x – 0.5 = 0
интервал [–1, 0]
Заранее спасибо.
Ладно, пожалуйста.
Вопрос о методах численного решения алгебраических уравнений подробно рассмотрен здесь: К вопросу о численном решении алгебраических уравнений
Как там и сказано, начнем с анализа функции с целью определения количества корней и их приближенно-грубых значений, для чего построим график в указанном интервале:
auau.jpg
Как видно из графика, есть два корня, приблизительно равные -0.5 и -0.25. Точные значения их будем искать в интервалах [-0.6; -0.4] и [-0.3; -0.2], соответственно.
Ну и вот программа:
Код:
Const
 Eps=0.0001;
 a=-1.0;
 b=0.0;

Var
 Res:Real;
 N:Integer;

Function F(z:real):Real;
begin
 F:=Sqr(Sqr(z))+0.5*z*Sqr(z)-4.0*Sqr(z)-3.0*z-0.5;
end;

Function Antiderivative(Q:real):Real;
begin
 Antiderivative:=0.2*Q*Sqr(Sqr(Q))+0.125*Sqr(Sqr(Q))-(4.0/3)*Q*Sqr(Q)-1.5*Sqr(Q)-0.5*Q;
end;

Procedure EQRoot(a1,b1:real; var R:real; var m:Integer);
var
 x1,x2,d,c:real;
 k:Integer;
begin
 k:=0;
 c:=a1;
 x1:=b1;
 Repeat
  x2:=x1-F(x1)*(x1-c)/(F(x1)-F(c));
  d:=abs(x1-x2);
  x1:=x2;
  Inc(k);
 Until d<Eps;
 R:=x2;
 m:=k;
end;

Procedure Integral(var R:Real; var m:Integer);
var
 h,S1,S2,d:real;
 p,k,i:Integer;
begin
 k:=0;
 p:=10;
 S1:=0;
 h:=(b-a)/p;
 for i:=0 to p-1 do S1:=S1+h*F(a+h*i);
 repeat
  S2:=0;
  p:=p+10;
  Inc(k);
  h:=(b-a)/p;
  for i:=0 to p-1 do S2:=S2+h*F(a+h*i);
  d:=Abs(S2-S1);
  S1:=S2;
 until d<Eps;
 R:=S2;
 m:=k;
end;

Begin
 Writeln('Roots: ');
 EQRoot(-0.6,-0.4,Res,N);
 Writeln('X1 = ',Res:8:5,',   ',N,' iterations');
 EQRoot(-0.3,-0.2,Res,N);
 Writeln('X2 = ',Res:8:5,',   ',N,' iterations');
 Writeln;
 Writeln('Integral:');
 Writeln('Numerical:');
 Integral(Res,N);
 Writeln(Res:0:5,',   ',N,' iterations');
 Writeln('Accurate:');
 Writeln((Antiderivative(b)-Antiderivative(a)):0:5);
 Readln
End.
А это - результат:
aa01.jpg
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 11.03.2015, 19:00   #3 (permalink)
Максим777999
Новичок
 
Регистрация: 11.03.2015
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Это метод хорд??? или сразу вместе метод хорд с методом правых прямоугольников?
Максим777999 вне форума   Ответить с цитированием
Старый 11.03.2015, 19:59   #4 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,347
Сказал(а) спасибо: 288
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от Максим777999 Посмотреть сообщение
Это метод хорд??? или сразу вместе метод хорд с методом правых прямоугольников?
О, Боже!
Методом хорд найдены корни уравнения.
Методом прямоугольников вычислен интеграл.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 20:48.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.