Помощь - Поиск - Пользователи - Календарь
Полная версия: Прога решения уравнений
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
dron4ik
Всем привет!

Дана следующая задача;

Составить программму на любом языке программирования и с ее помощью решить уравнение с точностью равную до тысячных E=0.001 б=0.01 Уравнение 3cos2x-x+0.25 х принадлежит [-2.5;-1,8]

Я выяснил что уравнение корней не имеет!!! т.к найдя производную этого уравнение и подставляя значение -2.5 и -1.8 получается что в двух случаях уравнение имеет знак плюс!!!



Написал прогу на Делфи но у меня она не запускается(((((((((((( Может кто предложит более простой вариант? Я еще не организовал как задать точность(((

код проги:



var
Form1: TForm1;
x1, n,p,b,rez,rezu,t,y,u,q:integer;
x2, x3,f,h,c,w,e: extended;
s, red,per:string;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
x1:=3;
n:=-5;
x2:=2.5;
x3:=0.25;
s:= IntToStr(x1)+'cos'+IntToStr(n)+'+'+FloatToStr(x2)+'+'+FloatToStr(x3)+'=';
label1.Caption:=s;
p:= StrToInt (3*cos(-5)+ StrToFloat (2.5+0.25);
Label2.Caption:=IntToStr(p);
end;
begin
b:=3;
c:=-3.6;
f:=1.8;
h:=0.25;
red:= IntToStr(b)+'cos'+FloatToStr©+'+'+FloatToStr(f)+'+'+FloatToStr(h)+'=';
label3.Caption:=red;
rez:= StrToFloat (3*cos(-3.6)+ StrToFloat (1.8+0.25);
Label4.Caption:=FloatToStr(rez);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
t:=-6;
y:=-5;
u:=-5;
per:=IntToStr(t)+'sin'+IntToStr(y)+'*'+'cos'+IntToStr(u)+'=';
Label5.Caption:=per;
rezu:=StrToInt (-6*sin(-5)* cos(-5));
Label6.Caption:=IntToStr(rezu);
ShowMessage('uraveneie ne imeet kornei');

end;
begin
q:=-6;
w:=-3.6;
e:=-3.6;
per:=IntToStr(q)+'sin'+FloatToStr(w)+'*'+'cos'+FloatToStr(e)+'=';
Label7.Caption:=per;
rezu:=FloatToStr (-6*sin(-3.6)* cos(-3.6));
Label8.Caption:=StrToFloat(rezu);
ShowMessage('uraveneie ne imeet kornei);

end.

Добавлено через 5 мин.
В этом коде полно проблем с переводом типов данных и почему то ошибки выдает с лейбелами
volvo
Цитата
Я выяснил что уравнение корней не имеет!!!
Смотря какое уравнение. Если 3cos2x-x+0.25=0, то неправда...

X = -1.9455 - вот корень с точностью 0.001.
Проверяем: 3*cos(-3.891) - (-1.9455) + 0.25 = -2.19628 + 1.9455 + 0.25 (дальше сам посчитаешь?)

Цитата
Может кто предложит более простой вариант?
Самый простой вариант - консольное приложение.
program Project1;
{$APPTYPE CONSOLE}

function f(x: real): real;
begin
f := 3 * cos(2*x) - x + 0.25;
end;

var
x, y: real;
found: boolean = false;

begin
x := -2.5;
while x <= -1.8 do begin
y := f(x);
if abs(y) < 0.001 then begin
writeln('X = ', X:12:6, ' Y = ', Y:12:6); found := true;
end;
x := x + 0.0005;
end;

if not found then writeln('no roots...');
readln;
end.
dron4ik
Это на каком языке написано? это уравнение не имеет корней при х=-2.5 и -1.8
volvo
А это на каком языке написано?
Цитата
Уравнение 3cos2x-x+0.25 х принадлежит [-2.5;-1,8]
ГДЕ здесь написано, что надо найти решение при x=-2.5 и x=-1.8? Написано, что X принадлежит ИНТЕРВАЛУ от -2.5 до -1.8

Разницу видишь?
dron4ik
Если даже сделать чертеж то эти два графика не пересекаются! а значит нет корней

Добавлено через 2 мин.
А как запустить этот код? в проге

Добавлено через 46 сек.
Я не знаю консольный режим(((((( в делфи
samec
Цитата(dron4ik @ 13.11.2008 1:02) *

Если даже сделать чертеж то эти два графика не пересекаются! а значит нет корней

Какие два графика то?
Дано уравнение, дан интервал - уравнение одно - откуда тогда второй график?. В пост прекрепил Excel-евский файлик - там график, посмотри - сам всё увидишь smile.gif

Цитата(dron4ik @ 13.11.2008 1:02) *

А как запустить этот код? в проге


Открываешь Delphi, затем File -> New -> Other -> Console Application.
Вставляешь туда написаный volvo код -> F9 -> и всё работает smile.gif
dron4ik
Там получаеотся два графика из одного уравнения! 3cos2x и x-0.25 нарисуй их и поймешь что они не пересекаются
volvo
Цитата
3cos2x и x-0.25 нарисуй их и поймешь что они не пересекаются
Да какие, блин, два графика??? Ты бы еще отдельно 3cos2x, отдельно x, и отдельно 0.25 рисовал? Чего ж ты одно отделил, а другое - нет? Срочно читать учебник математики, и уяснять разницу между понятиями "уравнение" и "система уравнений"

Тебе заданы 2 линии: первая - график функции y=3cos2x-x+0.25, вторая - y=0. Пересечение их дает тебе решение уравнения 3cos2x-x+0.25=0 Если это непонятно, то говорить дальше просто не о чем, жаль времени. dry.gif
Lapp
Цитата(volvo @ 13.11.2008 9:57) *
Да какие, блин, два графика???

volvo, я не вполне понимаю твое возмущение. dron4ik просто перенес два слагаемых в правую часть:

3cos2x = x - 0.25

- и интерпретирует уравнение как равенство двух частей (графиков). Подход вполне имеет право на жизнь. Я, правда, не рассматривал сами графики, так что не знаю, есть ли решение (пересечение) на самом деле, но метод абсолютно верный. Перенос тоже произведен верно (со сменой знака).
Я что-то упускаю?.. blink.gif
volvo
Цитата
Я, правда, не рассматривал сами графики, так что не знаю, есть ли решение (пересечение) на самом деле
Ну, так посмотри:
program Project1;
uses graph;

function f1(x: real): real;
begin
f1 := 3 * cos(2*x);
end;

function f2(x: real): real;
begin
f2 := x - 0.25;
end;

const
found: boolean = false;
var
x, y1, y2: real;

gd, gm: smallint;

begin
initgraph(gd, gm, '');
x := -2.5;
while x <= -1.8 do begin
y1 := f1(x); y2 := f2(x);

putpixel((getmaxx div 2) + trunc(x*50),
(getmaxx div 2) + trunc(y1*50), lightred);
putpixel((getmaxx div 2) + trunc(x*50),
(getmaxx div 2) + trunc(y2*50), lightgreen);

if abs(y1 - y2) < 0.001 then begin
writeln('X = ', X:12:6, ' Y1 = ', Y1:12:6, ' Y2 = ', Y2:12:6); found := true;
end;
x := x + 0.0005;
end;

if not found then writeln('no roots...');
readln;
end.


(сами графики + результат в аттаче)

Цитата
метод абсолютно верный. Перенос тоже произведен верно (со сменой знака).
Я не телепат, и методов, которыми при правильно произведенном переносе и правильном построении графиков можно получить НЕправильный результат, я не знаю. Автор утверждал, что
Цитата
3cos2x и x-0.25 нарисуй их и поймешь что они не пересекаются
? Утверждал. Нарисовал я их. Они пересекаются... Что дальше? (это вопрос автору топика)
Lapp
Ну, наверное, человек ошибся при рисовании графиков. Мне кажется, это не повод отсылать его..
Цитата(volvo @ 13.11.2008 9:57) *
Срочно читать учебник математики, и уяснять разницу между понятиями "уравнение" и "система уравнений"
dron4ik
Как могут пересечся эти два графика?????? если мы берем значения от [-2.5 , -1.8]

Делал вручную они не пересекаются!!!!! значит нет корней а выясняем мы с помощью производной которую берем от уравнения 3 * cos(2*x)-X+0.25

Добавлено через 19 мин.
Посмотрите ваши график противоположен моему!
dron4ik
Точно они пересекаются извините за ошибку
do you need a prescription for p
Chlamydia Pills Online
nishaknapp
Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. 4 Tips for Online Casino Players to Remember
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.