Помогите, пожалуйста, найти ошибку
Program zet;
Const E=0.01;z=0.5;P_sr=105;SB=5;SA=8;
Var a,b,A_sm,B_sm,c,f_a,f_b,f_c,g,c_st:real;
function fz(a,b,c:real):real;
begin
fz:=exp(3*ln(z))-exp(2*ln(z))+z*P_sr*(-exp(2*ln(SB))*P_sr-P_sr+exp(2*ln(SA)))-exp(2*ln(SA))*SB*exp(2*ln(P_sr))
end;
Begin
a:=0;
b:=1;
c:=(a+b)/2;
Repeat
f_a:=fz(a);
f_b:=fz(b);
f_c:=fz(c);
g:=f_b*f_c;
if g>0 then b:=c
else a:=c;
c_st:=c;
c:=(a+b)/2;
Until (c-c_st)<E
End.
Другие языки программирования и технологии
Pascal, код программы
В чём проблема?
На какой вы элементарные произведения засовываете в экспоненциально-лагорифмические обёртки?
Из свойства степени:
x²=x·x
x³=x·x·x
xⁿ=x·x·…·x, где n раз перемножаем x
Значит:
exp(3*ln(z)) = z*z*z
exp(2*ln(z)) = z*z
-exp(2*ln(SB) = -SB*SB
exp(2*ln(SA)) = SA*SA
exp(2*ln(P_sr)) = P_sr*P_sr
Итого, ваша длинная формула
fz:=exp(3*ln(z))-exp(2*ln(z))+z*P_sr*(-exp(2*ln(SB))*P_sr-P_sr+exp(2*ln(SA)))-exp(2*ln(SA))*SB*exp(2*ln(P_sr))
превращается
fz:=z*z*z - z*z + z*P_sr*(-SB*SB*P_sr - P_sr + SA*SA) - SA*SA*SB*P_sr*P_sr
При чём, у вас в формуле присутствует какая-то переменная z, которая ранее (да и позднее) ни где в программе не упоминается…
Осмелюсь предположить, что заголовок вашей функции должен выглядеть вот так:
function fz(z:real):real;
Тогда он будет согласовываться с её вызовом:
f_a:=fz(a);
f_b:=fz(b);
f_c:=fz(c);
Ну, а уже правильно или не правильно — это вам решать, ибо мы не видели исходного задания!
Из свойства степени:
x²=x·x
x³=x·x·x
xⁿ=x·x·…·x, где n раз перемножаем x
Значит:
exp(3*ln(z)) = z*z*z
exp(2*ln(z)) = z*z
-exp(2*ln(SB) = -SB*SB
exp(2*ln(SA)) = SA*SA
exp(2*ln(P_sr)) = P_sr*P_sr
Итого, ваша длинная формула
fz:=exp(3*ln(z))-exp(2*ln(z))+z*P_sr*(-exp(2*ln(SB))*P_sr-P_sr+exp(2*ln(SA)))-exp(2*ln(SA))*SB*exp(2*ln(P_sr))
превращается
fz:=z*z*z - z*z + z*P_sr*(-SB*SB*P_sr - P_sr + SA*SA) - SA*SA*SB*P_sr*P_sr
При чём, у вас в формуле присутствует какая-то переменная z, которая ранее (да и позднее) ни где в программе не упоминается…
Осмелюсь предположить, что заголовок вашей функции должен выглядеть вот так:
function fz(z:real):real;
Тогда он будет согласовываться с её вызовом:
f_a:=fz(a);
f_b:=fz(b);
f_c:=fz(c);
Ну, а уже правильно или не правильно — это вам решать, ибо мы не видели исходного задания!
Ну про параметры тебе рассказали, ок. рассмотрим твою функцию
Const E=0.01;z=0.5;P_sr=105;SB=5;SA=8;
function fz(a,b,c:real):real;
begin
fz:=exp(3*ln(z))-exp(2*ln(z))+z*P_sr*(-exp(2*ln(SB))*P_sr-P_sr+exp(2*ln(SA)))-exp(2*ln(SA))*SB*exp(2*ln(P_sr))
end;
она представляет собой одну довольно запутанную формулу, в которой никак не принимают участие переменные a,b и c. Если я просмотрел место где они участвуют - ткни меня в него. Если они не участвуют, то на фига их передавать в функцию? А если нечего передавать, то значение fz можно вычислить один раз и навсегда. считай объявить ту же константу
Но судя по всему зависимость должна быть. иначе вот это совсем выглядит чушью
Repeat
f_a:=fz(a);
f_b:=fz(b);
f_c:=fz(c);
Const E=0.01;z=0.5;P_sr=105;SB=5;SA=8;
function fz(a,b,c:real):real;
begin
fz:=exp(3*ln(z))-exp(2*ln(z))+z*P_sr*(-exp(2*ln(SB))*P_sr-P_sr+exp(2*ln(SA)))-exp(2*ln(SA))*SB*exp(2*ln(P_sr))
end;
она представляет собой одну довольно запутанную формулу, в которой никак не принимают участие переменные a,b и c. Если я просмотрел место где они участвуют - ткни меня в него. Если они не участвуют, то на фига их передавать в функцию? А если нечего передавать, то значение fz можно вычислить один раз и навсегда. считай объявить ту же константу
Но судя по всему зависимость должна быть. иначе вот это совсем выглядит чушью
Repeat
f_a:=fz(a);
f_b:=fz(b);
f_c:=fz(c);
Похожие вопросы
- помогите, кому не трудно, перевести с языка Pascal на язык СИ код программы
- Turbo Pascal! Код ASCII, какой код у ESC и как он (вообще любой код ASCII) изображаеться в программе???
- Pascal перевести программу на подпрограмму.
- Нужно перевести код программы с Pascal на visual basic(пожалуйста, завтра очень нужно)
- Pascal-Напишите программу: ввод полные ФИО, вывод полное Ф и инициалы И. О. Можно ли упростить то что получилось у меня?)
- Помогите исправить ошибку в коде программы на паскале.
- Напишите пожалуйста 2 программы в pascal ABC, программы в описании
- Помогите исправить ошибку в коде программы, пожалуйста!
- помогите пожалуйста с кодами программ в паскале
- Добрый вечер! Буду очень признательна, если поможите написать в Pascal-е программу нижеследующей задачи:
Program5.pas(14) : Неверное количество параметров функции