• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Проблемы с написанием программы на языке Турбо Паскаль

Регистрация
25 Май 2011
Сообщения
3
Реакции
0
Баллы
0
Проблемы с написанием программы на языке Турбо Паскаль

Помогите сделать курсовик.Написать программу на языке турбо паскаль. Тема: "Решение квадратных уравнений методом Ньютона" Помогите пожалуйста. Я её написал так;

program Newton;
uses crt; {модуль управления экраном}

function f(x:real):real; {Исходная функция}
begin
f:=3*sqr(x)-4*x-2;
end;

function f1(x:real):real; {Первая производная функции}
begin
f1:=6*x-4;
end;

var a,b,x,e,en:real;
i:integer;

begin
clrscr; {очистить экран}
writeln ('Решение нелинейного уравнения методом Ньютона');
writeln ('Уравнение 3x^2-4x-2=0');
write ('Введите левую и правую границы интервала:');
read (a,b);
write ('Введите требуемую точность решения:');
read (e);
writeln ('Решение:');
writeln ('Номер шага Значение X');
en:=abs(a-b);
x:=b;
i:=1;
while (abs(en)>e) do begin {Пока не достигнута точность}
x:=x-f(x)/f1(x); {выполнить шаг метода}
writeln (i:10,x:20:14); {вывести значение X с шага}
en:=abs(x-b); {Новая точность}
b:=x; {Значение границы для следующего шага}
i:=i+1; {Номер шага}
end;
end.

помогите как правильно написать
 
помогите как правильно написать
Дима, а что Вас не устраивает? Всё и так правильно. Единственное - перед самым последним закрывающим программу "end." желательно вставить оператор readln; (как есть без параметров), тогда она в конце остановится и покажет экран с результатами. До нажатия "Enter".
 
Меня все устраивает, дело в том что препад сказал, что вот этого не должно быть: write ('Введите левую и правую границы интервала:'); а нужно чтобы выводил: Ввести значения (a,b,c), как он написал где то так: readln(a,b,c) со значением Х0, приближенной (эпсило) и производной f'=2ax+b. А как это вбить и куда я буз понятия. Помогите пожалуйста
 
А как это вбить и куда я буз понятия.
Дима, я, увы, тоже "буз" понятия. Особенно в отношении производной. У Вас всё сделано грамотно, производная оформлена в виде функции - так какого ж еще лешего? А что касается стартовой точки и точности, то как их вводить (вместе либо поврозь) - дело и право каждого программиста. Извините, но тратить время на разгадывание придурей преподов-самодуров я не могу.
Кстати, в программе есть одна... скажем так, шероховатость. Параметр en у Вас дважды ставится под оператор abs - при вычислении и в условии цикла. Это излишне - достаточно первого. А в цикле while en>e.
А преподу можете сообщить, что он pisss.gif.
 
Рушение квадратного уравнения методом ньютона

Помогите пожалуйста с программой. Тема решение квадратных уравнений методом ньютона. вот что у меня получилось:
program Newton;
uses crt; {модуль управления экраном}

function f(x:real):real; {Исходная функция}
begin
f:=3*sqr(x)-4*x-2;
end;

function f1(x:real):real; {Первая производная функции}
begin
f1:=6*x-4;
end;

var a,b,c,x₀,e,en:real;
i:integer;

begin
clrscr; {очистить экран}
writeln ('Решение нелинейного уравнения методом Ньютона');
readln (a,b,c,x₀, Ɛ);
writeln ('Уравнение 3x^2-4x-2=0');
write ('Введите требуемую точность решения:');
read (e);
writeln ('Решение:');
writeln ('Номер шага Значение X');
en:=abs(a-b);
x₀:=b;
i:=1;
while (abs(en)>e) do begin {Пока не достигнута точность}
x₀:=x₀-f(x₀)/f1(x₀); {выполнить шаг метода}
writeln (i:10,x₀:20:14); {вывести значение X с шага}
en:=abs(x₀-b); {Новая точность}
b:=x₀; {Значение границы для следующего шага}
i:=i+1; {Номер шага}
end;
end.

Помогите пожалуйста, скажите что не так, так Нужно как то преобразовать производную (f'=2ax+b) в нужную форму и если не ошибаюсь записать её куда то сюда
x₀:=x₀-f(x₀)/f1(x₀); {выполнить шаг метода}
writeln (i:10,x₀:20:14); {вывести значение X с шага}

[MOD2]Дима, у Вас же есть своя тема по этой задаче - за каким дьяволом Вы лезете в чужие?
Сообщение перемещно.
Модератор.[/MOD2]
 
Назад
Сверху