1 / 20

프로그래밍 실습 #4 – 다항식

프로그래밍 실습 #4 – 다항식. Byung-Hyun Ha bhha@pusan.ac.kr. 다항식. 예 1: Java 에서는 어떻게 처리할까 ?. pow. coef. 3 x 5 − 7 x 2 + 2 x + 23. term. 0. 1. 2. 3. 4. 5. 6. 7. …. 3. -7. 2. 23. ?. ?. ?. ?. coef:. …. 5. 2. 1. 0. ?. ?. ?. ?. pow:. 4. count:. 다항식을 다루는 클래스 : Poly. 멤버

aliya
Download Presentation

프로그래밍 실습 #4 – 다항식

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 프로그래밍 실습 #4 – 다항식 Byung-Hyun Ha bhha@pusan.ac.kr

  2. 다항식 • 예1: • Java에서는 어떻게 처리할까? pow. coef. 3x5 − 7x2 + 2x + 23 term 0 1 2 3 4 5 6 7 … 3 -7 2 23 ? ? ? ? coef: … 5 2 1 0 ? ? ? ? pow: 4 count:

  3. 다항식을 다루는 클래스: Poly • 멤버 • 메서드 double[] coef = newdouble[100]; int[] pow = newint[100]; intcount = 0; void addTerm(double c, int p) {...} // cxp를 더함 void display() {...} // 화면에 다항식을 출력 Poly add(Poly right) {...} // right를 더한 결과 돌려줌 Poly sub(Poly right) {...} // right를 뺀 결과 돌려줌 Poly mul(Poly right) {...} // right를 곱한 결과 돌려줌

  4. 다항식을 활용하는 클래스: Math • publicclass Math { • publicstaticvoid main(String[] args) { • Poly p1 = new Poly(); • p1.addTerm(1.0, 2); • p1.addTerm(2.0, 1); • System.out.print("p1: "); • p1.display(); • Poly p2 = new Poly(); • p2.addTerm(-2.0, 3); • p2.addTerm(2.0, 1); • p2.addTerm(3, 0); • System.out.print("p2: "); • p2.display(); • ... // 뒤에 계속 • } • }  (x2 + 2x)  (–2x3 + 2x + 3)

  5. 다항식을 활용하는 클래스: Math • publicclass Math { • publicstaticvoid main(String[] args) { • ... // 앞에서 계속 • Poly p3 = p1.add(p2); • System.out.print("p1 + p2: "); • p3.display(); • Poly p4 = p1.sub(p2); • System.out.print("p1 - p2: "); • p4.display(); • Poly p5 = p1.mul(p2); • System.out.print("p1 * p2: "); • p5.display(); • } • }

  6. 다항식을 활용하는 클래스: Math • 실행결과 p1: 1.0 x^2 + 2.0 x^1 p2: -2.0 x^3 + 2.0 x^1 + 3.0 x^0 p1 + p2: -2.0 x^3 + 1.0 x^2 + 4.0 x^1 + 3.0 x^0 p1 - p2: 2.0 x^3 + 1.0 x^2 + -3.0 x^0 p1 * p2: -2.0 x^5 + -4.0 x^4 + 2.0 x^3 + 7.0 x^2 + 6.0 x^1

  7. 실행: Math • publicclass Math { • publicstaticvoid main(String[] args) { • Poly p1 = new Poly(); • p1.addTerm(1.0, 2); • p1.addTerm(2.0, 1); • ... p1  0 1 2 3 4 5 6 7 … ? ? ? ? ? ? ? ? coef: … ? ? ? ? ? ? ? ? pow: 0 count:

  8. 실행: Math • publicclass Math { • publicstaticvoid main(String[] args) { • Poly p1 = new Poly(); • p1.addTerm(1.0, 2); • p1.addTerm(2.0, 1); • ... coef[0] = 1.0; pow[0] = 2; count++; p1  0 1 2 3 4 5 6 7 … 1.0 ? ? ? ? ? ? ? coef: … 2 ? ? ? ? ? ? ? pow: x2 1 count:

  9. 실행: Math • publicclass Math { • publicstaticvoid main(String[] args) { • Poly p1 = new Poly(); • p1.addTerm(1.0, 2); • p1.addTerm(2.0, 1); • ... coef[1] = 2.0; pow[1] = 1; count++; p1  0 1 2 3 4 5 6 7 … 1.0 2.0 ? ? ? ? ? ? coef: … 2 1 ? ? ? ? ? ? pow: x2 + 2x 2 count:

  10. 실행: Math • publicclass Math { • publicstaticvoid main(String[] args) { • Poly p1 = new Poly(); • p1.addTerm(1.0, 2); • p1.addTerm(2.0, 1); • System.out.print("p1: "); • p1.display(); • ... x2 + 2x p1: 1.0 x^2 + 2.0 x^1

  11. 다항식을 활용하는 클래스: Math • publicclass Math { • publicstaticvoid main(String[] args) { • Poly p1 = new Poly(); • p1.addTerm(1.0, 2); • p1.addTerm(2.0, 1); • System.out.print("p1: "); • p1.display(); • Poly p2 = new Poly(); • p2.addTerm(-2.0, 3); • p2.addTerm(2.0, 1); • p2.addTerm(3, 0); • System.out.print("p2: "); • p2.display(); • ... // 뒤에 계속 • } • } –2x3 + 2x + 3 p1: 1.0 x^2 + 2.0 x^1 p2: -2.0 x^3 + 2.0 x^1 + 3.0 x^0

  12. 다항식을 활용하는 클래스: Math • publicclass Math { • publicstaticvoid main(String[] args) { • ... // 앞에서 계속 • Poly p3 = p1.add(p2); • System.out.print("p1 + p2: "); • p3.display(); • Poly p4 = p1.sub(p2); • System.out.print("p1 - p2: "); • p4.display(); • Poly p5 = p1.mul(p2); • System.out.print("p1 * p2: "); • p5.display(); • } • }

  13. 다항식 클래스 껍데기 • publicclass Poly { • double[] coef = newdouble[100]; • int[] pow = newint[100]; • intcount = 0; • void addTerm(double c, int p) { • // 구현 • } • void display() { • arrange(); • // 구현 • } • void arrange() { • // 구현 • } • ... // 계속 • }

  14. 다항식 클래스 껍데기 • publicclass Poly { • ... // 앞에서 계속 • Poly add(Poly right) { • Poly result = new Poly(); • // 구현 • return result; • } • Poly sub(Poly right) { • Poly result = new Poly(); • // 구현 • return result; • } • Poly mul(Poly right) { • Poly result = new Poly(); • // 구현 • return result; • } • }

  15. add() Poly p3 = p1.add(p2); (x2 + 2x) + (–2x3 + 2x + 3) Poly p3 = new Poly(); p3.addTerm(1.0, 2); p3.addTerm(2.0, 1); p3.addTerm(-2.0, 3); p3.addTerm(2.0, 1); p3.addTerm(3.0, 0);

  16. sub() Poly p4 = p1.sub(p2); (x2 + 2x) – (–2x3 + 2x + 3) Poly p4 = new Poly(); p4.addTerm(1.0, 2); p4.addTerm(2.0, 1); p4.addTerm(2.0, 3); p4.addTerm(-2.0, 1); p4.addTerm(-3.0, 0);

  17. arrange()의 필요성 • 만일 정리를 안 해준다면 • arrange() • display()에서 먼저 정렬하고 coef.가 0인 것을 지움 Poly p4 = p1.sub(p2); System.out.print("p1 - p2: "); p4.display(); (x2 + 2x) – (–2x3 + 2x + 3) p1 - p2: 1.0 x^2 + 0.0 x^1 + 2.0 x^3 + -3.0 x^0 • void display() { • arrange(); • for (int i = 0; i < count; i++) { • ...

  18. mul() • 다항식 곱셈 (x2 + 2x)(–2x3 + 2x + 3) = ?

  19. mul() Poly p5 = p1.mul(p2); Poly p5 = new Poly(); p4.addTerm(1.0 * -2.0, 2 + 3); p4.addTerm(1.0 * 2.0, 2 + 1); p4.addTerm(1.0 * 3.0, 2 + 0); p4.addTerm(2.0 * -2.0, 1 + 3); p4.addTerm(2.0 * 2.0, 1 + 1); p4.addTerm(2.0 * 3.0, 1 + 0); Hint: for statement를 두 개 겹쳐 사용!!!

  20. 숙제 5 • class Poly를 완성하여 제출

More Related