Проблемы с написанием программы на языке Турбо Паскаль
Помогите сделать курсовик.Написать программу на языке турбо паскаль. Тема: "Решение квадратных уравнений методом Ньютона" Помогите пожалуйста. Я её написал так;
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. помогите как правильно написать |
Цитата:
|
Меня все устраивает, дело в том что препад сказал, что вот этого не должно быть: write ('Введите левую и правую границы интервала:'); а нужно чтобы выводил: Ввести значения (a,b,c), как он написал где то так: readln(a,b,c) со значением Х0, приближенной (эпсило) и производной f'=2ax+b. А как это вбить и куда я буз понятия. Помогите пожалуйста
|
Вложений: 1
Цитата:
Кстати, в программе есть одна... скажем так, шероховатость. Параметр en у Вас дважды ставится под оператор abs - при вычислении и в условии цикла. Это излишне - достаточно первого. А в цикле while en>e. А преподу можете сообщить, что он Вложение 39043. |
Рушение квадратного уравнения методом ньютона
Помогите пожалуйста с программой. Тема решение квадратных уравнений методом ньютона. вот что у меня получилось:
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 с шага}
|
Часовой пояс GMT +4, время: 03:08. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.