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

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

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

> Численное интегрирование
Account
сообщение 2.01.2009 21:47
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Account
сообщение 3.01.2009 14:39
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 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 - 3.01.2009 19:24
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 21.06.2025 14:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"