Jak napisać równanie oznaczone, tożsamościowe, sprzeczne

0

Witam,
Chciałbym prosić o poradę dotyczącą Pascala. Mianowicie mam napisać
program, który poda rozwiązanie równania postaci: ax+b=c(x+b) i w
zależności od tego jakie będzie to rozwiązanie, muszę podać czy to
jest równanie: oznaczone, tożsamościowe lub sprzeczne. Ma mi wyświetlić
tekst "Pierwiastki równania ax+b=c(x+b) to x = ... ".
Napisałem już podstawową strukturę kodu, ale jaki napisać kod żeby w
zależności od podanego wyniku wyświetlało się jakie to jest równanie?

Wiem na razie tyle, że do obliczenia X trzeba zastosować to
x:=((c*b)-b)/(a-c)

Natomiast do równania sprzecznego to
if ((a*x)+b) <> (c*(x+b)) then writeln("Równanie sprzeczne")

Jak napisać wreszcie ten program?

Proszę o pomoc.

Pozdrawiam,
Serpher

PS.
Dodam tylko, że to sprawa pilna!

0

Rozumiem, że a, b, c i d to parametry?
Jeśli tak, to zauważ, że
ax + b = c(x + b)
(a - c)x + (1 - c)b = 0
Więc masz zwykłe równanie liniowe, które:

a) gdy (a - c) <> 0 ma jedno rozwiązanie (równanie oznaczone):
x = ((c - 1)b) / (a - c)

b) gdy (a - c) = 0 oraz (1 - c) = 0 ma nieskończenie wiele rozwiązań (równanie tożsamościowe),

c) gdy (a - c) = 0 oraz (1 - c) <> 0 nie ma rozwiązań (równanie sprzeczne).

// DOPISANE
Sorki, przeoczenie :) Dwoją mi się literki ;]

0

Po pierwsze dzięki za odpowiedź. Po drugie, skąd parametr "d" ??? W równaniu nie ma takiego.

Fakt napisałem już tak. Program liczy, ale nie wiem czy dobrze. Napisałem to tak:

if (a<>c) then
  begin
    writeln('Rownanie oznaczone');
  end;
if (a=c) AND (b=c*b) then
  begin
    writeln('Rownanie tożsamościowe');
  end;
if (a=c) AND (b<>c*b) then
  begin
    writeln('Rownanie sprzeczne');
  end;

Natomiast do obliczenia X ta postać jest dobra?
x:=((c*b)-b)/(a-c)

0

Zauważ, że jeśli a <> c to układ jest oznaczony i ma dokładnie jedno rozwiązanie.
Jeśli a = c to układ jest nieoznaczony lub tożsamościowy. Tożsamościowy będzie wtedy, jeśli
a=c i b=c*b, czyli (a=c i b=0) lub a=c=1

Fachowo to trzeba by sobie rozpisać układ dwóch równań
ax + b = c(x + b) = y czyli układ

/ ax - y = -b
\ cx - y = -bc

Wyznacznik główny W = c - a
Wyznacznik x Wx = b - bc
Wyznacznik y Wy = -ab + bc

Zgodnie z twierdzeniem gdy W<>0 (a<>c) to układ jest oznaczony.
Jeśli W=0 (a=c) to układ jest tożsamościowy gdy Wx=Wy=0, w przeciwnym wypadku nieoznaczony
Wx=Wy=0 czyli
b-bc = -ab+bc = 0
a = c = 1 lub b = 0

Zatem zgadza się z tym co wcześniej napisałem.

0

Powiedzcie mi proszę jaki to ma związek z Delphi/Pascalem?

0

Chodzi mi o to, jak napiać (a raczej co napisać) w programie, żeby dobrze liczyło.
To, co podałem wyżej, to dobry kod?

0
Serpher napisał(a)

To, co podałem wyżej, to dobry kod?

Taki by był lepszy:

if a <> c then oznaczony
else if a = 1 or b = 0 then nieoznaczony
else sprzeczny;
0

No coż napisałem tak i kod wygląda następująco (dodam jeszcze, że liczy):

x:=((c*b)-b)/(a-c);

writeln;
writeln('Pierwiastki rownania ax+b=c(x+b) to x = ',x:4:4);
 if (a<>c) then
  writeln('Rownanie oznaczone')
 else if (a=1) OR (b=0) then
  writeln('Rownanie tozsamosciowe')
 else
  writeln('Rownanie sprzeczne');

Chyba dobrze?

0
if (a<>c) then
begin
  x:=((c*b)-b)/(a-c);
  write('Rownanie oznaczone, x=');
  writeln(x);
end

Wzór jest ok, bo x = Wx/W

0

Jeżeli by nie było pierwiastków to napisać tak?

if (a<>c) then
begin
  x:=((c*b)-b)/(a-c);
  write('Rownanie oznaczone, x=');
  writeln(x);
end
else
  write('Brak pierwiastków');
0

Nie wiem czy to tak ma wyglądać.
Niestety jestem początkujacy w Pascalu i troche mi wstyd o takie rzeczy się pytać, ale widzę, że tu są przynajmniej życzliwi ludzie, którzy pomogą w potrzebie ;-)

if (a<>c) then
 begin
  x:=((c*b)-b)/(a-c);
  write('Rownanie oznaczone, x=');
  writeln(x:4:4);
 end

else if (a=1) OR (b=0) then
 begin
  x:=((c*b)-b)/(a-c);
  write('Rownanie oznaczone, x=');
  writeln(x:4:4);
 end

else
 writeln('Rownanie sprzeczne');
0

Już wiem. To powinno wyglądać tak jeśli chodzi o rodzaje równań:

if (a<>c) then
 begin
  write('Rownanie oznaczone, x= ');
  writeln(x:4:4);
 end

else if (c*b=b) AND (a=c) then
 begin  
  write('Rownanie tozsamosciowe, x=');
 end

else if (a=c) then
 writeln('Rownanie sprzeczne');

Ostatni problem jaki pozostał, to to czy ten kod jest dobrze złożony, ponieważ przy obliczaniach zawsze podaje "Równanie oznaczone".
A także czy do każdego tego bloku trzeba dopisać (po write) "else writeln('Brak pierwiastków');", ponieważ program ma wyświetlić "Pierwiastki równania ax+b=c(x+b) to x = ..."?

0
writeln('Pierwiastki rownania ax+b=c(x+b)');
if (a<>c) then
begin
  x:=((c*b)-b)/(a-c);
  writeln('Rownanie oznaczone, x=', x:4:4);
end
else if (a=1) OR (b=0) then
  writeln('Rownanie tozsamosciowe')
else
  writeln('Rownanie sprzeczne');
0
adf88 napisał(a)
writeln('Pierwiastki rownania ax+b=c(x+b)');
if (a<>c) then
begin
  x:=((c*b)-b)/(a-c);
  writeln('Rownanie oznaczone, x=', x:4:4);
end
else if (a=1) OR (b=0) then
  writeln('Rownanie tozsamosciowe')
else
  writeln('Rownanie sprzeczne');

Niechciałbym podważać Twojej odpowiedzi, ale mój nauczyciel matematyki, z którym się skonsultowałem, podał wyraźnie - jeżeli chodzi o równanie tożsamościowe i sprzeczne - że jeśli wychodzi c*b =b i a =c to tożsamosciowe, jeśli a=c to sprzeczne, jeśli a rózne od c to oznaczone.
Więc skąd na ten przykład "(a=1) OR (b=0)" ?

0

A spytałeś się nauczyciela, czy jedno i drugie jest to samo ? No, bo jest tylko moje prościej zapisane.
Kiedy c*b =b ? A no wtedy jeśli c=1 lub b=0. Skoro a=c to c=1 wtedy, kiedy a=1. Proste.

0

adf masz nieziemską cierpliwość :) przecież powtarzasz to już któryś raz z kolei :)

@Serpher: wpatruj się w równanie tak długo, aż zrozumiesz ;-P

0

Jak już wyżej napisałem, nie jestem orłem z matematyki.
Natomiast ktoś zasugerował w tym zadaniu równanie liniowe f(x)= ax+b i f(x)=c(x+b). Co o tym sądzisz?

PS. Jak sprawdzić czy rzeczywiście to, co podałeś rzeczywiście działa? Mam na myśli równanie tożsamościowe i sprzeczne.

0
  1. podstaw konkretne wartości do odpowiednich zmiennych
  2. użyj TP (?)
0
Mc_Hammer napisał(a)
  1. podstaw konkretne wartości do odpowiednich zmiennych
  2. użyj TP (?)
  1. Jakie Ty wartości masz na myśli?
  2. Bardzo śmieszne :P Używam TP 7.0 / Free Pascal.

1 użytkowników online, w tym zalogowanych: 0, gości: 1