Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ нахождение корня уравнения x=F(x)

Автор: xlinx 2.05.2007 22:03

я тут написала но похоже даже не то, я вообще ничего не понимаю в паскале, а надо сдавать уже курсовую, пожалуйста помогите написать программу, за рание огромное спасибо.

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

 
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 2.05.2007 22:23

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

Автор: volvo 2.05.2007 22:34

2) зачем изобретать заново то, что уже сделано?

http://forum.pascal.net.ru/index.php?showtopic=3789
Выбирай ...

Автор: xlinx 2.05.2007 22:37

Цитата(compiler @ 2.05.2007 18:23) *

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

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


Автор: compiler 2.05.2007 22:40

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

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

Автор: xlinx 2.05.2007 22:44

volvo спасибо огромное:)


Добавлено через 18 мин.
а что то что я написала вообще что ли не правильно???

Автор: xlinx 5.05.2007 17:37

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 5.05.2007 17:46

Цитата
откуда взялось вот это
Вот ЭТО - сама функция... В данном примере находили корень уравнения

f(x) = 2-x - 10 + 0.5x2

Автор: xlinx 5.05.2007 18:01

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

Добавлено через 2 мин.
Что такое "Exp" ??? и объясните мне пожалуйста вот эту запись: WriteLn('Корень равен x=', x:10:7);

Автор: volvo 5.05.2007 18:10

Цитата
а что можно любую функцию подставить что бы найти корень уравнения x=F(x)
А что, скажи мне на милость, у тебя такое F(X), если не заданная ТЕБЕ функция? Ты должна была получить функцию вместе с заданием...

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

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

Автор: xlinx 5.05.2007 18:15

функцию мне не дали, мне надо для общего вида сделать x=F(x)

спасибо большое что все объяснил =)