Помощь - Поиск - Пользователи - Календарь
Полная версия: нахождение корня уравнения x=F(x)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
xlinx
я тут написала но похоже даже не то, я вообще ничего не понимаю в паскале, а надо сдавать уже курсовую, пожалуйста помогите написать программу, за рание огромное спасибо.

То что написала я (позориться даже не хочется) только не смейтесь :'(

 
uses crt;

var
ep:extended;
tx:extended;
eps:extended;
x0:extended;

function f(x:extended):extended;
begin
f:=ln(x)+x*x;
end;

begin
clrscr;
write('Eps= ');
readln(eps);
ep:=1.;
tx:=0.00001;
writeln('X':10,'eps':10);
repeat
while (f(tx)*f(tx+ep)>0) do tx:=tx+ep;
ep:=ep/2;
x0:=tx+ep;
if (f(x0)=0) then
begin
writeln('Exact root: ',x0:10:6);
halt(0);
end;
writeln(x0:10:6,ep:10:6);
until (ep<eps);
readln;
end.


.


так или нет?? если нет, то помогите пожалуйста написать
compiler
1) возьми пожалуйста код в теги...
volvo
2) зачем изобретать заново то, что уже сделано?

Численные методы решения уравнений
Выбирай ...
xlinx
Цитата(compiler @ 2.05.2007 18:23) *

1) возьми пожалуйста код в теги...

что сделать?? :'( я вообще ничего не знаю и не понимаю, поэтому и прошу помощи, все что я смогла-я написала

compiler
Цитата(xlinx @ 2.05.2007 18:37) *
что сделать?? :'( я вообще ничего не знаю и не понимаю, поэтому и прошу помощи, все что я смогла-я написала

при регистрации ставила галочку что прочитала правила?
5. Используйте теги кода и цитаты!
Если вы выкладываете код, заключите его в теги [code=pas] < ваш код > [/code]. ...
xlinx
volvo спасибо огромное:)


Добавлено через 18 мин.
а что то что я написала вообще что ли не правильно???
xlinx
1.Метод дихотомии (деления отрезка пополам)
Программа находит корень уравнения F(x) = 0, где F(x) - непрерывная на отрезке [a,b] функция, удовлетворяющая условию F(a)F(B) < 0. Для нахождения корня отрезок [a,b] делится пополам и выбирается тот полуинтервал, на концах которого знаки F(x) разные. Затем процесс деления повторяется до тех пор, пока длина интервала не станет меньше Eps.

Uses Crt;

Function f(x: Double): Double;
Begin
f := 1 / (Exp(x * Ln(2))) - 10 + 0.5*Sqr(x)
End;

Var
x, Eps, a, b, c: Double;
n: Integer;

begin
ClrScr;
Writeln('Введите значения a и b'); Read(a, b);
WriteLn('Введите точность Eps'); Read(Eps);

n := 0;
Repeat
c := (a + b) / 2;
If (f(a) * f©) < 0 Then b := c
Else a := c;
Inc(n)
Until (b - a) <= Eps;

x := (a + b) / 2;
WriteLn('Корень равен x=', x:10:7);
WriteLn('Количество делений = ',n);
ReadKey
end.

объясните мне пожалуйста как это сделали, я ничего не поняла, пожалуйста..
откуда взялось вот это f := 1 / (Exp(x * Ln(2))) - 10 + 0.5*Sqr(x) ???
volvo
Цитата
откуда взялось вот это
Вот ЭТО - сама функция... В данном примере находили корень уравнения

f(x) = 2-x - 10 + 0.5x2
xlinx
а что можно любую функцию подставить, что бы найти корень уравнения x=F(x) ???

Добавлено через 2 мин.
Что такое "Exp" ??? и объясните мне пожалуйста вот эту запись: WriteLn('Корень равен x=', x:10:7);
volvo
Цитата
а что можно любую функцию подставить что бы найти корень уравнения x=F(x)
А что, скажи мне на милость, у тебя такое F(X), если не заданная ТЕБЕ функция? Ты должна была получить функцию вместе с заданием...

Exp(x) - это запись ex на языке программирования Паскаль...

WriteLn('Корень равен x=', x:10:7); 
Что непонятно? Печатается фраза "Корень равен x=", следом за ней - выводится значение X, в 10 позициях, из которых 7 - после запятой (точность представления числа - 7 знаков после запятой).
xlinx
функцию мне не дали, мне надо для общего вида сделать x=F(x)

спасибо большое что все объяснил =)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.