IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Численное интегрирование
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Дана функция f(x)=x*exp(x)*sin(x) интервал [0;3]. Методом прямоугольников вычислить интеграл. Побыстрому накидал (не оптимизировал)))). Вот программа
uses crt;
var
f:real;
x:real;
i:integer;
a,b:real;
begin
clrscr;
b:=3;
while (x < 2.97) do
begin
f:=f+(x*exp(x)*sin(x));
writeln('x= ',x:2:5,' | f(x)= ',f:2:2);
x:=x+0.03;
i:=i+1;
end;
writeln('--------------');
writeln('Itog: f(x) = ',((b-a)/100)*f:2:2);
{writeln('i=', i);}
readkey;
end.


только вот как проверить? нет у меня ни одного готового примера))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Все,проверил с помощью метода трапецийsmile.gif(результаты положительные))))

P.S. Извиняюсь перед админом за 2 поста подряд, думал он добавит к первому, как произошло ранее в другой теме), а получилось отдельным постом(

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Account @ 2.01.2009 23:30) *
Все,проверил с помощью метода трапецийsmile.gif(результаты положительные))))
Это не очень хорошая проверка, ибо так ты не проверяешь логику всей программы. Лучше будет, если ты подставишь вместо данной функции такую, которая интегрируется по формулам - например, x или x^2.

Цитата(Account @ 2.01.2009 23:30) *
P.S. Извиняюсь перед админом за 2 поста подряд, думал он добавит к первому, как произошло ранее в другой теме), а получилось отдельным постом(
Непонятно, за что ты извиняешься. Разве что-то на эту тему есть в Правилах? blink.gif Пость сколько угодно, если это не флуд.
А объединяются (причем автоматически) сообщения, которые были отосланы не позже, чем через 20 мин.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Lapp
Цитата
Это не очень хорошая проверка, ибо так ты не проверяешь логику всей программы. Лучше будет, если ты подставишь вместо данной функции такую, которая интегрируется по формулам - например, x или x^2

Спасибо за совет. Учел, и подставил как ты и советовал x и x^2. Результаты также положительны. smile.gif (теперь надо делать более привлекательный код программыsmile.gif и еще метод парабол заделать, а мне он что то не очень нравитсяsmile.gif) (Тяжело вспоминать математику, занимался 4 года назад ейsmile.gif)

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Нужно решить уравнение методом Ньютона 1-0.4x-arcsin(x)=0. интервал [0;1]. Как представить арксинус?

А пока решал темже методом следующее уравнение exp(x)-x^2=0 интервал [-2,0], вот что вышло

uses crt;
function kor(x,b,eps:double):real;
var
y,d_y:real;
begin
y:=x-((exp(x)-sqr(x))/(exp(x)-2*x));
x:=x+0.0001;
d_y:=x-((exp(x)-sqr(x))/(exp(x)-2*x));
while (abs(d_y-y) >=eps) and (x<=0) do
begin
writeln('--------------------------------------------------');
writeln('x= ',x:5:5,' | exp= ',abs(d_y-y):5:8,' | f= ',exp(x)-sqr(x):5:8);
y:=d_y;
x:=x+0.0001;
d_y:=x-((exp(x)-sqr(x))/(exp(x)-2*x));
end;
end;

var
a,x,b:real;
y,d_y:real;
begin
clrscr;
kor(-2,0,10E-8);
readkey;
end.

;
Но проблема в следующем, если уменьшить точность eps до 10E-5, все код неработате, нужно уменьшать шаг. Можно ли как нито избавится от зависимости шаг-точность?


Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 22:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name