From 5989d6fb92f2518f14ce210766c78c75abc231e3 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 11:59:43 -0600 Subject: [PATCH 01/29] Create .gitkeep temp file --- Contrib/UCalgary/.gitkeep | 1 + 1 file changed, 1 insertion(+) create mode 100644 Contrib/UCalgary/.gitkeep diff --git a/Contrib/UCalgary/.gitkeep b/Contrib/UCalgary/.gitkeep new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/Contrib/UCalgary/.gitkeep @@ -0,0 +1 @@ + From f9a11a47eb6b3b5423997660bbafdb52ef25b424 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 12:16:28 -0600 Subject: [PATCH 02/29] Delete Contrib/UCalgary/.gitkeep --- Contrib/UCalgary/.gitkeep | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Contrib/UCalgary/.gitkeep diff --git a/Contrib/UCalgary/.gitkeep b/Contrib/UCalgary/.gitkeep deleted file mode 100644 index 8b13789179..0000000000 --- a/Contrib/UCalgary/.gitkeep +++ /dev/null @@ -1 +0,0 @@ - From b02285d3b8189dc990892327b19558d664c43d29 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 12:19:40 -0600 Subject: [PATCH 03/29] Add files via upload --- .../1-1-0-An-C-graph-interval-jms.pg | 68 +++++++ .../1-1-0-An-C/1-1-0-An-C-interpret-graph1.pg | 58 ++++++ .../1-1-0-An-C/1-1-0-An-C-quad-linear-jms.pg | 77 ++++++++ .../1-1-1-U-C/1-1-1-U-C-slope-int-1-jms.pg | 52 +++++ .../1-1-1-U-C/1-1-1-U-C-slope-int-2-jms.pg | 62 ++++++ .../1-1-3-U-C/1-1-3-U-C-delta-slope-jms.pg | 60 ++++++ .../1-1-3-U-C/1-1-3-U-C-point-slope-jms.pg | 63 ++++++ .../1-1-4-U-C/1-1-4-U-C-int-from-eq-jms.pg | 72 +++++++ .../1-1-4-U-C/1-1-4-U-C-num-int-jms.pg | 50 +++++ .../1-2-0-An-C/1-2-0-An-C-fcn-sub-jms.pg | 69 +++++++ .../1-2-0-An-C/1-2-0-An-C-mc1-jms.pg | 48 +++++ .../1-3-1-AP-C-solve-for-theta-AT.pg | 65 +++++++ .../1-3-1-Ap-C/1-3-1-Ap-C-eval-cos-sin-AT.pg | 52 +++++ .../1-3-2-Ap-C/1-3-2-Ap-C-exp-to-log-jms.pg | 46 +++++ .../1-3-2-Ap-C/1-3-2-Ap-C-log-to-exp-jms.pg | 49 +++++ .../1-4-0-U-C/1-4-0-U-C-drop-down-jms.pg | 85 ++++++++ .../1-4-0-U-C/1-4-0-U-C-drop-down-jms_1.pg | 60 ++++++ .../1-4-0-U-C/1-4-0-U-C-rational1-jms.pg | 42 ++++ .../1-6-0-U-C/1-6-0-U-C-alg-dom-dg.pg | 48 +++++ .../1-6-0-U-C/1-6-0-U-C-rational-dom-jms.pg | 53 +++++ .../2-1-0-Ap-C-factor-blanks-jms.pg | 54 ++++++ .../2-1-0-Ap-C-factor-blanks-v2-jms.pg | 58 ++++++ .../2-1-0-Ap-C/2-1-0-Ap-C-factor-root-jms.pg | 60 ++++++ .../2-1-0-Ap-C-factor-root-v2-jms.pg | 64 ++++++ .../2-2-0-Ap-C/2-2-0-Ap-C-abs-quad-jms.pg | 60 ++++++ .../2-2-0-Ap-C/2-2-0-Ap-C-quad-log-jms.pg | 62 ++++++ .../2-2-1-Ap-C/2-2-1-Ap-C-poly-int-jms.pg | 108 +++++++++++ .../2-2-1-Ap-C/2-2-1-Ap-C-poly-int-v2-jms.pg | 86 ++++++++ .../2-2-1-Ap-C/2-2-1-Ap-C-quad-lin-int-jms.pg | 84 ++++++++ .../2-2-2-Ap-C/2-2-2-Ap-C-exp-log-jms.pg | 57 ++++++ .../2-2-2-Ap-C/2-2-2-Ap-C-lin-log-jms.pg | 56 ++++++ .../2-2-2-Ap-C-quad-log-dist-jms.pg | 68 +++++++ .../2-2-3-Ap-C/2-2-3-Ap-C-cos-eq-jms.pg | 52 +++++ .../2-2-3-Ap-C/2-2-3-Ap-C-sin-eq-jms.pg | 54 ++++++ .../2-2-3-Ap-C/2-2-3-Ap-C-trig-x-jms.pg | 69 +++++++ .../2-3-0-An-C/2-3-0-An-C-tnslt-eqtn-cmm.pg | 77 ++++++++ .../2-3-0-An-C/2-3-0-An-C-tnslt-ineq-cmm.pg | 52 +++++ .../3-1-0-Ap-I/3-1-0-Ap-I-approx-funct-jms.pg | 77 ++++++++ .../3-1-0-Ap-I/3-1-0-Ap-I-opt-funct-jms.pg | 80 ++++++++ .../3-4-0-E-I/3-4-0-E-I-approx-choice-jms.pg | 148 ++++++++++++++ .../3-4-0-E-I-approx-choice-jmsW2026.pg | 62 ++++++ .../3-4-0-E-I-approx-choice-v2-jms.pg | 177 +++++++++++++++++ .../3-5-1-Ap-I-first-der-test-jms.pg | 127 ++++++++++++ .../3-5-1-Ap-I/3-5-1-Ap-I-opt-choice-jms.pg | 183 ++++++++++++++++++ .../3-5-1-Ap-I-second-der-test-jms.pg | 72 +++++++ .../3-6-0-Ap-I-drop-down-detail-jms.pg | 88 +++++++++ .../3-6-0-Ap-I/3-6-0-Ap-I-drop-down-jms.pg | 77 ++++++++ .../3-7-0-Ap-I/3-7-0-Ap-I-drop-down-jms.pg | 62 ++++++ .../3-7-0-Ap-I-drop-down-jmsW2026.pg | 52 +++++ .../3-7-0-Ap-I-evt-jms_DO_NOT_USE.pg | 46 +++++ .../3-7-0-Ap-I-ivt-jms_DO_NOT_USE.pg | 43 ++++ .../3-7-0-Ap-I-mvt-jms_DO_NOT_USE.pg | 49 +++++ .../3-7-0-Ap-I/3-7-0-Ap-I-value-choice-jms.pg | 100 ++++++++++ .../3-7-0-Ap-I-value-choice-jmsW2026.pg | 33 ++++ .../4-1-1-Ap-C/4-1-1-Ap-C-log-jms.pg | 63 ++++++ .../4-1-1-Ap-C/4-1-1-Ap-C-log-jmsW2026.pg | 60 ++++++ .../4-1-1-Ap-C/4-1-1-Ap-C-power-jms.pg | 63 ++++++ .../4-1-1-Ap-C/4-1-1-Ap-C-power-jmsW2026.pg | 64 ++++++ .../4-1-1-Ap-C/4-1-1-Ap-C-root-jms.pg | 60 ++++++ .../4-1-2-E-I-abstract-over-under-jms.pg | 80 ++++++++ .../4-1-2-E-I-graph-overunder-jms.pg | 89 +++++++++ .../4-1-2-E-I-poly-over-under-jms.pg | 64 ++++++ .../4-2-1-Ap-C-taylor-poly-approx-AT.pg | 40 ++++ .../4-2-2-Ap-I-taylor-remainder-approx-AT.pg | 45 +++++ .../4-2-3-Ap-I-taylor-poly-degree-AT.pg | 50 +++++ .../4-3-1-Ap-I-demand-change-jms.pg | 69 +++++++ .../4-3-1-Ap-I/4-3-1-Ap-I-fcn-change-2-jms.pg | 64 ++++++ .../4-3-1-Ap-I/4-3-1-Ap-I-fcn-change-3-jms.pg | 61 ++++++ .../4-3-1-Ap-I/4-3-1-Ap-I-fcn-change1-jms.pg | 66 +++++++ .../4-3-2-Ap-I-percent-change-2-jms.pg | 59 ++++++ .../4-3-2-Ap-I-percent-change-jms.pg | 73 +++++++ .../4-3-2-Ap-I-percent-sphere-jms.pg | 67 +++++++ .../4-3-3-Ap-I/4-3-3-Ap-I-ivt-mc-jms.pg | 72 +++++++ .../4-3-3-Ap-I-ivt-mc-no-sol-jms.pg | 66 +++++++ .../4-4-0-Ap-C/4-4-0-Ap-C-nm-cubic-jms.pg | 79 ++++++++ .../4-4-0-Ap-C-nm-cubic-jmsW2026.pg | 77 ++++++++ .../4-4-0-Ap-C/4-4-0-Ap-C-nm-exp-jms.pg | 76 ++++++++ .../4-4-0-Ap-C/4-4-0-Ap-C-nm-log-jms.pg | 81 ++++++++ .../4-4-0-Ap-C/4-4-0-Ap-C-nm-log-jmsW2026.pg | 79 ++++++++ .../5-1-1-R-C-defn-inf-lim-mc-jms.pg | 40 ++++ .../5-1-1-R-C/5-1-1-R-C-defn-mc-jms.pg | 41 ++++ .../5-2-2-An-C-compute-limits-1-jms.pg | 82 ++++++++ .../5-2-2-An-C-compute-limits-2-jms.pg | 87 +++++++++ .../5-2-2-An-C-compute-limits-3-inf-jms.pg | 79 ++++++++ .../5-2-3-An-C/5-2-3-An-C-pw-limit-1-jms.pg | 107 ++++++++++ .../5-2-3-An-C/5-2-3-An-C-pw-limit-2-jms.pg | 108 +++++++++++ .../5-2-3-An-C/5-2-3-An-C-pw-limit-3-jms.pg | 132 +++++++++++++ .../5-3-2-Ap-C-compute-lhop-1-jms.pg | 73 +++++++ .../5-3-2-Ap-C-compute-lhop-2-jms.pg | 71 +++++++ .../5-3-2-Ap-C-compute-lhop-2-jmsNOCHAIN.pg | 67 +++++++ .../5-3-2-Ap-C-compute-lhop-3-jms.pg | 67 +++++++ .../5-4-5-U-C/5-4-5-U-C-t-f-asmp-1-jms.pg | 76 ++++++++ .../5-4-5-U-C/5-4-5-U-C-t-f-asmp-2-jms.pg | 75 +++++++ .../5-5-3-R-I/5-5-3-R-I-discon-defn-jms.pg | 68 +++++++ .../5-5-4-Ap-C/5-5-4-Ap-C-cont-int-1-jms.pg | 78 ++++++++ .../5-5-4-Ap-C/5-5-4-Ap-C-cont-int-2-jms.pg | 96 +++++++++ Contrib/UCalgary/MATH249-WeBWork-2026.zip | Bin 0 -> 499944 bytes .../UCalgary/MATH_249_CLO_(High-level).docx | Bin 0 -> 25450 bytes ...ATH_249_Revised_Learning_Outcomes_F25.xlsx | Bin 0 -> 64924 bytes Contrib/UCalgary/README.md | 23 +++ 100 files changed, 6813 insertions(+) create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-graph-interval-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-interpret-graph1.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-quad-linear-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-1-1-U-C/1-1-1-U-C-slope-int-1-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-1-1-U-C/1-1-1-U-C-slope-int-2-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-1-3-U-C/1-1-3-U-C-delta-slope-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-1-3-U-C/1-1-3-U-C-point-slope-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-1-4-U-C/1-1-4-U-C-int-from-eq-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-1-4-U-C/1-1-4-U-C-num-int-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-2-0-An-C/1-2-0-An-C-fcn-sub-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-2-0-An-C/1-2-0-An-C-mc1-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-3-1-Ap-C/1-3-1-AP-C-solve-for-theta-AT.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-3-1-Ap-C/1-3-1-Ap-C-eval-cos-sin-AT.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-3-2-Ap-C/1-3-2-Ap-C-exp-to-log-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-3-2-Ap-C/1-3-2-Ap-C-log-to-exp-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-drop-down-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-drop-down-jms_1.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-rational1-jms.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-6-0-U-C/1-6-0-U-C-alg-dom-dg.pg create mode 100644 Contrib/UCalgary/249-1-0-0-C/1-6-0-U-C/1-6-0-U-C-rational-dom-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-blanks-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-blanks-v2-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-root-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-root-v2-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-2-0-Ap-C/2-2-0-Ap-C-abs-quad-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-2-0-Ap-C/2-2-0-Ap-C-quad-log-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-poly-int-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-poly-int-v2-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-quad-lin-int-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-exp-log-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-lin-log-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-quad-log-dist-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-cos-eq-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-sin-eq-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-trig-x-jms.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-3-0-An-C/2-3-0-An-C-tnslt-eqtn-cmm.pg create mode 100644 Contrib/UCalgary/249-2-0-0-C/2-3-0-An-C/2-3-0-An-C-tnslt-ineq-cmm.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-1-0-Ap-I/3-1-0-Ap-I-approx-funct-jms.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-1-0-Ap-I/3-1-0-Ap-I-opt-funct-jms.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-jms.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-jmsW2026.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-v2-jms.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-5-1-Ap-I/3-5-1-Ap-I-first-der-test-jms.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-5-1-Ap-I/3-5-1-Ap-I-opt-choice-jms.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-5-1-Ap-I/3-5-1-Ap-I-second-der-test-jms.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-6-0-Ap-I/3-6-0-Ap-I-drop-down-detail-jms.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-6-0-Ap-I/3-6-0-Ap-I-drop-down-jms.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-drop-down-jms.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-drop-down-jmsW2026.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-evt-jms_DO_NOT_USE.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-ivt-jms_DO_NOT_USE.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-mvt-jms_DO_NOT_USE.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-value-choice-jms.pg create mode 100644 Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-value-choice-jmsW2026.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-log-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-log-jmsW2026.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-power-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-power-jmsW2026.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-root-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-abstract-over-under-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-graph-overunder-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-poly-over-under-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-2-1-Ap-C/4-2-1-Ap-C-taylor-poly-approx-AT.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-2-2-Ap-I/4-2-2-Ap-I-taylor-remainder-approx-AT.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-2-3-Ap-I/4-2-3-Ap-I-taylor-poly-degree-AT.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-demand-change-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change-2-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change-3-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change1-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-change-2-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-change-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-sphere-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-3-3-Ap-I/4-3-3-Ap-I-ivt-mc-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-3-3-Ap-I/4-3-3-Ap-I-ivt-mc-no-sol-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-cubic-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-cubic-jmsW2026.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-exp-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-log-jms.pg create mode 100644 Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-log-jmsW2026.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-1-1-R-C/5-1-1-R-C-defn-inf-lim-mc-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-1-1-R-C/5-1-1-R-C-defn-mc-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-1-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-2-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-3-inf-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-1-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-2-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-3-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-1-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-2-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-2-jmsNOCHAIN.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-3-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-1-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-2-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-3-R-I/5-5-3-R-I-discon-defn-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-4-Ap-C/5-5-4-Ap-C-cont-int-1-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-4-Ap-C/5-5-4-Ap-C-cont-int-2-jms.pg create mode 100644 Contrib/UCalgary/MATH249-WeBWork-2026.zip create mode 100644 Contrib/UCalgary/MATH_249_CLO_(High-level).docx create mode 100644 Contrib/UCalgary/MATH_249_Revised_Learning_Outcomes_F25.xlsx create mode 100644 Contrib/UCalgary/README.md diff --git a/Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-graph-interval-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-graph-interval-jms.pg new file mode 100644 index 0000000000..063d79a7e5 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-graph-interval-jms.pg @@ -0,0 +1,68 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Quadratic equations and functions) +## DBsection(Graphs) +## Date(3 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl",); +$a = non_zero_random(-3, 3, 1); #nonzero repeated root +$b = 2; #tried a random power, too much so go with 2 +if(abs($a)==1) +{$c = 10;} +else +{$c = abs($a)*4}; #dampening factor for graph +$p = non_zero_random(-1,1,1); #coefficient +/- 1 +# answers depend on $p and are switched based on sign +if($p==1) +{ +$inc = List("($a,5)"); +$dec = List("(-5,$a)"); +} +else +{ +$inc = List("(-5,$a)"); +$dec = List("($a,5)"); +} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5.5,0) -- (5.5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-5.5) -- (0,5.5) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5.5,-5.5) grid (5.5,5.5); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[-,red, very thick] plot[domain={-4.98}:{4.98}] (\x,{$p*pow((\x-$a),$b)/($c) - $p*abs($a)}); +\draw[red, very thick] (-5,{$p*pow(-5-$a,$b)/$c- $p*abs($a)}) circle (2 pt); +\draw[red, very thick] (5,{$p*pow(5-$a,$b)/$c- $p*abs($a)}) circle (2 pt); +\draw[red] (5,{$p*pow(5-$a,$b)/$c- $p*abs($a)}) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +\Context("Interval"); +BEGIN_PGML +[@ image($graph_image, width => 600, tex_size => 1000) @]* + +Let [`f`] be a function defined on the open interval [`(-5,5)`] and consider the graph of [`y=f(x)`] given above (drawn in red). + +Enter your answers below as (open) intervals (use a list separated by commas, if needed). + +If there are no such intervals, type [|None|]*. + +a. [`f`] is increasing on the interval(s) [_]{$inc}{20} +b. [`f`] is decreasing on the interval(s) [_]{$dec}{20} + +[@helpLink('intervals')@]* + +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-interpret-graph1.pg b/Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-interpret-graph1.pg new file mode 100644 index 0000000000..02b3538e2d --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-interpret-graph1.pg @@ -0,0 +1,58 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Functions) +## DBsection(Graphs) +## Date(30 January 2025) +## Institution(University of Calgary) +## Author(Aiden Taylor) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", + "PGML.pl", + "PGcourse.pl", + "PGtikz.pl" +); + +$showPartialCorrectAnswers = 1; + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[<->,thick] (-7,0) -- (7,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[<->,thick] (0,-3) -- (0,11) node[below right,outer sep=2pt]{\(y\)}; +\foreach \x in {-6,-4,...,-2,2,4,...,6} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-2,2,4,...,10} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[-,red, ultra thick] plot[domain={-3}:{2.99}] (\x,{pow(\x,2)}); +\filldraw[red, ultra thick] (-3,9) circle (3.5 pt); +\draw[red, ultra thick] (3,9) circle (3.5 pt); +\draw[very thin,color=gray] (-7,-3) grid (7,11); +\draw[red] (1,9) node[outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +\Context("Interval"); +BEGIN_PGML +[@ image($graph_image, width => 600, tex_size => 1000) @]* + +Refer to the graph of the function, [`f`], drawn above in red. + +(a) The value of [`f(1)`] is: [_]{"1"}{2} + +(b) For what values of [`x`] is [`f(x) = 4`]? [____]{"-2,2"}{5} +(Enter the values of [`x`] as a list, separated by commas.) + +(c) State the domain of [`f`]. [______]{"[-3,3)"}{20} +(Enter your answer as an interval. [@helpLink('intervals')@]*) + +(d) State the range of [`f`]. [______]{"[0,9]"}{20} +(Enter your answer as an interval.) +END_PGML + +ENDDOCUMENT(); \ No newline at end of file diff --git a/Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-quad-linear-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-quad-linear-jms.pg new file mode 100644 index 0000000000..3754d9d7cc --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-1-0-An-C/1-1-0-An-C-quad-linear-jms.pg @@ -0,0 +1,77 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Quadratic equations and functions) +## DBsection(Graphs) +## Date(3 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl",); +$a = non_zero_random(-1, 1, 1); #nonzero repeated root +$b = random(1,2,1); #linear or quadratic +if($b==2) +{$c = 10*$b;} +else +{$c = 2}; #dampening factor for graph +$p = non_zero_random(-1,1,1); #coefficient +/- 1 +# popup_type answers depend on $b +if($b==1) +{$type = 'linear function';} +else +{$type = 'quadtratic function';} +$popup_type = DropDown( + [ + 'linear function', + 'quadratic function', + ], + $type +); +# popup_slope answers depend on $b and $p +if($p==1 and $b==1) +{$slope = 'positive';} +elsif($p==-1 and $b==1) +{$slope = 'negative';} +else +{$slope = 'neither';} +$popup_slope = DropDown( + [ + 'negative', + 'positive', + 'neither', + ], + $slope +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5.5,0) -- (5.5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-5.5) -- (0,5.5) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5.5,-5.5) grid (5.5,5.5); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick] plot[domain={-5}:{5}] (\x,{$p*pow($b*(\x-$a),$b)/($c) - $p*abs($a*$b)}); +\draw[red] (5,{$p*pow($b*(5-$a),$b)/($c) - $p*abs($a*$b)}) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +\Context("Interval"); +BEGIN_PGML +[@ image($graph_image, width => 600, tex_size => 1000) @]* + +Consider the graph of the of the function [`y=f(x)`] given above in red. + +Based on the visible portion of the graph [`f`] is a [_]{$popup_type}. + +If [`f`] is a linear function, then the slope of [`y=f(x)`] is [_]{$popup_slope}. (If [`f`] is a quadratic function, choose "neither"). + +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-1-1-U-C/1-1-1-U-C-slope-int-1-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-1-1-U-C/1-1-1-U-C-slope-int-1-jms.pg new file mode 100644 index 0000000000..dbb775a501 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-1-1-U-C/1-1-1-U-C-slope-int-1-jms.pg @@ -0,0 +1,52 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Linear equations and functions) +## DBsection(Equations of lines: slope-intercept form) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl",); +$a = random(1, 3, 1); #random positive slope numerator +$m = $a / 2; #slope is m = a/2 +$b = non_zero_random(-1, 1, 1); #random nonzero y-intercept +$l = $m * (-4) + $b; #lower limit, min of L +$u = $m * (4) + $b; #upper limit, max of L +$um = $u - 1; # for graph grid +$lm = $l + 1; # for graph grid +$xint = -$b / $m; #calculate x-intercept + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,$l) -- (0,$u) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,$l) grid (5,$u); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {$lm,...,$um} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick] plot[domain={-4}:{4}] (\x,$m*\x+$b); +\draw[red] (4,$u) node[below right, outer sep=2pt]{\(y=L(x)\)}; +END_TIKZ + +\Context("Interval"); +BEGIN_PGML +[@ image($graph_image, width => 600, tex_size => 1000) @]* + +Consider the graph of the line [`L`] given above. + +(a) The slope of [`L`] is [`m = `] [_]{"$m"} + +(b) The [`y`]-intercept of [`L`] is [`b = `] [_]{"$b"} + +(c) The [`x`]-intercept of [`L`] is [`x = `] [_]{"$xint"} + +Note: You may need to calculate the [`x`]-intercept by using your answers to parts (a) and (b). + +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-1-1-U-C/1-1-1-U-C-slope-int-2-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-1-1-U-C/1-1-1-U-C-slope-int-2-jms.pg new file mode 100644 index 0000000000..31975df599 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-1-1-U-C/1-1-1-U-C-slope-int-2-jms.pg @@ -0,0 +1,62 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Linear equations and functions) +## DBsection(Equations of lines: slope-intercept form) +## Date(31 January 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl",); +$a = random(-4, -2, 2); #random even negative slope numerator +$b = non_zero_random(-2, 2, 1); #random nonzero +$c = random(3,5,2); #positive odd slope denominator relatively prime to $a*$b +$m = $a / $c; #slope is m = a/c +# L = $m(x-$b); +$l = $m * (4 - $b); #lower limit, min of L at x=4 since decreasing +$u = $m * (-4 - $b) ; #upper limit, max of L at x=-4 since decreasing +$um = $u + 1; # for graph grid +$umc = int($um); #floor of $um +$lm = $l - 1; # graph grid +$lmf = int($lm); # floor of $lm +# floor for y-axis grid marks +$yint = -$b * $m; #calculate y-intercept + + + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,$lm) -- (0,$um) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,$lm) grid (5,$um); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {$lmf,...,$umc} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick] plot[domain={-4.5}:{4.5}] (\x,$m*(\x-$b)); +\draw[red] (4,$l) node[above right, outer sep=2pt]{\(y=L(x)\)}; +END_TIKZ + +\Context("Interval"); +BEGIN_PGML +[@ image($graph_image, width => 600, tex_size => 1000) @]* + +Consider the graph of the line [`L`] given above. + +(a) The slope of [`L`] is [`m = `] [_]{"$m"} + +(b) The [`x`]-intercept of [`L`] is [`x = `] [_]{"$b"} + +(c) The [`y`]-intercept of [`L`] is [`b = `] [_]{"$yint"} + +Note: You may need to calculate the [`y`]-intercept by using your answers to parts (a) and (b). + +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-1-3-U-C/1-1-3-U-C-delta-slope-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-1-3-U-C/1-1-3-U-C-delta-slope-jms.pg new file mode 100644 index 0000000000..16bbf4856a --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-1-3-U-C/1-1-3-U-C-delta-slope-jms.pg @@ -0,0 +1,60 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Linear equations and functions) +## DBsection(Linear equations) +## Date(31 January 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$m = non_zero_random(-7,7,1); #random nonzero slope +if(abs($m)==1)# avoid slope of +/- 1 +{ +$m = $m + 3; +} +$b = non_zero_random(-20,20,1); #random y-int +$delx = random(2,9,1); #given change in x, pos +$dely = random(-9,-2,1); #given change in y, neg +$magy = abs($dely); +$f = Formula("($m*x + $b)")->reduce(); + +$yans = Compute("$m*$delx"); +$xans = Compute("$dely/$m"); + +BEGIN_PGML +Suppose that [`x`] and [`y`] are related by the linear equation [`y = [$f]`]. + ++ If [`x`] is increased by [`[$delx]`] units, then the corresponding change in [`y`] is [`\Delta y = \, `][_]{$yans}{5}. ++ If [`y`] is decreased by [`[$magy]`] units, then the corresponding change in [`x`] is [`\Delta x = \, `][_]{$xans}{5}. +END_PGML + +BEGIN_PGML_SOLUTION +Recall that the slope of a line is [`m = \dfrac{\Delta y}{\Delta x}`], where [`\Delta y`] is the change in [`y`] and [`\Delta x`] is the change in [`x`]. + +For the line [`y = [$f]`] we have [`m = [$m]`]. + ++ Given [`\Delta x = [$delx]`], we get [`\Delta y = m \Delta x = [$yans]`]. ++ Given [`\Delta y = [$dely]`], we get [`\Delta x = \dfrac{\Delta y}{m} = \dfrac{[$dely]}{[$m]}`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-1-3-U-C/1-1-3-U-C-point-slope-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-1-3-U-C/1-1-3-U-C-point-slope-jms.pg new file mode 100644 index 0000000000..46f8e95bab --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-1-3-U-C/1-1-3-U-C-point-slope-jms.pg @@ -0,0 +1,63 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Linear equations and functions) +## DBsection(Equations of lines: point-slope form) +## Date(31 January 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$m = non_zero_random(-7,7,1); #random nonzero slope +if(abs($m)==1)# avoid slope of +/- 1 +{ +$m = $m + 3; +} +$a = non_zero_random(-9,9,1); #random x-coordinate for first point +$b = random(-9,9,1); #random y-coordinate for first first point +$c = non_zero_random(-9,9,1); #random x-coordinate for second point +if($c == $a) # avoid $c=$a and rewrite +{ +$c = $a + 10; #rewrite $c and avoid $c=0 +} +$d = $m*($c-$a)+$b; #second y-coordinate on the line +$f = Compute("($m*(x-$a)+$b)")->reduce(); + +BEGIN_PGML +Let [`L`] be the line passing through the points [`([$a],[$b])`] and [`([$c],[$d])`]. + +The slope of the line [`L`] is [`m = \, `][_]{$m}{5}. + +The equation of the line [`L`], as a function of the independent variable [`x`], is [`y = \, `][_]{$f}{20}. +END_PGML + +BEGIN_PGML_SOLUTION +Recall that the slope of a line is [`m = \dfrac{\Delta y}{\Delta x}`], where [`\Delta y = y_2 - y_1`] is the change in [`y`] and [`\Delta x = x_2 - x_1`] is the change in [`x`]. + +We are given points [`(x_1,y_1) = ([$a],[$b])`] and [`(x_2,y_2) = ([$c],[$d])`], so [`m = \dfrac{[$d]-[$b]}{[$c]-[$a]} = [$m] `] is the slope of [`L`]. + +The equation of [`L`] can be obtained by rearranging the above formula for the slope and using [`(x,y)`] in place of [`(x_2,y_2)`]: [```y - y_1 = m(x-x_1) ```] + +Therefore the equation of [`L`] is [`y = [$m](x-[$a])+[$b] = [$f]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-1-4-U-C/1-1-4-U-C-int-from-eq-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-1-4-U-C/1-1-4-U-C-int-from-eq-jms.pg new file mode 100644 index 0000000000..9a3a56c87d --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-1-4-U-C/1-1-4-U-C-int-from-eq-jms.pg @@ -0,0 +1,72 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Linear equations and functions) +## DBsection(Linear functions) +## Date(31 January 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = non_zero_random(-9,9,1); +$b = abs($a)+random(2,5,1); + +$popup_xint = DropDown( + [ + 'x-intercept', + 'y-intercept' + ], + 'x-intercept' +); + +$popup_xvar = DropDown( + [ + 'x', + 'y' + ], + 'x' +); + +$popup_yint = DropDown( + [ + 'x-intercept', + 'y-intercept' + ], + 'y-intercept' +); + +$popup_yvar = DropDown( + [ + 'x', + 'y' + ], + 'y' +); + +BEGIN_PGML +Let [`f`] be a function of one variable. + +If [`f(0)=[$b]`], then the [_]{$popup_yint} of [`f`] is [_]{$popup_yvar} = [_]{$b}{2}. + +If [`f([$a])=0`], then the [_]{$popup_xint} of [`f`] is [_]{$popup_xvar} = [_]{$a}{2}. +END_PGML + +BEGIN_PGML_SOLUTION +Points on the graph of [`y=f(x)`] have the form [`(x,f(x))`], where [`x`] is in the domain of [`f`]. + +- If [`f(0)=[$b]`], then [`(0,[$b])`] is on the graph of [`f`] and [`y=[$b]`] is the [`y`]-intercept of [`f`]. +- If [`f([$a])=0`], then [`([$a],0)`] is on the graph of [`f`] and [`x=[$a]`] is an [`x`]-intercept of [`f`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-1-4-U-C/1-1-4-U-C-num-int-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-1-4-U-C/1-1-4-U-C-num-int-jms.pg new file mode 100644 index 0000000000..d75b273948 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-1-4-U-C/1-1-4-U-C-num-int-jms.pg @@ -0,0 +1,50 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Linear equations and functions) +## DBsection(Linear functions) +## Date(31 January 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-9,9,1); +$b = non_zero_random(-9,9,1); +if($a == $b) +{$b = abs($a)+2;} #avoid $a and $b being equal + +BEGIN_PGML +Let [`f`] be a function of one variable. + +If [`[$a]`] is an [`x`]-intercept of [`f`], then this means that [`f\left(\right.`][_]{$a}{2}[`\left.\right)`] = [_]{0}{2}. + +If [`[$b]`] is the [`y`]-intercept of [`f`], then this means that [`f\left(\right.`][_]{0}{2}[`\left.\right)`] = [_]{$b}{2}. +END_PGML + +BEGIN_PGML_SOLUTION +Recall that points on the graph of [`y=f(x)`] have the form [`(x,f(x))`], where [`x`] is in the domain of [`f`]. + +- If [`[$a]`] is an [`x`]-intercept of [`f`], then the point [`([$a],0)`] is on the graph of [`y=f(x)`], and [`f([$a]) = 0`]. +- If [`[$b]`] is the [`y`]-intercept of [`f`], then the point [`(0,[$b])`] is on the graph of [`y=f(x)`], and [`f(0) = [$b]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-2-0-An-C/1-2-0-An-C-fcn-sub-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-2-0-An-C/1-2-0-An-C-fcn-sub-jms.pg new file mode 100644 index 0000000000..cd5e48bac1 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-2-0-An-C/1-2-0-An-C-fcn-sub-jms.pg @@ -0,0 +1,69 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Functions) +## DBsection(Function notation) +## Date(3 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1)*random(-1,1,2); #coefficient +$b = random(2, 4, 1); #power +$b2 = 2*$b; +$c = non_zero_random(-9,9,1); #constant term +$num = random(2,4,1); #evaluate at +$pm = random(-1,1,2); #plus or minus 1 + +$f = Formula("sin(pi*x)+$a*x^($b)+$c")->reduce(); +Context()->variables->add(t => 'Real'); #adds a new real variable t + +$num_ans = Compute("sin(pi*($num))+$a*($num)^($b)+$c"); +$neg_ans = Compute("sin(pi*(-x))+$a*(-x)^($b)+$c"); +$sub_ans = Compute("sin(pi*(t+$pm))+$a*(t+$pm)^($b)+$c"); +$sq_ans = Compute("sin(pi*(t^2))+$a*(t)^($b2)+$c"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f]``]. + +Evaluate the following expressions. Below, [`t`] is a variable. + +You do not need to simplify your answers, but enter exact values for all numerical answers. + +- [`f([$num])=\,`] [_]{$num_ans}{5} +- [`f(-x)=\,`][_]{$neg_ans}{20} +- [`f(t+[$pm])=\,`][_]{$sub_ans}{20} +- [`f(t^2)=\,`][_]{$sq_ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +- [``f([$num])=\sin(\pi([$num])) + [$a]([$num])^{[$b]} + [$c] = [$num_ans]``] +- [``f(-x)=[$neg_ans] = -\sin(\pi x)+[$a](-1)^{[$b]}x^{[$b]} + [$c]``] +- [``f(t+[$pm])=\sin(\pi(t+[$pm])) + [$a](t+[$pm])^{[$b]} + [$c] = [$sub_ans]``] +- [``f(t^2)=\sin(\pi(t^2)) + [$a](t^2)^{[$b]} + [$c] = [$sq_ans]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-2-0-An-C/1-2-0-An-C-mc1-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-2-0-An-C/1-2-0-An-C-mc1-jms.pg new file mode 100644 index 0000000000..c4b79c5cc7 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-2-0-An-C/1-2-0-An-C-mc1-jms.pg @@ -0,0 +1,48 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Functions) +## DBsection(Function notation) +## Institution(University of Calgary) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 5, 1); #power +$b = random(-9,-3,1); #domain left endpoint +$c = random(4,10,1); #domain right endpoint +$d = random(3,9,1); #coefficient + +$radio1 = RadioButtons( + [ [ "\(f:($b,$c)\rightarrow \mathbb{R}\) given by \(f(x)=a^{$a}-$d a\) for all \(x\in ($b,$c)\)", "\(f:[$b,$c] \rightarrow \mathbb{R}\) given by \(f(x)=x^{$a}-$d x\) for all \(x\in[$b,$c]\)", "\(f:[$b,$c] \rightarrow \mathbb{R}\) given by \(f(x)=(x,x^{$a}-$d x)\) for all \(x\in[$b,$c]\)", "\(f:($b,$c) \rightarrow \mathbb{R}\) given by \(f(x^{$a})=-$d x\) for all \(x\in[$b,$c]\)" ], 'None of these' ], + "\(f:[$b,$c] \rightarrow \mathbb{R}\) given by \(f(x)=x^{$a}-$d x\) for all \(x\in[$b,$c]\)" # correct answer +); + +BEGIN_PGML +Let [`a`] be a real number. + +The subset [`\{(a,a^{[$a]}-[$d] a) : [$b] \leq a \leq [$c] \}`] of [`\mathbb{R}^2`] represents which of the following functions? + + +[_]{$radio1} +END_PGML + +$twoa = 2*$a; + +BEGIN_PGML_SOLUTION +- All of the functions have a codomain of [`\mathbb{R}`] which is consistent with this setting. +- First, replace [`a`] with [`x`] in the description of the subset so we can think in familiar terms: [`\{(x,x^{[$a]}-[$d] x) : [$b] \leq x \leq [$c] \}`]. +- The domain of the function is specified by the condition that [`[$b]\leq x \leq [$c]`] which we can rephrase by saying that [`x`] is in the closed interval [`[[$b],[$c]]`]. So the domain of [`f`] is [`[[$b],[$c]]`]. +- The image of the function is given by the second coordinate of the ordered pair [`(x,f(x)) = (x,x^{[$a]}-[$d] x)`], so [`f(x) = x^{[$a]}-[$d] x`] for all [`x\in[[$b],[$c]]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-3-1-Ap-C/1-3-1-AP-C-solve-for-theta-AT.pg b/Contrib/UCalgary/249-1-0-0-C/1-3-1-Ap-C/1-3-1-AP-C-solve-for-theta-AT.pg new file mode 100644 index 0000000000..2a52f83db6 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-3-1-Ap-C/1-3-1-AP-C-solve-for-theta-AT.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Trigonometry) +## DBchapter(Analytic trigonometry) +## DBsection(Solving trigonometric equations exactly) +## Level(6) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + 'PGchoicemacros.pl', + 'PGgraders.pl', + 'unionTables.pl' +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# TODO: +# - Have a set of equations to randomly pull from +# - Have a corresponding sets of solutions for multiple choice? (doesn't really incentivize solving the equation) +# - Or just have a box where they can enter thetas. + +# Create a matching list and use popups +$ml = new_match_list(); +$ml->rf_print_q(~~&pop_up_list_print_q); +$ml->ra_pop_up_list([ + 'No answer' => '?', + 'A' => 'A', + 'B' => 'B', + 'C' => 'C', + 'D' => 'D', +]); + +# Add correct questions and answers +$ml->qa( + '\(2\sin^2{\theta} = 1\)', + '\(\theta = \frac{\pi}{4}, \frac{3\pi}{4}, \frac{5\pi}{4}, \frac{7\pi}{4}\)', + '\(\cos^2{\theta} + \sin{\theta} = 1\)', + '\(\theta = 0,\frac{\pi}{2},\pi\)', + '\(\sec{\theta}\csc{\theta} = 2\csc{\theta}\)', + '\(\theta = \frac{\pi}{3}, \frac{5\pi}{3}\)', + '\(\tan^2{\theta} - \tan{\theta} = 0\)', + '\(\theta = 0, \frac{\pi}{4}, \pi, \frac{5\pi}{4}\)', +); +$ml->choose(4); + +BEGIN_PGML +Match the solutions, [`\theta`], with the equations that they satisfy. + +[@ ColumnMatchTable($ml) @]*** +END_PGML + +ANS(str_cmp($ml->ra_correct_ans)); +@correct = @{ $ml->ra_correct_ans() }; +$answerstring = join(', ', @correct); + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-3-1-Ap-C/1-3-1-Ap-C-eval-cos-sin-AT.pg b/Contrib/UCalgary/249-1-0-0-C/1-3-1-Ap-C/1-3-1-Ap-C-eval-cos-sin-AT.pg new file mode 100644 index 0000000000..08e6e8c3dc --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-3-1-Ap-C/1-3-1-Ap-C-eval-cos-sin-AT.pg @@ -0,0 +1,52 @@ +## DESCRIPTION +## Give a value for pi +## ENDDESCRIPTION + + +## DBsubject(Trigonometry) +## DBchapter(Trigonometric functions) +## DBsection(Sine & cosine functions - definitions, graphs, & properties) +## Level(6) +## KEYWORDS('template', 'pi') + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; +$a = random(2, 4, 1); + +Context()->variables->are(x=>"Real"); + +$f1 = Formula(sin(x)); +$f2 = Formula(cos(x)); + +#$ans1 = $f1->eval(x=>(pi/$a)); +#$ans2 = $f2->eval(x=>(pi/$a)); + +$ans1 = Compute("sin(pi/$a)"); +$ans2 = Compute("cos(pi/$a)"); + +BEGIN_PGML +Evaluate the sine and cosine of [`\frac{\pi}{[$a]}`]. + ++ [`\sin{\frac{\pi}{[$a]}} =`] [_]{$ans1} + ++ [`\cos{\frac{\pi}{[$a]}} =`] [_]{$ans2} +END_PGML + +BEGIN_PGML_SOLUTION +The solutions are: + ++ [`\sin{\frac{\pi}{[$a]}} = [$ans1]`] + ++ [`\cos{\frac{\pi}{[$a]}} = [$ans2]`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-3-2-Ap-C/1-3-2-Ap-C-exp-to-log-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-3-2-Ap-C/1-3-2-Ap-C-exp-to-log-jms.pg new file mode 100644 index 0000000000..e3fdb06636 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-3-2-Ap-C/1-3-2-Ap-C-exp-to-log-jms.pg @@ -0,0 +1,46 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Exponential and logarithmic expressions and functions) +## DBsection(Exponential and logarithmic equations) +## Date(3 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 6, 1); #positive +$b = non_zero_random(-8,8,1); #non-zero +$log_ans = Compute("(x+$b)"); +$arg_ans = Compute("(x+$a)"); + +BEGIN_PGML +The equation [``e^{x+[$b]} = x+[$a]``] can be rewritten as the equation [`\ln \left( \right.`][_]{$arg_ans}{5}[`\left.\right) = \, `] [_]{$log_ans}{5}. +END_PGML + +BEGIN_PGML_SOLUTION +The natural logarithm and the natural exponential are inverse functions. +Therefore, for any real number [`y`] and any positive real number [`x`] we have that +[`y = \ln(x)`] if and only if [`e^y = x`] +Thus, [`e^{x+[$b]} = x+[$a]`] if and only if [`\ln([$arg_ans]) = [$log_ans]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-3-2-Ap-C/1-3-2-Ap-C-log-to-exp-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-3-2-Ap-C/1-3-2-Ap-C-log-to-exp-jms.pg new file mode 100644 index 0000000000..a87102c54f --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-3-2-Ap-C/1-3-2-Ap-C-log-to-exp-jms.pg @@ -0,0 +1,49 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Exponential and logarithmic expressions and functions) +## DBsection(Exponential and logarithmic equations) +## Date(3 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 6, 1); #positive +$b = non_zero_random(-8,8,1); #non-zero +$btimesx = Formula("$b*x")->reduce(); +$exp_ans = Compute("(x+$a)"); +$arg_ans = Compute("($b*x)"); + +BEGIN_PGML +In this problem, we will write [`\mathrm{exp}(x) = e^x`] for the natural ("base [`e`]") exponential function. + ++ The equation [`\ln(x+[$a]) = [$btimesx]`] can be rewritten as the equation [`\mathrm{exp} \left( \right.`][_]{$arg_ans}{5}[`\left.\right) = \, `] [_]{$exp_ans}{5}. +END_PGML + +BEGIN_PGML_SOLUTION +The natural logarithm and the natural exponential are inverse functions. +Therefore, for any real number [`y`] and any positive real number [`x`] we have that +[`y = \ln(x)`] if and only if [`\mathrm{exp}(y) = e^y = x`] +Thus, [`\ln(x+[$a]) = [$b]x`] if and only if [`\mathrm{exp}([$arg_ans]) = [$exp_ans]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-drop-down-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-drop-down-jms.pg new file mode 100644 index 0000000000..f8926ecc11 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-drop-down-jms.pg @@ -0,0 +1,85 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + +## KEYWORDS() + +## DBsubject('') +## DBchapter('') +## DBsection('') +## Date('') +## Author('') +## Institution('University of Calgary') + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 9, 1) * random(-1, 1, 2); +$b = non_zero_random(-7, 7, 1); +$c = random(2,7,1); +$f = Formula("$a*x*(x-$b)^2+$c(x-$b)")->reduce(); +$g = Formula("($b*x-$a)/((x-$a)^3)")->reduce(); +$h = Formula("sqrt($c*x^2+$a*x)")->reduce(); +$k = Formula("$c*x/(sqrt(x-$a))")->reduce(); + +$ftype = 'a polynomial'; +$gtype = 'a rational function'; +$htype = 'an algebraic function'; +$ktype = 'an algebraic function'; + +$fpopup = DropDown( + [ + 'a polynomial', + 'a rational function', + 'an algebraic function' + ], + $ftype +); + +$gpopup = DropDown( + [ + 'a polynomial', + 'a rational function', + 'an algebraic function' + ], + $gtype +); + +$hpopup = DropDown( + [ + 'a polynomial', + 'a rational function', + 'an algebraic function' + ], + $htype +); + + +$kpopup = DropDown( + [ + 'a polynomial', + 'a rational function', + 'an algebraic function' + ], + $ktype +); + +BEGIN_PGML +For each of the following functions choose the best description of the type of function it is. + ++ The function [``f(x) = [$f]``] is [_]{$fpopup}. + ++ The function [``f(x) = [$h]``] is [_]{$hpopup}. + ++ The function [``f(x) = [$g]``] is [_]{$gpopup}. + ++ The function [``f(x) = [$k]``] is [_]{$kpopup}. + +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-drop-down-jms_1.pg b/Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-drop-down-jms_1.pg new file mode 100644 index 0000000000..51abd35ea9 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-drop-down-jms_1.pg @@ -0,0 +1,60 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Rational equations and functions) +## DBsection(Rational functions) +## Institution(University of Calgary) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 9, 1) * random(-1, 1, 2); +$b = non_zero_random(-7, 7, 1); +$c = random(2,7,1); +$f = Formula("$a*x*(x-$b)^2+$c(x-$b)")->reduce(); +$g = Formula("($b*x-$a)/((x-$a)^3)")->reduce(); +$h = Formula("sqrt($c*x^2+$a*x)")->reduce(); +$k = Formula("$c*x/(sqrt(x-$a))")->reduce(); + +$ftype = 'a polynomial'; +$gtype = 'a rational function'; +$htype = 'an algebraic function'; +$ktype = 'an algebraic function'; + +sub popup { + #$type = $_[0]; # small typo using $_ to access arguments instead of @_ + $type = @_[0]; + $dd = DropDown( + [ + 'a polynomial', + 'a rational function', + 'an algebraic function' + ], + $type + ); + return $dd; +} + +BEGIN_PGML +For each of the following functions choose the best description of the type of function it is. + ++ The function [``f(x) = [$f]``] is [_]{popup($ftype)}. + ++ The function [``f(x) = [$h]``] is [_]{popup($htype)}. + ++ The function [``f(x) = [$g]``] is [_]{popup($gtype)}. + ++ The function [``f(x) = [$k]``] is [_]{popup($ktype)}. + +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-rational1-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-rational1-jms.pg new file mode 100644 index 0000000000..2850beedc2 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-4-0-U-C/1-4-0-U-C-rational1-jms.pg @@ -0,0 +1,42 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Rational equations and functions) +## DBsection(Rational functions) +## Institution(University of Calgary) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserCheckboxList.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 9, 1); #positive +$b = random(1,9,2); #odd +$c = $a-1; + +$checks1 = CheckboxList( + [ "\(f(x)=\dfrac{$b x^{$a} -$c x}{x - $a}\)", "\(f(x)=\dfrac{1}{$a x + $c x^{$b}}\)", "\(f(x)=\dfrac{\sin($a x)}{\cos($b x)}\)", "\(f(x)=\dfrac{x+$b}{\sqrt{$a x + $c x^2}}\)", "\(f(x) = \dfrac{e^{$c x}}{\ln($b x)}\)" ], + ["\(f(x)=\dfrac{$b x^{$a} -$c x}{x - $a}\)", "\(f(x)=\dfrac{1}{$a x + $c x^{$b}}\)"], # correct answers + separator => $BRBR +); + +BEGIN_PGML +Select all functions below that are *rational functions*. + +[_]{$checks1} +END_PGML + +BEGIN_PGML_SOLUTION +- A rational function is a ratio of two polynomials (sums and differences of powers of [`x`]), so a rational function cannot involve roots, logarithms, exponentials, nor trigonometric functions. +- For example, [`f(x)=\dfrac{[$b] x^{[$a]} -[$c] x}{x - [$a]}`] is a ratio of the two polynomails [`[$b] x^{[$a]} -[$c] x`] and [`x - [$a]`], so [`f`] is a rational function. +- On the other hand, [`f(x)=\dfrac{x+[$b]}{\sqrt{[$a] x + [$c] x^2}}`] is not a rational function (it is called an *algebraic function*) because the denominator [`\sqrt{[$a] x + [$c] x^2}`] is not a polynomail (because of the square root). +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-6-0-U-C/1-6-0-U-C-alg-dom-dg.pg b/Contrib/UCalgary/249-1-0-0-C/1-6-0-U-C/1-6-0-U-C-alg-dom-dg.pg new file mode 100644 index 0000000000..38709f08a0 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-6-0-U-C/1-6-0-U-C-alg-dom-dg.pg @@ -0,0 +1,48 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Functions) +## DBsection(Domain and range) +## Institution(University of Calgary) +## Author(Danny Glin) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = random(2, 9, 1); + +$f = Formula("sqrt(x^2-$a*x)")->reduce(); + +#$domain = Compute("(-inf,0)U($a,inf)"); +$domain = Compute("(-inf,0]U[$a,inf)"); # Made a small change here. - Aiden + +BEGIN_PGML +Find the domain of the function [`f(x)=[$f]`]. + +Enter your answer using interval notation and the union symbol, if needed. + +The domain is [_]{$domain}{20}[@helpLink('intervals')@]* +END_PGML + +BEGIN_PGML_SOLUTION +The domain of an algebraic function is the set of all [`x`] for which the function is defined (that is, "the formula for [`f`] makes sense"). + +We need to solve [`x^2-[$a]x \ge 0`] in order for the square root to be defined. Factoring, we see that this is equivalent to [`x(x-[$a]) \ge 0`], so either both factors need to be positive or both terms need to be negative, which gives [`x\le 0`] or [`x\ge [$a]`]. Therefore, the domain of [`f`] written in interval notation is [`[$domain]`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-1-0-0-C/1-6-0-U-C/1-6-0-U-C-rational-dom-jms.pg b/Contrib/UCalgary/249-1-0-0-C/1-6-0-U-C/1-6-0-U-C-rational-dom-jms.pg new file mode 100644 index 0000000000..8ae6908b32 --- /dev/null +++ b/Contrib/UCalgary/249-1-0-0-C/1-6-0-U-C/1-6-0-U-C-rational-dom-jms.pg @@ -0,0 +1,53 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Rational equations and functions) +## DBsection(Rational functions) +## Date(30 January 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) +## KEYWORDS(rational function, domain, interval) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = random(2, 5, 1); # root in denominator, coefficient in numerator +$b = non_zero_random(-6,6,1); # constatn term in numerator +$ap2 = $a+2; # second root in denominator (dinstinct) +$lin = -$a-$ap2; #linear term +$con = $a*$ap2; # constant term + +$f = Formula("($a x + $b)/(x**2+$lin x + $con)")->reduce(); + +$domain = Compute("(-inf,$a)U($a,$ap2)U($ap2,inf)"); + +BEGIN_PGML +Find the domain of the rational function [``f(x)=[$f]``]. + +Give your answer using interval notation and the union symbol, if needed. + +The domain of [`f`] is [_]{$domain}{20}[@helpLink('intervals')@]* +END_PGML + +BEGIN_PGML_SOLUTION +The domain of a rational function is the set of all [`x`] so that the denominator is nonzero. We we need to solve [`x^2+[$lin] x + [$con]=0`] to find which values of [`x`] to exclude from the domain of [`f`]. +First factor the denominator [```0=x^2+[$lin] x + [$con] = (x-[$a])(x-[$ap2]),```] +so [`x=[$a]`] and [`x=[$ap2]`] are the roots of the denominator and cannot be included in the domain. Therefore, the domain of [`f`] written in interval notation is [`[$domain]`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-blanks-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-blanks-jms.pg new file mode 100644 index 0000000000..a20a9b22a3 --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-blanks-jms.pg @@ -0,0 +1,54 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Quadratic equations and functions) +## DBsection(Completing the square) +## Date(19 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-9, 9, 1); +$b = non_zero_random(-9, 9, 1); +$c = random(2,3,1); #2 or 3 +## need $a and $c relatively prime +if($a % $c == 0) +{$a = random(-1,1,2)*random(5,7,2);} + +$apcb = $a+$c*$b; #linear coefficient +$ab = $a*$b; #constant coefficient + +$f = Formula("$c*x^2 + $apcb*x + $ab")->reduce(); + +BEGIN_PGML +Factor the polynomial [``f(x) = [$f]``] by filling in the blanks below. + +[`f(x) = (x+`][_]{$b}{2}[`)`][`(`][_]{$c}{2}[`x+`][_]{$a}{2}[`)`]. + +END_PGML + +BEGIN_PGML_SOLUTION +You can expand the righthand side to check that: +[``f(x) = [$f] = (x+[$b])([$c]x+[$a])``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-blanks-v2-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-blanks-v2-jms.pg new file mode 100644 index 0000000000..2bef06884e --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-blanks-v2-jms.pg @@ -0,0 +1,58 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Factoring) +## DBsection(Factoring trinomials) +## Date(19 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-6, 6, 1); +$b = non_zero_random(-6, 6, 1); +$c = random(2,3,1); #2 or 3 + +$apcb = $a+$c*$b; #linear coefficient +$ab = $a*$b; #constant coefficient +$fac = Compute("x"); #common factor of x + +if($a % $c == 0) #avoid common numerical factor of $c +{ $a = abs($a)+1; #redfine a + $apcb = $a+$c*$b; #redfine linear coefficient + $ab = $a*$b; #redfine constant coefficient +} + +$f = Formula("$c*x^3 + $apcb*x^2 + $ab*x")->reduce(); + +BEGIN_PGML +Factor the polynomial [``f(x) = [$f]``] by filling in the blanks below with either numbers or the variable [`x`]. + +[`f(x) =`] [_]{$fac}{2}[`(x+`][_]{$b}{2}[`)`][`(`][_]{$c}{2}[`x+`][_]{$a}{2}[`)`]. + +END_PGML + +BEGIN_PGML_SOLUTION +You can expand the righthand side to check that: +[``f(x) = [$f] = x(x+[$b])([$c]x+[$a])``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-root-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-root-jms.pg new file mode 100644 index 0000000000..e764f34872 --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-root-jms.pg @@ -0,0 +1,60 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Quadratic equations and functions) +## DBsection(Solve by factoring) +## Date(19 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-9, 9, 2); #guarantees distinct roots +$b = non_zero_random(-9, 9, 1); + +$aptb = $a+2*$b; #linear coefficient +$ab = $a*$b; #constant coefficient +$aneg = -$a; +$halfaneg = -$a/2; +$bneg = -$b; + +$f = Formula("2x^2 + $aptb*x + $ab")->reduce(); + +$ans = List("$halfaneg","$bneg"); + +BEGIN_PGML +Consider the polynomial [``f(x) = [$f]``]. + +Recall that a "root" of [`f`] is a solution to the equation [``f(x) = 0``]. + +Factor the polynomial [`f`] in order to find the roots of [`f`] and enter the roots below as a list separated by commas. + +The roots of [`f`] are: [_]{$ans}{6} +END_PGML + +BEGIN_PGML_SOLUTION +First we factor +[``f(x) = [$f] = (2x+[$a])(x+[$b])``], +so the roots of [`f`] are +[`\frac{[$aneg]}{2}=[$halfaneg]`] and [`[$bneg]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-root-v2-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-root-v2-jms.pg new file mode 100644 index 0000000000..e9f6f79f9a --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-1-0-Ap-C/2-1-0-Ap-C-factor-root-v2-jms.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Factoring) +## DBsection(Factoring: common factors) +## Date(19 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-9, 9, 1); +$b = non_zero_random(-9, 9, 1); + +if ($a - $b == 0) { + $b = abs($b) + 1; +}#guarantee distinct roots + +$apb = $a+$b; #linear coefficient +$ab = $a*$b; #constant coefficient +$aneg = -$a; +$bneg = -$b; + +$f = Formula("(x^3+$apb*x^2+$ab*x)")->reduce(); + +#$ans = List("0, $aneg","$bneg"); +$ans = List("0", "$aneg","$bneg"); # Fixed missing quote marks here. - Aiden + +BEGIN_PGML +Consider the polynomial [``f(x) = [$f]``]. + +Recall that a "root" of [`f`] is a solution to the equation [``f(x) = 0``]. + +Factor the polynomial [`f`] in order to find the roots of [`f`] and enter the roots below as a list separated by commas. + +The roots of [`f`] are: [_]{$ans}{10} +END_PGML + +BEGIN_PGML_SOLUTION +First we factor +[``f(x) = [$f] = x(x^2 + [$apb]x+[$ab]) = x(x+[$a])(x+[$b])``], +so the roots of [`f`] are [`0`], +[`[$aneg]`] and [`[$bneg]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-2-0-Ap-C/2-2-0-Ap-C-abs-quad-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-2-0-Ap-C/2-2-0-Ap-C-abs-quad-jms.pg new file mode 100644 index 0000000000..ce4fec36b4 --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-2-0-Ap-C/2-2-0-Ap-C-abs-quad-jms.pg @@ -0,0 +1,60 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Exponential and logarithmic expressions and functions) +## DBsection(Exponential functions) +## Date(20 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-7, 7, 1); +if($a == 1) +{$a = non_zero_random(-7,7,2);} +$am1 = $a - 1; +$am1neg = -$am1; +$b = $a*$am1; + +$ans1 = Compute("$a"); +$ans2 = Compute("$am1neg"); + +$f = Formula("|x-x^2|")->reduce(); # +$ans = List("$ans1","$ans2"); + +BEGIN_PGML +Find all real number solutions to the equation [``[$f] = [$b]``]. + +Enter the exact values of the solutions as a list separated by commas. If a solution occurs twice, enter it twice. If there are no solutions enter [|None|]*. + +The solutions to the equation are: [_]{$ans}{6} +END_PGML + +BEGIN_PGML_SOLUTION +Recall that [`|x| = x`] if [`x \geq 0`] and [`|x| = -x`] if [`x<0`]. + +There are two cases to consider. Either [`x-x^2 = -[$b]`] or [`x-x^2=[$b]`]. +First consider [`x-x^2=-[$b]`] and rearrnge to get [`0=x^2-x-[$b]=(x-[$a])(x-[$am1neg])`] so we get [`x=[$a]`] or [`x=[$am1neg]`]. + +In the other case, we can rearrange [`x-x^2=[$b]`] to get [`0=x^2-x+[$b]`], and using the quadratic formula we can see that there are no real number solutions to this equation. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-2-0-Ap-C/2-2-0-Ap-C-quad-log-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-2-0-Ap-C/2-2-0-Ap-C-quad-log-jms.pg new file mode 100644 index 0000000000..824355d28c --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-2-0-Ap-C/2-2-0-Ap-C-quad-log-jms.pg @@ -0,0 +1,62 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Exponential and logarithmic expressions and functions) +## DBsection(Logarithmic functions) +## Date(20 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-4, 4, 1); +$b = non_zero_random(-4, 4, 1); + +$apb = -$a-$b; #linear coefficient +$ab = $a*$b; #constant coefficient +$abneg = -$a*$b; #negative constant coefficient +$ans1 = Compute("e^($a)"); +$ans2 = Compute("e^($b)"); + +$f = Formula("(ln(x))^2 + $apb*ln(x)")->reduce(); #without constant term +$fcon = Formula("(ln(x))^2 + $apb*ln(x)+$ab")->reduce(); #rearranged + +$ans = List("$ans1","$ans2"); + +BEGIN_PGML +Find all solutions to the equation [``[$f] = [$abneg]``]. + +Here WeBWork is using the convention that [``\ln^2(x) = (\ln(x))^2``]. + +Enter the exact values of the solutions as a list separated by commas. If a solution occurs twice, enter it twice. If there are no solutions enter [|None|]*. + +The solutions to the equation are: [_]{$ans}{6} +END_PGML + +BEGIN_PGML_SOLUTION +Rearrange the equation [``[$f] = [$abneg]``] to be [``[$fcon]=0``]. +Then we can factor [``0 = (\ln(x) - [$a])(\ln(x) - [$b])``]. +So we get [``\ln(x) = [$a]``] or [``\ln(x) = [$b]``]. +Applying the exponential function to isolate for [`x`] we get the two solutions +[``x = e^{[$a]}``] or [``x = e^{[$b]}``]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-poly-int-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-poly-int-jms.pg new file mode 100644 index 0000000000..9c0895fec3 --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-poly-int-jms.pg @@ -0,0 +1,108 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Polynomial equations and functions) +## DBsection(Graphs of polynomials) +## Date(20 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$c = non_zero_random(-2,5,1); #keep -2reduce; +$g = Formula("$aplusb*x + $d")->reduce; + +if($c < 0) +{$ans = List("None");}#no solution when c is negative +else +{ +$x1 = Compute("($a+$b - sqrt(-$a^2+2*$a*$b-$b^2+2*$c))/2"); +$y1 = Compute("$aplusb*$x1+$d"); +$x2 = Compute("($a+$b + sqrt(-$a^2+2*$a*$b-$b^2+2*$c))/2"); +$y2 = Compute("$aplusb*$x2+$d"); +$ans = List("($x1,$y1)","($x2,$y2)"); +} + +BEGIN_PGML +Let [`f(x) = [$f]`] and let [`g(x) = [$g]`], where [`x\in\mathbb{R}`]. + +Find all points where the graphs of the functions [`y=f(x)`] and [`y=g(x)`] intersect. + +Enter the solutions as a list of points "[`(x,y)`]" separated by commas. If there are no points of intersection enter [|None|]*. + +The points of intersection are: [_]{$ans}{10} +END_PGML +if($c==3) +{ +BEGIN_PGML_SOLUTION +To find the intersection points we must solve the equation [`[$f] = [$g]`]. + +We can rearrange this equation use the quadratic formula to find that [`x=5-\dfrac{1}{\sqrt{2}}\approx[$x1]`] or [`x=5+\dfrac{1}{\sqrt{2}}\approx[$x2]`]. + +We find the [`y`]-coordinates by evaluating [`g(x)`] at [`x=5-\frac{1}{\sqrt{2}}`] and [`x=5+\frac{1}{\sqrt{2}}`] to get the intersection points [`(5-\frac{1}{\sqrt{2}},1-5\sqrt{2})\approx([$x1],[$y1])`] and [`(5+\frac{1}{\sqrt{2}},1+5\sqrt{2})\approx([$x2],[$y2])`]. +END_PGML_SOLUTION +} +elsif($c>0) +{ +BEGIN_PGML_SOLUTION +To find the intersection points we must solve the equation [`[$f] = [$g]`]. + +We can rearrange this equation and factor or use the quadratic formula to find that [`x=[$x1]`] or [`x=[$x2]`]. + +We find the [`y`]-coordinates by evaluating [`g(x)`] at [`x=[$x1]`] and [`x=[$x2]`] to get the intersection points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. +END_PGML_SOLUTION +} +else +{ +BEGIN_PGML_SOLUTION +To find the intersection points we must solve the equation [`[$f] = [$g]`]. + +We can rearrange this equation use the quadratic formula to find that there are no real solutions. Therefore, there are no points of intersection. +END_PGML_SOLUTION +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-poly-int-v2-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-poly-int-v2-jms.pg new file mode 100644 index 0000000000..b858653603 --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-poly-int-v2-jms.pg @@ -0,0 +1,86 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Quadratic equations and functions) +## DBsection(Solving equations) +## Date(21 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# problem will result in solving (1/4)x^2 + bx + c = 0 with discriminant $dsq when $d > 0, no sol when $d < 0 +$d = non_zero_random(-2,9,1); #square root of discriminant when positive +$dsq = $d**2; #nonzero discriminant guarantees distinct roots when $d > 0 +$b = non_zero_random(-5,5,1); #linear coefficient +$bsq = $b**2; +$a = non_zero_random(-6,6,2); #even +$am1q = $a-(1/4); +if($d < 0) +{ +$c = ($bsq-$d); +$ans = List("None");}#no solution when d is negative +else +{ +$c = Compute("($bsq-$dsq)"); +$x1 = Compute("(-$b - sqrt($dsq))*2"); #a = 1/4, discriminant $dsq +$y1 = Compute("4*$am1q*($x1)^2-4*$c"); +$x2 = Compute("(-$b + sqrt($dsq))*2"); #a = 1/4, discriminant $dsq +$y2 = Compute("4*$am1q*($x2)^2-4*$c"); +$ans = List("($x1,$y1)","($x2,$y2)"); +} + +#build functions $f and $g +$f = Formula("(4*$a*x^2+4*$b*x)")->reduce; +$g = Formula("(4*$am1q*x^2-4*$c)")->reduce; +#$eq = Compute("(1/4)*x^2+$b*x + $c")->reduce; +$eq4 = Formula("x^2+4*$b*x + 4*$c")->reduce; #cleared out rational coefficients, changes y-coordinates too + +BEGIN_PGML +Let [`f(x) = [$f]`] and let [`g(x) = [$g]`], where [`x\in\mathbb{R}`]. + +Find all points where the graphs of the functions [`y=f(x)`] and [`y=g(x)`] intersect. + +Enter the solutions as a list of points "[`(x,y)`]" separated by commas. If there are no points of intersection enter [|None|]*. + +The points of intersection are: [_]{$ans}{10} +END_PGML + +if($d>0) +{ +BEGIN_PGML_SOLUTION +To find the intersection points we must solve the equation [`[$f] = [$g]`]. + +We can rearrange this equation to become [``[$eq4]=0``], and now we can factor or use the quadratic formula to find that [`x=[$x1]`] or [`x=[$x2]`]. + +We find the [`y`]-coordinates by evaluating [`g(x)`] at [`x=[$x1]`] and [`x=[$x2]`] to get the intersection points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. +END_PGML_SOLUTION +} +else +{ +BEGIN_PGML_SOLUTION +To find the intersection points we must solve the equation [`[$f] = [$g]`]. + +We can rearrange this equation to become [``[$eq4]=0``], and use the quadratic formula to find that there are no real solutions. Therefore, there are no points of intersection. +END_PGML_SOLUTION +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-quad-lin-int-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-quad-lin-int-jms.pg new file mode 100644 index 0000000000..1216fe4b1e --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-2-1-Ap-C/2-2-1-Ap-C-quad-lin-int-jms.pg @@ -0,0 +1,84 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Quadratic equations and functions) +## DBsection(Solving equations) +## Date(21 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# problem will result in solving (1/4)x^2 + bx + c = 0 with discriminant $dsq when $d > 0, no sol when $d < 0 +$d = non_zero_random(-2,7,1); #square root of discriminant when positive +$dsq = $d**2; #nonzero discriminant guarantees distinct roots when $d > 0 +$b = non_zero_random(-5,5,1); #linear coefficient +$bsq = $b**2; +if($d < 0) +{ +$c = ($bsq-$d); +$ans = List("None");}#no solution when d is negative +else +{ +$c = Compute("($bsq-$dsq)"); +$x1 = Compute("(-$b - sqrt($dsq))*2"); #a = 1/4, discriminant $dsq +$y1 = Compute("(-4*$b*$x1-2*$c)"); +$x2 = Compute("(-$b + sqrt($dsq))*2"); #a = 1/4, discriminant $dsq +$y2 = Compute("(-4*$b*$x2-2*$c)"); +$ans = List("($x1,$y1)","($x2,$y2)"); +} + +#build functions $f and $g +$f = Formula("(x^2+2*$c)")->reduce; +$g = Formula("(-4*$b*x-2*$c)")->reduce; +#$eq = Formula("(1/4)*x^2+$b*x + $c")->reduce; +$eq4 = Formula("x^2+4*$b*x + 4*$c")->reduce; #cleared out rational coefficients, changes y-coordinates too + +BEGIN_PGML +Let [`f(x) = [$f]`] and let [`g(x) = [$g]`], where [`x\in\mathbb{R}`]. + +Find all points where the graphs of the functions [`y=f(x)`] and [`y=g(x)`] intersect. + +Enter the solutions as a list of points "[`(x,y)`]" separated by commas. If there are no points of intersection enter [|None|]*. + +The points of intersection are: [_]{$ans}{10} +END_PGML + +if($d>0) +{ +BEGIN_PGML_SOLUTION +To find the intersection points we must solve the equation [`[$f] = [$g]`]. + +We can rearrange this equation to become [``[$eq4]=0``], and now we can factor or use the quadratic formula to find that [`x=[$x1]`] or [`x=[$x2]`]. + +We find the [`y`]-coordinates by evaluating [`g(x)`] at [`x=[$x1]`] and [`x=[$x2]`] to get the intersection points [`([$x1],[$y1])`] and [`([$x2],[$y2])`]. +END_PGML_SOLUTION +} +else +{ +BEGIN_PGML_SOLUTION +To find the intersection points we must solve the equation [`[$f] = [$g]`]. + +We can rearrange this equation to become [``[$eq4]=0``], and use the quadratic formula to find that there are no real solutions. Therefore, there are no points of intersection. +END_PGML_SOLUTION +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-exp-log-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-exp-log-jms.pg new file mode 100644 index 0000000000..ac3d26d54b --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-exp-log-jms.pg @@ -0,0 +1,57 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Exponential and logarithmic expressions and functions) +## DBsection(Exponential and logarithmic equations) +## Date(20 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 6, 1); +$ans = List("None"); + +BEGIN_PGML +Find all real number solutions to the equation [``\ln(x) = e^{[$a]x}``]. + +Enter the exact values of the solutions as a list separated by commas. If a solution occurs twice, enter it twice. If there are no solutions enter [|None|]*. + +The solutions to the equation are: [_]{$ans}{6} +END_PGML + +BEGIN_PGML_HINT +Plot the graphs of the functions [`y=\ln(x)`] and [`y=e^{[$a]x}`]. +END_PGML_HINT + +BEGIN_PGML_SOLUTION +The domain of [`\ln(x)`] is the set of all real numbers with [`x>0`], so we should only consider [`x>0`]. + +First recall that [`e^{[$a]x} > 0`] for all [`x`], and [`\ln(x) < 0`] for [`0 [$a]x > x`]. In particular, [`e^x>x`] and since [`\ln(x)`] is an increasing funciton, we get [`x > \ln(x)`] for all [`x>0`]. + +Putting this all together, we see that [`e^{[$a]x} > x > \ln(x)`] for all [`x>0`], so there are no solution to the equation [``\ln(x) = e^{[$a]x}``]. + +Note that we will be able to use calculus to argue that [`e^{x} > x`] more carefully later in the course. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-lin-log-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-lin-log-jms.pg new file mode 100644 index 0000000000..93f9352909 --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-lin-log-jms.pg @@ -0,0 +1,56 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Exponential and logarithmic expressions and functions) +## DBsection(Logarithmic functions) +## Date(20 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 8, 1); +$b = Compute("-1/($a)"); + +$ans1 = Compute("e^(-1/($a))"); + +$f = Formula("$a*x*ln(x) + x")->reduce(); # +$ans = List("$ans1"); #to use different answer type, currently using numeric so exact value is printed + +BEGIN_PGML +Consider the function [`f(x) = [$f]`]. + +Find all real number solutions to the equation [``f(x) = 0``]. + +Enter the exact value(s) of the solution(s) as a list separated by commas. If there are no solutions enter [|None|]*. + +The solution(s) to the equation is/are: [_]{$ans1}{6} +END_PGML + +BEGIN_PGML_HINT +Make sure that all of the solutions are in the domain of the function [`f(x) = [$f]`]. +END_PGML_HINT + +BEGIN_PGML_SOLUTION +We can factor [```0=f(x)=[$f] = x([$a]\ln(x) +1) ```] and we note that [`x\neq 0`] since [`0`] is not in the domain of [`f`]. Therefore, we must have [`[$a]\ln(x) +1=0`], so [`\ln(x) = -\frac{1}{[$a]}=[$b]`]. Now we can apply the exponential function to get [`x = e^{-1/[$a]} = e^{[$b]}\approx[$ans1]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-quad-log-dist-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-quad-log-dist-jms.pg new file mode 100644 index 0000000000..6348da8917 --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-2-2-Ap-C/2-2-2-Ap-C-quad-log-dist-jms.pg @@ -0,0 +1,68 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Exponential and logarithmic expressions and functions) +## DBsection(Exponential and logarithmic equations) +## Date(20 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(1, 6, 1); #positive +$c = random(1,10,1); #step size +$b = $a - $c; #smaller +if($a+$b==0) +{$b = $b-2;}#avoid difference of squares + +$apb = -$a-$b; #linear coefficient +$ab = $a*$b; #constant coefficient +$abneg = -$a*$b; #negative constant coefficient +$ans1 = Compute("e^($a)"); #large solution +$ans2 = Compute("e^($b)"); #small solution + +$f = Formula("(ln(x))^2 + $apb*ln(x)")->reduce(); #without constant term +$fcon = Formula("(ln(x))^2 + $apb*ln(x)+$ab")->reduce(); #rearranged + + +BEGIN_PGML +Find all solutions to the equation [``[$f] = [$abneg]``]. + +Here WeBWork is using the convention that [``\ln^2(x) = (\ln(x))^2``]. + +Enter the exact values of the solutions below. + +The larger solution is [_]{$ans1}{3}. + +The smaller solution is [_]{$ans2}{3}. +END_PGML + +BEGIN_PGML_SOLUTION +Rearrange the equation [``[$f] = [$abneg]``] to be [``[$fcon]=0``]. +Then we can factor [``0 = (\ln(x) - [$a])(\ln(x) - [$b])``]. +So we get [``\ln(x) = [$a]``] or [``\ln(x) = [$b]``]. +Applying the exponential function to isolate for [`x`] we get the two solutions +[``x = e^{[$a]}``] or [``x = e^{[$b]}``]. + +Now, [``x = e^{[$a]}``] is the larger solution and [``x = e^{[$b]}``] is the smaller solution. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-cos-eq-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-cos-eq-jms.pg new file mode 100644 index 0000000000..4cb797d1db --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-cos-eq-jms.pg @@ -0,0 +1,52 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Trigonometry) +## DBchapter(Trigonometric functions) +## DBsection(Sine & cosine functions - definitions, graphs, & properties) +## Date(21 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 3, 1); #coefficient of 2 or 3 only +if($a==2) +{ +$ans = Compute("2*pi/3"); +} +else +{ +$ans = Compute("pi/2"); +} + +BEGIN_PGML +Find all real number solutions to the equation [``\cos(x) = \cos([$a]x)``] where [`x`] is in the open interval [`(0,\pi)`]. + +Enter the exact value(s) of the solution(s) as a list separated by commas. If there are no solutions enter [|None|]*. + +The solution(s) to the equation is/are: [_]{$ans}{6} +END_PGML + +BEGIN_PGML_HINT +Try graphing the functions [`y=\cos(x)`] and [`y=\cos([$a]x)`], or "guessing and testing" with the known special values of [`\cos(x)`]. +END_PGML_HINT + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-sin-eq-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-sin-eq-jms.pg new file mode 100644 index 0000000000..4517f69bb2 --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-sin-eq-jms.pg @@ -0,0 +1,54 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Trigonometry) +## DBchapter(Trigonometric functions) +## DBsection(Sine & cosine functions - definitions, graphs, & properties) +## Date(21 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 3, 1); #coefficient of 2 or 3 only +if($a==2) +{ +$ans = Compute("pi/3"); +} +else +{ +$ans1 = Compute("pi/4"); +$ans2 = Compute("3*pi/4"); +$ans = List("$ans1,$ans2"); +} + +BEGIN_PGML +Find all real number solutions to the equation [``\sin(x) = \sin([$a]x)``] where [`x`] is in the open interval [`(0,\pi)`]. + +Enter the exact value(s) of the solution(s) as a list separated by commas. If there are no solutions enter [|None|]*. + +The solution(s) to the equation is/are: [_]{$ans}{6} +END_PGML + +BEGIN_PGML_HINT +Try graphing the functions [`y=\sin(x)`] and [`y=\sin([$a]x)`], or "guessing and testing" with the known special values of [`\sin(x)`]. +END_PGML_HINT + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-trig-x-jms.pg b/Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-trig-x-jms.pg new file mode 100644 index 0000000000..4aa7a410bd --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-2-3-Ap-C/2-2-3-Ap-C-trig-x-jms.pg @@ -0,0 +1,69 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Trigonometry) +## DBchapter(Trigonometric functions) +## DBsection(Sine & cosine functions - definitions, graphs, & properties) +## Date(21 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-1, 1, 1); #coefficient of -1 or 1 only to choose sine or cosine +if($a==-1) +{ +$f = Compute("x+sin(2*x)")->reduce; +$ans = Compute("pi/2"); +} +else +{ +$f = Compute("x+cos(2*x)")->reduce; +$ans1 = Compute("pi/4"); +$ans2 = Compute("3*pi/4"); +$ans = List("$ans1","$ans2"); +} + +BEGIN_PGML +Find all real number solutions to the equation [``[$f] = x``] where [`x`] is in the open interval [`(0,\pi)`]. + +Enter the exact value(s) of the solution(s) as a list separated by commas. If there are no solutions enter [|None|]*. + +The solution(s) to the equation is/are: [_]{$ans}{6} +END_PGML + +if($a==-1) +{ +BEGIN_PGML_SOLUTION +Try graphing the functions [`y=x+\sin(2x)`] and [`y=x`], or looking for solutions to [`\sin(2x)=0`] in the correct interval. + +You will find one solution [`x = \dfrac{\pi}{2}`]. +END_PGML_SOLUTION +} +else +{ +BEGIN_PGML_SOLUTION +Try graphing the functions [`y=x+\cos(2x)`] and [`y=x`], or looking for solutions to [`\cos(2x)=0`] in the correct interval. + +You will find twos solution [`x = \dfrac{\pi}{4}`] or [`x = \dfrac{3\pi}{4}`]. +END_PGML_SOLUTION +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-3-0-An-C/2-3-0-An-C-tnslt-eqtn-cmm.pg b/Contrib/UCalgary/249-2-0-0-C/2-3-0-An-C/2-3-0-An-C-tnslt-eqtn-cmm.pg new file mode 100644 index 0000000000..371e88643f --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-3-0-An-C/2-3-0-An-C-tnslt-eqtn-cmm.pg @@ -0,0 +1,77 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Algebra of real numbers and simplifying expressions) +## DBsection(Evaluating expressions) +## Date(21 April 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserRadioButtons.pl", +); + + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(3, 4, 1); +$b = random(2, 4, 1); +$c = random(2, 8, 1); + +if($a==3) +{ +$rt = "cube"; +} +else +{ +$rt = "fourth"; +} + +if($b==2) +{ +$pwr = "squared"; +} +elsif ($b==3) +{ +$pwr = "cubed"; +} +else +{ +$pwr = "to the fourth power"; +} + +$radio1 = RadioButtons( + [ [ "The $rt root of \(x\) is at most $c times \(y\) $pwr", "The $rt root of \(x\) is less than $c times \(y\) $pwr", "The square root of \(x\) is at most $c times \(y\) $pwr", "The square root of \(x\) is less than $c times \(y\) $pwr", "The $rt root of \(x\) is at least $c times \(y\) $pwr", "The square root of \(x\) is at least $c times \(y\) $pwr", ], 'None of these' ], + "The $rt root of \(x\) is at most $c times \(y\) $pwr" # correct answer +); + +BEGIN_PGML +Which of the following is a correct translation of the following equation: + +[`\sqrt[[$a]]{x} \leq [$c]y^[$b]`] + + +[_]{$radio1} +END_PGML + +BEGIN_PGML_SOLUTION +The inequality "[``A \leq B``]" can be translated as "[``A``] is less than or equal to [``B``]" or as "[``A``] is at most [``B``]." So this equation is stating that the [$rt] root of [``x``] is at most [$c] times [``y``] [$pwr]. + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-2-0-0-C/2-3-0-An-C/2-3-0-An-C-tnslt-ineq-cmm.pg b/Contrib/UCalgary/249-2-0-0-C/2-3-0-An-C/2-3-0-An-C-tnslt-ineq-cmm.pg new file mode 100644 index 0000000000..c56c84d982 --- /dev/null +++ b/Contrib/UCalgary/249-2-0-0-C/2-3-0-An-C/2-3-0-An-C-tnslt-ineq-cmm.pg @@ -0,0 +1,52 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Algebra) +## DBchapter(Algebra of real numbers and simplifying expressions) +## DBsection(Evaluating expressions) +## Date(21 April 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserRadioButtons.pl", +); + + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 10, 1); + +$radio1 = RadioButtons( + [ [ "\(\sqrt{x} \geq $a y\)", "\($a \sqrt{x} \geq y\)", "\(\sqrt{x} > $a y\)", "\($a \sqrt{x} > y\)", ], 'None of these' ], + "\(\sqrt{x} \geq $a y\)" # correct answer +); + +BEGIN_PGML +Which of the following is a correct translation of the phrase *"the square root of [`x`] is at least [$a] times the value of [`y`]"*? + + +[_]{$radio1} +END_PGML + +BEGIN_PGML_SOLUTION + +The statement "'[``A``]' is at least '[``B``]'" can be translated to the inequality "[``A \geq B``]" and "[$a] times the value of [``y``]" can be translated as [``[$a]y``]. So this phrase is stating that [``\sqrt{x} \geq [$a]y``]. + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-3-0-0-C/3-1-0-Ap-I/3-1-0-Ap-I-approx-funct-jms.pg b/Contrib/UCalgary/249-3-0-0-C/3-1-0-Ap-I/3-1-0-Ap-I-approx-funct-jms.pg new file mode 100644 index 0000000000..7d9656d226 --- /dev/null +++ b/Contrib/UCalgary/249-3-0-0-C/3-1-0-Ap-I/3-1-0-Ap-I-approx-funct-jms.pg @@ -0,0 +1,77 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Linear approximation and differentials) +## Date(25 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(5) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" #Dropdown questions +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2,5,1); +$aa = $a**2; #a squared +$b = random(1,3,1); #shift +$aam1 = $aa - $b; #centre +$err = random(1,9,1)/100; #error +$c = $aa + $err; #value to approx +$aam1err = $aam1 + $err; #centre plus error + +$ans = Compute("sqrt(x+$b)"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +$ans->{limits} = [1,3]; + +$popup = DropDown( + [ + 'a Rate(s) of Change Problem', + 'an Approximation Problem', + 'an Optimization Problem', + 'an Integration Problem' + ], + 'an Approximation Problem' +); + +BEGIN_PGML + + +Find a function [`f(x)`] of one variable [`x`] that you could use to estimate the value of [`{\sqrt{[$c]}}`] by computing the Taylor Polynomial of [`f`] centred at [`x=[$aam1]`]. Make this choice so that all numerical evaluations can be done "by hand". + +[`f(x)=\, `][_]{$ans}{20} + + ++ What type of calculus problem is this? + +[_]{$popup} + +END_PGML + +BEGIN_PGML_SOLUTION +This is an Approximation Problem. + +Note that [`{\sqrt{[$c]}} = \sqrt{[$aam1err]+[$b]}`], and [`[$aam1err]`] is close to [`[$aam1]`], so we can choose [`f(x) = [$ans]`]. + +This choice of [`f`] also keeps the numerical computations simple since [`f([$aam1])=\sqrt{[$aam1]+[$b]} = \sqrt{[$aa]} = [$a]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); \ No newline at end of file diff --git a/Contrib/UCalgary/249-3-0-0-C/3-1-0-Ap-I/3-1-0-Ap-I-opt-funct-jms.pg b/Contrib/UCalgary/249-3-0-0-C/3-1-0-Ap-I/3-1-0-Ap-I-opt-funct-jms.pg new file mode 100644 index 0000000000..4540d6fa63 --- /dev/null +++ b/Contrib/UCalgary/249-3-0-0-C/3-1-0-Ap-I/3-1-0-Ap-I-opt-funct-jms.pg @@ -0,0 +1,80 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Motivational applications (estimation)) +## Date(25 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(5) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" #Dropdown questions +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2,5,1); #scale +$vol = random(1000,2000,25); #volume +$voldiva = $vol/$a; #volume / a +$vol2diva = (2*$vol)/$a; #twice volume / a +$aa = $a*2; #twice a +$volvol = $vol*2; #twice vol +$b = $vol2diva + $volvol; + +$ans = Compute("$aa*x^2 + $b*x^(-1)"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +$ans->{limits} = [1,3]; + +$popup = DropDown( + [ + 'a Rate(s) of Change Problem', + 'an Approximation Problem', + 'an Optimization Problem', + 'an Integration Problem' + ], + 'an Optimization Problem' +); + +BEGIN_PGML +A closed box with volume equal to [`[$vol]\, \rm{cm}^3`] is to be made so that the length of the rectangular base is [`[$a]`] times with the width of the base. + +Let [`x`] be the width of the base of the box measured in [`\rm{cm}`]. + ++ Find a function [`f(x)`] that equals the surface area of the box, in terms of one variable [`x`], and that you could use to minimize the surface area. + +[`f(x)=\, `][_]{$ans}{20} + + ++ What type of calculus problem is this? + +[_]{$popup} + +END_PGML + +BEGIN_PGML_SOLUTION +This is an Optimization Problem. + +Let [`y`] be the height of the box. The width of the base is [`x`] and the length of the base is [`[$a]x`]. Then the volume of the box is [```[$vol] = x \times [$a]x \times y = [$a]x^2y.```] +So, we can isolate [`y`] as [``y = \dfrac{[$vol]}{[$a]x^2} = \frac{[$voldiva]}{x^2}``]. + +The surface area of the box is [`2(x\times [$a]x) + 2(x \times y) + 2 ([$a]x \times y)`], which we can write in terms of [`x`], by substituting [``y = \frac{[$voldiva]}{x^2}``], as [```f(x) = [$aa] x^2 + [$vol2diva] \frac{x}{x^2} + [$volvol] \frac{x}{x^2} = [$ans].```] +END_PGML_SOLUTION + +ENDDOCUMENT(); \ No newline at end of file diff --git a/Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-jms.pg b/Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-jms.pg new file mode 100644 index 0000000000..1cd3c9655a --- /dev/null +++ b/Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-jms.pg @@ -0,0 +1,148 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Linear approximation and differentials) +## Date(24 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$d = random(1,3,1); #randomly choose one of the three statements below + +if($d==1) +{ +$TP = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Linear or Taylor Polynomial Approximation' +); +$DA = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Differential Approximation' +); + +$a = random(2,9,1); +$aa = $a**2; +$err = random(2,9,1)/100; +$val = Compute("$aa +$err"); +$pow = random(2,4,1); +$per = random(10,70,10); + +BEGIN_PGML +Consider the following two approximation problems. + ++ Approximate the value of [`\sqrt{[$val]}`]. + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$TP} + + ++ Suppose that a [`S = {[$a]} x^{[$pow]}`]. If [`S`] is increased by [`[$per]\%`], then what is the approximate percentage increase in [`x`]? + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$DA} + +END_PGML +} +elsif($d==2) +{ +$NM = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Newton`s Method' +); +$TP = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Linear or Taylor Polynomial Approximation' +); +$a = random(2,9,1); +$b = random(3,9,1); +$pow = random(3,5,1); +$err = random(2,9,1)/100; +$val = $b + $err; +BEGIN_PGML +Consider the following two approximation problems. + ++ Approximate the solution to the equation [`[$a]xe^x - 1 = 0 `], where [`x\in[0,1]`]. + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$NM} + ++ Approximate the value of [`([$val])^{[$pow]}`]. + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$TP} + +END_PGML +} +else +{ +$DA = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Differential Approximation' +); +$NM = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Newton`s Method' +); +$a = random(2,9,1); +$pow = random(2,4,1); +$per = random(10,70,10); +$c = random(1,7,2); #odd +BEGIN_PGML +Consider the following two approximation problems. + ++ Suppose that a [`A = \dfrac{\pi}{[$a]} r^{[$pow]}`]. If [`A`] is decreased by [`[$per]\%`], then what is the approximate percentage decrease in [`r`]? + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$DA} + ++ Approximate the real number solution to the equation [`x^3 + x + [$c] = 0 `], where [`x \in [-2,0]`]. + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$NM} + +END_PGML +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-jmsW2026.pg b/Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-jmsW2026.pg new file mode 100644 index 0000000000..6a05bc63f7 --- /dev/null +++ b/Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-jmsW2026.pg @@ -0,0 +1,62 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Linear approximation and differentials) +## Date(24 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + + + + +$NM = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + ], + 'Newton`s Method' +); +$TP = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + ], + 'Linear or Taylor Polynomial Approximation' +); +$a = random(2,9,1); +$b = random(3,9,1); +$pow = random(3,5,1); +$err = random(2,9,1)/100; +$val = $b + $err; +BEGIN_PGML +Consider the following two approximation problems. + ++ Approximate the solution to the equation [`[$a]xe^x - 1 = 0 `], where [`x\in[0,1]`]. + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$NM} + ++ Approximate the value of [`([$val])^{[$pow]}`]. + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$TP} + +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-v2-jms.pg b/Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-v2-jms.pg new file mode 100644 index 0000000000..e0ec0a2854 --- /dev/null +++ b/Contrib/UCalgary/249-3-0-0-C/3-4-0-E-I/3-4-0-E-I-approx-choice-v2-jms.pg @@ -0,0 +1,177 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Linear approximation and differentials) +## Date(25 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$d = random(1,3,1); #randomly choose one of the three statements below + +if($d==1) +{ +$TP = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Linear or Taylor Polynomial Approximation' +); +$DA = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Differential Approximation' +); +$NM = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Newton`s Method' +); + +$a = random(2,9,1); +$err = random(2,9,1)/100; +$val = Compute("1+$a +$err"); +$pow = random(2,4,1); +$per = random(10,70,10); +$c = random(2,5,2); #odd +$lt = Compute("-1-$c"); +$rt = Compute("$c+1"); + +BEGIN_PGML +Consider the following two approximation problems. + ++ Suppose that [`y = {[$a]} \sqrt{1+x^{[$pow]}}`]. If [`y`] is increased by [`[$per]\%`], then what is the approximate percentage change in [`x`]? + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$DA} + + ++ Approximate the real number solutions to the equation [`e^x+ - x - [$c] = 0 `], where [`x \in [[$lt],[$rt]]`]. + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$NM} + + + +END_PGML +} +elsif($d==2) +{ +$TP = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Linear or Taylor Polynomial Approximation' +); +$DA = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Differential Approximation' +); +$NM = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Newton`s Method' +); +$a = random(2,9,1); +$err = random(2,9,1)/10; +BEGIN_PGML +Consider the following two approximation problems. + ++ Approximate the solution to the equation [`x\ln(x) - [$a] = 0 `], where [`x\in[1,10]`]. + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$NM} + ++ Approximate the value of [`\sin([$err])`]. + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$TP} + +END_PGML +} +else +{ +$TP = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Linear or Taylor Polynomial Approximation' +); +$DA = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Differential Approximation' +); +$NM = DropDown( + [ + 'Linear or Taylor Polynomial Approximation', + 'Newton`s Method', + 'Differential Approximation' + ], + 'Newton`s Method' +); +$b = random(2,9,1); +$err = random(2,9,1)/100; +$val = Compute("1+$b +$err"); +$a = random(2,9,1); +$pow = random(2,3,1); +$per = random(10,70,10); +Context()->variables->add(r=>"Real"); +$form = Compute("r^([$pow])*sqrt(pi-r)"); +BEGIN_PGML +Consider the following two approximation problems. + ++ Using the fucntion [`f(x) = \ln(x+1)`], approximate the value of [`\ln([$val])`]. + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$TP} + ++ Suppose that a [`V = \dfrac{\pi}{[$a]} [$form]`]. If [`V`] is decreased by [`[$per]\%`], then what is the approximate percentage change in [`r`]? + +Which of the following techniques would be most helpful in solving the given problem? + +[_]{$DA} + +END_PGML +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-3-0-0-C/3-5-1-Ap-I/3-5-1-Ap-I-first-der-test-jms.pg b/Contrib/UCalgary/249-3-0-0-C/3-5-1-Ap-I/3-5-1-Ap-I-first-der-test-jms.pg new file mode 100644 index 0000000000..3ab71ca4ed --- /dev/null +++ b/Contrib/UCalgary/249-3-0-0-C/3-5-1-Ap-I/3-5-1-Ap-I-first-der-test-jms.pg @@ -0,0 +1,127 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Higher-order derivatives) +## Date(25 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + + +# First Derivative Test +$a = random(1,4,1); #left end point +$b = random(8,11,1); #right end point +$d = random(2,3,1); #step +$c = $a+$d; #critical point +$val = random(-50,50,10); #extreme + +$lnum = random(-1,1,2); +if($lnum==-1) +{$lsign = '<';} +else +{$lsign = '>';} + +$rnum = random(-1,1,2); +if($rnum==-1) +{$rsign = '<';} +else +{$rsign = '>';} + +if($lnum==$rnum) +{ +$ans_test = 'First Derivative Test'; +$ans_extreme = 'none of the above'; +} +else +{$ans_test = 'Global/General Interval Method'; +if($lnum < $rnum) +{ +$ans_extreme = 'global (absolute) minimum'; +} +else +{ +$ans_extreme = 'global (absolute) maximum'; +} +} + + +$test = DropDown( + [ + 'First Derivative Test', + 'Second Derivative Test', + 'Closed Interval Method', + 'Global/General Interval Method' + ], + $ans_test +); + + +$extrema = DropDown( + [ + 'local maximum', + 'global (absolute) maximum', + 'local minimum', + 'global (absolute) minimum', + 'none of the above' + ], + $ans_extreme +); +BEGIN_PGML +Let [`f`] be a twice-differentiable function defined on the interval [`[[$a],[$b]]`] and suppose that we know the following information about [`f`] and its derivatives. + ++ [`f([$c]) = [$val]`] and [`f'([$c]) = 0`] ++ [`f'(x) [$lsign] 0`] for all [`x`] so that [`[$a]< x < [$c]`] ++ [`f'(x) [$rsign] 0`] for all [`x`] so that [`[$c]0`] and [`x-y = [$a]`]. How small can we make the quantity [`x^2+[$b]y^2`]? + +Is the Closed Interval Method (based on the Extreme Value Theorem and Fermat's Theorem) an appropriate method to solve this problem? + +[_]{$no} +END_PGML + + +BEGIN_PGML_HINT +Set up the problem and carefully consider the domain of the objective function (the function to be optimized) given the constraints in the problem. +END_PGML_HINT + + +BEGIN_PGML_SOLUTION +We have that [`y = x-[$a]`] and we want to minimize [`f(x) = x^2 + [$b](x-[$a])^2`] subject to the condition that [`x>0`]. So the domain of [`f`] is the open interval [`(0,\infty)`] and the Closed Interval Method does not apply. +END_PGML_SOLUTION +} +elsif($d==2) +{ +$no = DropDown( + [ + 'yes', + 'no', + ], + 'no' +); +$yes = DropDown( + [ + 'yes', + 'no', + ], + 'yes' +); + + +$vol = random(1000,2000,10); + +BEGIN_PGML +Consider the following optimization problem. + ++ Using a [`3D`] printer and a liquid starting material, you want to make a box with a square base and an open top that has a volume of [`[$vol]\, \rm{cm}^2`]. Find the dimensions of the box with the smallest possible surface area that will minimize that amount of material used. + +Is the Closed Interval Method (based on the Extreme Value Theorem and Fermat's Theorem) an appropriate method to solve this problem? + +[_]{$no} +END_PGML + +BEGIN_PGML_HINT +Set up the problem and carefully consider the domain of the objective function (the function to be optimized) given the constraints in the problem. +END_PGML_HINT + +$vol4 = 4*$vol; + +BEGIN_PGML_SOLUTION +Let [`x`] be the side length of the base and let [`y`] be the height of the box. Both [`x`] and [`y`] must be postive (greater than [`0`]) for the volume of the box to be positive, and the volume of the box is [`[$vol] = x^2y`] so [``y = \frac{[$vol]}{x^2}``] where [`x>0`]. We want to minimize the surface area [``f(x) = x^2 + 4xy = x^2 + \frac{[$vol4]}{x}``] where [`x>0`]. Thus, the domain of [`f`] is the open interval [`(0,\infty)`] and the Closed Interval Method does not apply. +END_PGML_SOLUTION +} +elsif($d==3) +{ +$no = DropDown( + [ + 'yes', + 'no', + ], + 'no' +); +$yes = DropDown( + [ + 'yes', + 'no', + ], + 'yes' +); + +$area = random(1000,2000,10); + +BEGIN_PGML +Consider the following optimization problem. + ++ You have enough liquid starting material to create an object with a surface area of [`[$area]\, \rm{cm}^2`] by using a [`3D`] printer. You want to make a box with a square base and an open top. Find the largest possible volume of the box that you can make. + +Is the Closed Interval Method (based on the Extreme Value Theorem and Fermat's Theorem) an appropriate method to solve this problem? + +[_]{$yes} +END_PGML + +BEGIN_PGML_HINT +Set up the problem and carefully consider the domain of the objective function (the function to be optimized) given the constraints in the problem. +END_PGML_HINT + +BEGIN_PGML_SOLUTION +Let [`x`] be the side length of the base and let [`y`] be the height of the box. The surface area of the box is [`[$area] = x^2 + 4xy`], so [``y = \frac{[$area]-x^2}{4x}``]. We want to maximize the volume of the box [```v(x) = x^2y = x^2\frac{[$area]-x^2}{4x} = \frac{x([$area]-x^2)}{4}.```] The smallest that [`x`] could be is [`0`], in which case the volume of the box is [`0`], and the largest that [`x`] could be is [`\sqrt{[$area]}`], which occurs when [`y=0`]. So we can work with [`v(x)`] with domain [`[0,\sqrt{[$area]}]`] and the Closed Interval Method can be used for this problem. + +**Note that [`y`] is undefined when [`x=0`]; however, the objective function [`v(x)`] is defined at [`x=0`] so we can consider the domain to be a closed interval.** +END_PGML_SOLUTION +} +else +{ +$no = DropDown( + [ + 'yes', + 'no', + ], + 'no' +); +$yes = DropDown( + [ + 'yes', + 'no', + ], + 'yes' +); + +$a = random(-5,-3,1); +$b = random(1,3,1); + +BEGIN_PGML +Consider the following optimzation problem. + ++ Let [`f(x) = xe^{x/2}`]. If possible, find the global (absolute) maximum and minimum values of [`f`] under the condition that [`[$a]\leq x \leq [$b]`]. + +Is the Closed Interval Method (based on the Extreme Value Theorem and Fermat's Theorem) an appropriate method to solve this problem? + +[_]{$yes} +END_PGML + +BEGIN_PGML_HINT +Set up the problem and carefully consider the domain of the objective function (the function to be optimized) given the constraints in the problem. +END_PGML_HINT + +BEGIN_PGML_SOLUTION +We want to find the global (absolute) extrema of [`f`] where [`x`] is in the closed interval [`[[$a], [$b]] = \{x\in \mathbb{R} : [$a]\leq x \leq [$b]\}`], so we can use the Closed Interval Method. +END_PGML_SOLUTION +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-3-0-0-C/3-5-1-Ap-I/3-5-1-Ap-I-second-der-test-jms.pg b/Contrib/UCalgary/249-3-0-0-C/3-5-1-Ap-I/3-5-1-Ap-I-second-der-test-jms.pg new file mode 100644 index 0000000000..0900d4dfd5 --- /dev/null +++ b/Contrib/UCalgary/249-3-0-0-C/3-5-1-Ap-I/3-5-1-Ap-I-second-der-test-jms.pg @@ -0,0 +1,72 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Higher-order derivatives) +## Date(25 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + + +# Second Derivative Test +$a = random(1,9,1); #critical point +$d = random(2,5,1); #step +$c = $a + $d; +$b = non_zero_random(-20,20,1); #second der value +$val = random(-50,50,1); +$val2 = abs($val)+$c+$d; +$ans_test = 'Second Derivative Test'; +if($b>0) +{ +$ans_extreme = 'local minimum'; +} +else +{ +$ans_extreme = 'local maximum'; +} +$test = DropDown( + [ + 'Closed Interval Method', + 'First Derivative Test', + 'Second Derivative Test' + ], + $ans_test +); + + +$extrema = DropDown( + [ + 'local maximum', + 'global (absolute) maximum', + 'local minimum', + 'global (absolute) minimum' + ], + $ans_extreme +); +BEGIN_PGML +Let [`f`] be a twice-differentiable function and suppose that we know the following information about [`f`] and its derivatives. + ++ [`f([$a]) = [$val]`] and [`f([$c]) = [$val2]`] ++ [`f'([$a]) = 0`] and [`f'([$c]) = 0`] ++ [`f''([$a]) = [$b]`] and [`f''([$c]) = 0`] + +Fill-in the blanks to make the correct conclusion about [`f`]. + +By using the [_]{$test}, we can conclude that [`f`] has a [_]{$extrema} at [`x = \, `][_]{$a}{2} and the corresponding extreme value of [`f`] is [_]{$val}{3}. + +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-3-0-0-C/3-6-0-Ap-I/3-6-0-Ap-I-drop-down-detail-jms.pg b/Contrib/UCalgary/249-3-0-0-C/3-6-0-Ap-I/3-6-0-Ap-I-drop-down-detail-jms.pg new file mode 100644 index 0000000000..f09c562c43 --- /dev/null +++ b/Contrib/UCalgary/249-3-0-0-C/3-6-0-Ap-I/3-6-0-Ap-I-drop-down-detail-jms.pg @@ -0,0 +1,88 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Conceptual understanding of integration) +## Date(24 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$popupDer = DropDown( + [ + 'Derivative(s)', + 'Definite Integral(s)', + 'Indefinite Integral(s)', + ], + 'Derivative(s)' +); + +$popupDefn = DropDown( + [ + 'Derivative(s)', + 'Definite Integral(s)', + 'Indefinite Integral(s)', + ], + 'Definite Integral(s)' +); + +$popupInd = DropDown( + [ + 'Derivative(s)', + 'Definite Integral(s)', + 'Indefinite Integral(s)', + ], + 'Indefinite Integral(s)' +); + + + +$d = random(-1,1,2); #switch between two versions of the problem +if($d==-1) +{ +$a = random(2,5,1); +$b = random(2,6,1); +if($a==$b) +{$b = $a+2;} #distinct constants +$c = random(1500,2000,25); +$d = random(25,100,5); +BEGIN_PGML +For each of the following problems indicate if the solution will require calculating "Derivative(s)", "Definite Integrals(s)" or "Indefinite Integral(s)" to solve the given problem. + +**Note: remember that an "Antiderivative" is an "Indefinite Integral".** + ++ [_]{$popupDer} Suppose that [`x`] and [`y`] are two numbers such that [`x\geq 0`] and [`x-y = [$a]`]. How small can we make the quantity [`x^2+[$b]y^2`]? ++ [_]{$popupInd} An object is moving with with velocity given by [`v(t) = \sin([$a]t) - \cos([$b]t) + t`], assuming that the initial position is [`s(0) = 0`], find the position function [`s(t)`] for the object. ++ [_]{$popupInd} After making an initial investment of [`\$ 1000`], the amount of money in your investing account at time [`t`] measured in years is growing at a rate of [`[$c] e^{t/[$d]}`]. Find a function that gives the value of your investing account at time [`t`]. +END_PGML +} +else +{ +$a = random(2,5,1); +$b = random(2,6,1); +if($a==$b) +{$b = $a+2;} #distinct constants +BEGIN_PGML +For each of the following problems indicate if the solution will require calculating "Derivative(s)", "Definite Integrals(s)" or "Indefinite Integral(s)" to solve the given problem. + +**Note: remember that an "Antiderivative" is an "Indefinite Integral".** + ++ [_]{$popupInd} Given [``f(x) = [$a]x^2 + \frac{[$b]}{x^2+1}``] find a function [`g(x)`] so that [`g'(x)=f(x)`] and [`g(1) = 0`]. ++ [_]{$popupDer} You have a square piece of cardboard with an area of [`1200 \, \rm{cm}^2`] to make a box with an open top by cutting smaller squares out of the corners and folding the edges up. Find the largest possible volume of the box that you can make. ++ [_]{$popupDefn} The rate at which water flows into the Glenmore Reservoir is given by a function [`f(t)`] measured in kilolitres ([`m^3`]) per day, were [`t`] is time measured in days. On January 1, 2025 (time [`t=0`]) the reservoir contained [`23`] million kilolitres of water. Find the amount of water in the reservoir on January 31, 2025. + +END_PGML +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-3-0-0-C/3-6-0-Ap-I/3-6-0-Ap-I-drop-down-jms.pg b/Contrib/UCalgary/249-3-0-0-C/3-6-0-Ap-I/3-6-0-Ap-I-drop-down-jms.pg new file mode 100644 index 0000000000..2ddac14bed --- /dev/null +++ b/Contrib/UCalgary/249-3-0-0-C/3-6-0-Ap-I/3-6-0-Ap-I-drop-down-jms.pg @@ -0,0 +1,77 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Conceptual understanding of derivatives) +## Date(24 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$popupDer = DropDown( + [ + 'Derivative(s)', + 'Integral(s)', + 'Calculus is not needed' + ], + 'Derivative(s)' +); + +$popupInt = DropDown( + [ + 'Derivative(s)', + 'Integral(s)', + 'Calculus is not needed' + ], + 'Integral(s)' +); + +$popupNA = DropDown( + [ + 'Derivative(s)', + 'Integral(s)', + 'Calculus is not needed' + ], + 'Calculus is not needed' +); + +$d = random(-1,1,2); #switch between two versions of the problem +if($d==-1) +{ +BEGIN_PGML +For each of the following types of problems indicate if the solution will require the use of "Derivative(s)", "Integrals(s)" or if "Calculus is not needed" to solve the given problem. + +**Important Note: For this problem we will regard "Antiderivatives" as "Integrals(s)."** + ++ [_]{$popupDer} Given a function that describes the position of a moving object, find the acceleration of the object. ++ [_]{$popupNA} Given two functions, find all points of intersections of their graphs within a given closed interval. ++ [_]{$popupInt} Given the rate at which a function is changing, find the net change in the value of the function over a given closed interval. ++ [_]{$popupDer} Approximate the value(s) of a function near a given point. +END_PGML +} +else +{ +BEGIN_PGML +For each of the following types of problems indicate if the solution will require the use of "Derivative(s)", "Integrals(s)" or if "Calculus is not needed" to solve the given problem. + +**Important Note: For this problem we will regard "Antiderivatives" as "Integrals(s)."** + ++ [_]{$popupInt} Given a function that describes the acceleration of a moving object, find the displacement (net distance travelled) of the object over a given time interval. ++ [_]{$popupDer} Given a function that describes the area of a region, find the rate at which the area of the region is changing. ++ [_]{$popupNA} Determine how the graph of a function [`y=f(x)`] changes after substituting [`x-2`] in place of [`x`]. ++ [_]{$popupInt} Find the total area between a given function and the [`x`]-axis over a closed interval. +END_PGML +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-drop-down-jms.pg b/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-drop-down-jms.pg new file mode 100644 index 0000000000..22299cbc25 --- /dev/null +++ b/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-drop-down-jms.pg @@ -0,0 +1,62 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Continuity - intermediate value theorem) +## Date(24 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$EVT = DropDown( + [ + 'Extreme Value Theorem', + 'Intermediate Value Theorem', + 'Mean Value Theorem' + ], + 'Extreme Value Theorem' +); + +$IVT = DropDown( + [ + 'Extreme Value Theorem', + 'Intermediate Value Theorem', + 'Mean Value Theorem' + ], + 'Intermediate Value Theorem' +); + +$MVT = DropDown( + [ + 'Extreme Value Theorem', + 'Intermediate Value Theorem', + 'Mean Value Theorem' + ], + 'Mean Value Theorem' +); +BEGIN_PGML +Let [`a,b`] be real numbers and assume that [`aflags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = random(0, 2, 1); +$err = random(1,99,1)/100; +$val = $a+$err; + +$f = Formula("ln(x)")->reduce(); +$fder = Formula("1/x")->reduce(); + +$fone= Compute("ln(1)"); +$fderone = Compute("1/1"); +$lin = Compute("$fone + $fderone(x-1)")->reduce; + +$ans = Compute("$fone + $fderone*($val-1)"); + +BEGIN_PGML +Use a linear approximation to estimate the value of [`\ln([$val])`]. Note: You should be able to choose the function and the point at which to do the approximation so that you can compute all necessary values “by hand”. + +[``\ln([$val]) \approx``][_]{$ans}{5} +END_PGML + +BEGIN_PGML_HINT +You should be able to choose the function and the point at which to do the approximation so that you can compute all necessary values "by hand". +END_PGML_HINT + +BEGIN_PGML_SOLUTION +In general, the linear approximation to [`f`] at [`x=a`] is given by [`L(x) = f(a) + f'(a)(x-a)`]. + +In this case, [``f(x) = [$f]``] and [``f'(x) = [$fder]``]. + +At [`x=1`], we have [`f(1) = \ln(1) = [$fone]`] and [``f'(1) = [$fderone]``], so we will do the linear approximation at [`x=1`]. +We have that [```L(x) = [$fone] + [$fderone](x-1) = [$lin],```] +and [```\ln([$val]) = f([$val]) \approx L([$val]) = ([$val]-1) = [$ans] ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-log-jmsW2026.pg b/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-log-jmsW2026.pg new file mode 100644 index 0000000000..8a5b3c721b --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-log-jmsW2026.pg @@ -0,0 +1,60 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Linear approximation and differentials) +## Date(26 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances + Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = random(0, 2, 1); +$err = random(1,99,1)/100; +$val = $a+$err; + +$f = Formula("ln(x)")->reduce(); +$fder = Formula("1/x")->reduce(); + +$fone= Compute("ln(1)"); +$fderone = Compute("1/1"); +$lin = Compute("$fone + $fderone(x-1)")->reduce; + +$ans = Compute("$fone + $fderone*($val-1)"); + +BEGIN_PGML +Use a linear approximation to estimate the value of [`\ln([$val])`] using [`a=1`]. + +[``\ln([$val]) \approx``][_]{$ans}{5} +END_PGML + + +BEGIN_PGML_SOLUTION +In general, the linear approximation to [`f`] at [`x=a`] is given by [`L(x) = f(a) + f'(a)(x-a)`]. + +In this case, [``f(x) = [$f]``] and [``f'(x) = [$fder]``]. + +At [`x=1`], we have [`f(1) = \ln(1) = [$fone]`] and [``f'(1) = [$fderone]``], so we will do the linear approximation at [`x=1`]. +We have that [```L(x) = [$fone] + [$fderone](x-1) = [$lin],```] +and [```\ln([$val]) = f([$val]) \approx L([$val]) = ([$val]-1) = [$ans] ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-power-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-power-jms.pg new file mode 100644 index 0000000000..bb020aee72 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-power-jms.pg @@ -0,0 +1,63 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Linear approximation and differentials) +## Date(26 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances + Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = random(1, 5, 1); +$err = random(1,9,1)/100; +$val = $a+$err; +$pow = random(3,5,1); +$powm1 = $pow-1; + +$f = Formula("x^($pow)")->reduce(); +$fder = Formula("$pow*x^($powm1)")->reduce(); + +$fa= Compute("($a)^($pow)"); +$fdera = Compute("$pow*($a)^($powm1)"); + +$ans = Compute("$fa + $fdera*$err"); + +BEGIN_PGML +Use a linear approximation to estimate the value of [`([$val])^{[$pow]}`]. Note: You should be able to choose the function and the point at which to do the approximation so that you can compute all necessary values “by hand”. + +[``([$val])^{[$pow]} \approx``][_]{$ans}{5} +END_PGML + +BEGIN_PGML_HINT +You should be able to choose the function and the point at which to do the approximation so that you can compute all necessary values "by hand". +END_PGML_HINT + +BEGIN_PGML_SOLUTION +In general, the linear approximation to [`f`] at [`x=a`] is given by [`L(x) = f(a) + f'(a)(x-a)`]. + +In this case, [``f'(x) = [$fder]``], so at [`x=[$a]`], we have [`f([$a]) = [$fa]`] and [``f'([$a]) = [$fdera]``]. + +Therefore, at [`x=[$a]`], [```L(x) = [$fa] + [$fdera](x-[$a]),```] +and [```([$val])^{[$pow]} = f([$val]) \approx L([$val]) = [$fa] + [$fdera]([$val]-[$a]) = [$fa] + [$fdera]([$err]) = [$ans] ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-power-jmsW2026.pg b/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-power-jmsW2026.pg new file mode 100644 index 0000000000..ca0d175119 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-power-jmsW2026.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Linear approximation and differentials) +## Date(26 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances + Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = random(1, 5, 1); +#$a = 1; +$err = random(1,9,1)/100; +$val = $a+$err; +$pow = random(3,5,1); +$powm1 = $pow-1; + +$f = Formula("x^($pow)")->reduce(); +$fder = Formula("$pow*x^($powm1)")->reduce(); + +$fa= Compute("($a)^($pow)"); +$fdera = Compute("$pow*($a)^($powm1)"); + +$ans = Compute("$fa + $fdera*$err"); + +BEGIN_PGML +Use a linear approximation to estimate the value of [`([$val])^{[$pow]}`] at [`a=[$a]`]. + +[``([$val])^{[$pow]} \approx``][_]{$ans}{5} +END_PGML + +BEGIN_PGML_HINT +You should be able to choose the function and the point at which to do the approximation so that you can compute all necessary values "by hand". +END_PGML_HINT + +BEGIN_PGML_SOLUTION +In general, the linear approximation to [`f`] at [`x=a`] is given by [`L(x) = f(a) + f'(a)(x-a)`]. + +In this case, [``f'(x) = [$fder]``], so at [`x=[$a]`], we have [`f([$a]) = [$fa]`] and [``f'([$a]) = [$fdera]``]. + +Therefore, at [`x=[$a]`], [```L(x) = [$fa] + [$fdera](x-[$a]),```] +and [```([$val])^{[$pow]} = f([$val]) \approx L([$val]) = [$fa] + [$fdera]([$val]-[$a]) = [$fa] + [$fdera]([$err]) = [$ans] ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-root-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-root-jms.pg new file mode 100644 index 0000000000..bde1df1751 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-1-1-Ap-C/4-1-1-Ap-C-root-jms.pg @@ -0,0 +1,60 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Linear approximation and differentials) +## Date(26 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances + Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = random(2, 6, 1); +$aa = $a**2; # a squared +$err = random(1,9,1)/10; +$step = random(1,3,1); +$val = $aa+$err; +$eval = $aa + $err + $step; +$aaplusstep = $aa + $step; + +$f = Formula("sqrt(x-$step)")->reduce(); +$fder = Formula("1/(2*sqrt(x-$step))")->reduce(); + +$atwo = Compute("2*$a"); + +$ans = Compute("$a + (1/$atwo)*$err"); + +BEGIN_PGML +Using a linear approximation to the function [`f(x) = [$f]`] at [`x=[$aaplusstep]`], find an approximation of [`\sqrt{[$val]}`]. + +[``\sqrt{[$val]} \approx``][_]{$ans}{5} +END_PGML + +BEGIN_PGML_SOLUTION +In general, the linear approximation to [`f`] at [`x=a`] is given by [`L(x) = f(a) + f'(a)(x-a)`]. + +In this case, [``f'(x) = [$fder]``], so at [`x=[$aaplusstep]`], we have [`f([$aaplusstep]) = [$a]`] and [``f'([$aaplusstep]) = \frac{1}{2([$a])} = \frac{1}{[$atwo]}``]. + +Therefore, at [`x=[$aaplusstep]`], [```L(x) = [$a] + \frac{1}{[$atwo]}(x-[$aaplusstep]),```] +and [```\sqrt{[$val]} = f([$eval]) \approx L([$eval]) = [$a] + \frac{1}{[$atwo]}([$eval] - [$aaplusstep]) = [$a] + \frac{1}{[$atwo]}([$err]) = [$ans] ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-abstract-over-under-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-abstract-over-under-jms.pg new file mode 100644 index 0000000000..e7d7b0dde7 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-abstract-over-under-jms.pg @@ -0,0 +1,80 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(26 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = non_zero_random(-7, 7, 1); #point +$step = random(3,5,1); +$lend = $a-$step; #left end point +$rend = $a+$step; #right end point +$err = random(1,9,1)/10; +$val = $a+$err; +#function values +$fa = random(-10,10,1); +$fdera = random(-1,1,2); +$fder2a = random(-1,1,2); +if($fdera == -1) +{$fdera_sign = '<';} +else +{$fdera_sign = '>';} +if($fder2a == -1) +{$fder2a_sign = '<';} +else +{$fder2a_sign = '>';} + +if ($fder2a < 0) { + $overunder = 'an over-estimate'; + $concave = 'concave down'; + $location = 'above'; +} else { + $overunder = 'an under-estimate'; + $concave = 'concave up'; + $location = 'below'; +} + +$popup = DropDown( + [ + 'an over-estimate', + 'an under-estimate', + 'the exact value' + ], + $overunder +); + +BEGIN_PGML +Suppose that [`f`] is a twice-differentiable function and that [`f''`] is continuous. Further suppose that we know the following information about the values of [`f`] and its derivatives: + +[# + [. [`f([$a]) = [$fa]`], .]* + [. [`f'(x) [$fdera_sign] 0`] on the interval [`([$lend],[$rend])`], and .]* + [. [`f''(x) [$fder2a_sign] 0`] on the interval [`([$lend],[$rend])`] .]* +#] + +If a linear approximation of [`f`] at [`x=[$a]`] is used to estimate [`f([$val])`], then the resulting approximation is [_]{$popup} of [`f([$val])`]. +END_PGML + +BEGIN_PGML_HINT +Use information about its second derivative to think about the graph of [`y=f(x)`]. +END_PGML_HINT + +BEGIN_PGML_SOLUTION +The second derivative is a continuous function, and [`f''(x) [$fder2a_sign] 0`] on the interval [`([$lend],[$rend])`], so [`f`] is [$concave] near [`x=[$a]`] and [`x=[$val]`]. Therefore, the tangent line to [`y=f(x)`] at [`x=[$a]`] is [$location] the graph of [`f`] near [`x=[$a]`] and [`x=[$val]`], and the linear approximation of [`f([$val])`] will be an [$overunder]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-graph-overunder-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-graph-overunder-jms.pg new file mode 100644 index 0000000000..d5aeaed501 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-graph-overunder-jms.pg @@ -0,0 +1,89 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Linear approximation and differentials) +## Date(27 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserRadioButtons.pl","parserPopUp.pl"); +$a = non_zero_random(-2,2,1)/10; #leading coefficient +$a2 = 2*$a; #twice a +if($a < 0) # y-int +{$b = random(1,3,1);} +else +{$b = random(-3,-1,1);} +$c = non_zero_random(-1,1,1); +$pt = random(-3,3,1); #point not c +if($pt == $c) +{$pt = abs($c)+1;} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-5) -- (0,5) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-5) grid (5,5); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick] plot[domain={-4.5}:{4.5}] (\x,{$a*pow(\x-$c,2)+$b}); +\draw[red] (4,{$a*pow(4-$c,2)+$b}) node [below right]{\(y=f(x)\)}; +END_TIKZ + +$f = Formula("$a*(x-$c)^2+$b")->reduce(); +$fder = Formula("$a2*(x-$c)")->reduce(); +$fpt = Compute("$a*($pt-$c)^2+$b"); +$fderpt = Compute("$a2*($pt-$c)"); +$lin = Formula("$fpt + $fderpt*(x-$pt)")->reduce(); + +if ($a < 0) { + $overunder = 'an over-estimate'; + $tan_loc = 'above'; +} else { + $overunder = 'an under-estimate'; + $tan_loc = 'below'; +} + +$radio1 = RadioButtons( + [ "\(L(x)=$a2(x-$c)\)", "\(L(x)=$a2(x-$c) + $b\)", "\(L(x) = $fpt + $fderpt(x-$pt)\)", "\(L(x) = $fderpt(x-$pt)\)", "\(L(x) = $fderpt + $fpt(x-$pt)\)" ], + "\(L(x) = $fpt + $fderpt(x-$pt)\)" # correct answer +); + +$popup = DropDown( + [ + 'an over-estimate', + 'an under-estimate', + 'the exact value' + ], + $overunder +); + +BEGIN_PGML +Consider the following graph of the function [`f(x)=[$f]`]. + +[@ image($graph_image, width => 600, tex_size => 1000) @]* + ++ Which of the following is equal to the linear approximation to [`f`] at [`x=[$pt]`]? + +[_]{$radio1} + ++ For values of [`x`] near [`x=[$pt]`] the linear approximation of [`f`] will give [_]{$popup} of the values of the function [`f`]. + +END_PGML + +BEGIN_PGML_SOLUTION ++ First, [`f(x) = [$f]`] and [`f'(x) = [$fder]`]. ++ So, [`f([$pt]) = [$fpt]`] and [`f'([$pt]) = [$fderpt]`]. ++ Now, [`L(x) = f([$pt]) + f'([$pt])(x-[$pt]) = [$lin]`] ++ Based on the graph of [`y=f(x)`] given above, we can see that the graph of the tangent line [`y=L(x)`] at [`x=[$pt]`] will be [$tan_loc] the graph of [`f`], therefore, the linear approximation will [$overunder] the values of [`f`] near [`x=[$pt]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-poly-over-under-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-poly-over-under-jms.pg new file mode 100644 index 0000000000..bd8d3239cf --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-1-2-E-I/4-1-2-E-I-poly-over-under-jms.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Higher-order derivatives) +## Date(26 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = non_zero_random(-7, 7, 1); #point +$b = random(3,9,1);#coefficient +$err = random(1,9,1)/10; +$val = $a+$err; +$pow = random(3, 7, 2); # odd +$f = Formula("$b*x^($pow)")->reduce(); +$fder2 = Formula("$b*$pow*($pow-1)x^($pow-2)")->reduce(); +if ($a < 0) { + $overunder = 'an over-estimate'; + $sign = 'negative'; + $concave = 'concave down'; +} else { + $overunder = 'an under-estimate'; + $sign = 'positive'; + $concave = 'concave up'; +} + +$popup = DropDown( + [ + 'an over-estimate', + 'an under-estimate', + 'the exact value' + ], + $overunder +); + +BEGIN_PGML +If a linear approximation of [`f(x)=[$f]`] at [`x=[$a]`] is used to estimate [`f([$val])`], then the resulting approximation is [_]{$popup} of [`f([$val])`]. +END_PGML + +BEGIN_PGML_HINT +Consider the graph of [`f(x) = [$f]`] or use information about its second derivative. +END_PGML_HINT + +BEGIN_PGML_SOLUTION +The second derivative of [`f(x) = [$f]`] is equal to [`f''(x) = [$fder2]`], which is a continuous function. + +The second derivative [`f''(x) = [$fder2]`] is [$sign] near [`x=[$a]`], so [`f(x) = [$f]`] is [$concave] near [`x=[$a]`]. + +Therefore, the linear approximation of [`f([$val])`] will be [$overunder]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-2-1-Ap-C/4-2-1-Ap-C-taylor-poly-approx-AT.pg b/Contrib/UCalgary/249-4-0-0-I/4-2-1-Ap-C/4-2-1-Ap-C-taylor-poly-approx-AT.pg new file mode 100644 index 0000000000..c07505c8b1 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-2-1-Ap-C/4-2-1-Ap-C-taylor-poly-approx-AT.pg @@ -0,0 +1,40 @@ +## DESCRIPTION +## Implement Taylor Polynomial approximation to approximate numerical values of a function +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Infinite sequences and series) +## DBsection(Applications of Taylor polynomials) +## Level(3) +## KEYWORDS() + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(1,2,.25); +$expr = "\(\displaystyle \ln ($a) \approx \)".labeled_ans_rule("ans",10)."."; + +BEGIN_PGML +Use the *fourth Taylor polynomial* for [`f(x) = \ln{(x)}`] centred at [`c = 1`] +to approximate +[$expr]* +END_PGML + +# What relative tolerance is 4 significant digits? +LABELED_ANS("ans",Compute("ln($a)")->cmp(tolType => 'relative',tolerance => .01,)); + +BEGIN_PGML_SOLUTION + +END_PGML_SOLUTION + +ENDDOCUMENT(); \ No newline at end of file diff --git a/Contrib/UCalgary/249-4-0-0-I/4-2-2-Ap-I/4-2-2-Ap-I-taylor-remainder-approx-AT.pg b/Contrib/UCalgary/249-4-0-0-I/4-2-2-Ap-I/4-2-2-Ap-I-taylor-remainder-approx-AT.pg new file mode 100644 index 0000000000..fdf0474b82 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-2-2-Ap-I/4-2-2-Ap-I-taylor-remainder-approx-AT.pg @@ -0,0 +1,45 @@ +## DESCRIPTION +## Use Taylor's Remainder theorem to estimate the error in a Taylor Polynomial approximation +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Infinite sequences and series) +## DBsection(Applications of Taylor polynomials) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(1,4,1); +$expr = LayoutTable( + [ + [ + '\(\text{Error} \approx \)'.$SPACE.labeled_ans_rule("ans",10) + ] + ] +); + +BEGIN_PGML +Estimate the error if [`P_2(x) = 1 - \frac{x^2}{2}`] is used to estimate [`\cos{(x)}`] +at [`x = [$a]`]. +[$expr]* +END_PGML + +# What relative tolerance is 4 significant digits? +LABELED_ANS("ans",Compute("($a^3)/6")->cmp(tolType => 'relative',tolerance => .001,)); + +BEGIN_PGML_SOLUTION + +END_PGML_SOLUTION + +ENDDOCUMENT(); \ No newline at end of file diff --git a/Contrib/UCalgary/249-4-0-0-I/4-2-3-Ap-I/4-2-3-Ap-I-taylor-poly-degree-AT.pg b/Contrib/UCalgary/249-4-0-0-I/4-2-3-Ap-I/4-2-3-Ap-I-taylor-poly-degree-AT.pg new file mode 100644 index 0000000000..75461979bd --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-2-3-Ap-I/4-2-3-Ap-I-taylor-poly-degree-AT.pg @@ -0,0 +1,50 @@ +## DESCRIPTION +## Use Taylor's Remainder theorem to identify the degree of Taylor Polynomial approximation required to reach a given error threshold +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Infinite sequences and series) +## DBsection(Applications of Taylor polynomials) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + 'parserSolutionFor.pl' +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(1.1,1.4,.1); + +$n = 0; +while (($n+1)*((1/($a-1))**($n+1)) <= 100) { + $n++; +} + +$expr = LayoutTable( + [ + [ + '\(\displaystyle n = \)'.$SPACE.labeled_ans_rule("answer",10) + ] + ] +); + +BEGIN_PGML +For [`1 \leq x \leq 2`], determine the degree of the Taylor polynomial [`P_n(x)`] expanded about [`c = 1`] that +should be used to approximate [`\ln{([$a])}`] so that the error is less than 0.01. +[$expr]* +END_PGML + +LABELED_ANS("answer",Compute($n)->cmp()); + +BEGIN_PGML_SOLUTION +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-demand-change-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-demand-change-jms.pg new file mode 100644 index 0000000000..1fc789d282 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-demand-change-jms.pg @@ -0,0 +1,69 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Rates of change - business and economics) +## Date(27 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +Context()->flags->set(tolerance => 0.01, tolType => 'absolute'); + +$a = random(2,8,1); +$c = random(350,700,10); +$p = Formula("$c - x^2/$a")->reduce(); +$units = random(10,25,1); +$price_units = $c - ($units)**2/$a; +if(100*$price_units - floor(100*$price_units) < 0.5) #round the price to two decimals +{$price_units_round = floor(100*$price_units)/100;} +else +{$price_units_round = ceil(100*$price_units)/100;} +$pder = Formula("-2*x/$a")->reduce(); +$abs_delta_p = random(10,30,1); +$delta_p = -1*$abs_delta_p; +$delta_x = Compute("$a*$abs_delta_p/(2*$units)"); +if($delta_x - floor($delta_x) < 0.5) #round the answer +{$delta_x_round = floor($delta_x);} +else +{$delta_x_round = ceil($delta_x);} + +BEGIN_PGML +Let [``p(x) = [$p]``] be the demand function for a product that your company manufactures, where [`x`] is the number of units sold in a given month. The value of the demand function [`p(x)`] is the price in dollars of a single unit of the product when [`x`] units are sold. + +Last month, [`[$units]`] units of the product were sold. What was the price per unit last month? + ++ The price per unit last month was $[_]{$price_units_round}{2}. (Round your answer to two decimal places.) + +Use **differential approximation** to estimate the number of additional units that will be sold in the next month if the price is **lowered** by [`\$ [$abs_delta_p]`] per unit. + ++ Approximately [_]{$delta_x_round}{2} more units will be sold. (Round your answer to the nearest whole number.) +END_PGML + + +BEGIN_PGML_SOLUTION ++ The price per unit last month was [``p([$units]) = [$c] - \frac{([$units])^2}{[$a]} \approx \$ [$price_units_round]. ``] + ++ We are given that the change in price is [`\Delta p = [$delta_p]`] and using differential approximation, we know that [```\Delta p \approx dp = p'(x)dx = [$pder]dx \approx [$pder] \Delta x.```] +Therefore, the change in the number of units sold is approximately [```\Delta x \approx -\frac{[$a]\Delta p}{2x}, ```] and when [`x=[$units]`] we have [```\Delta x \approx -\frac{[$a]([$delta_p])}{2([$units])} = [$delta_x].```] +Therefore, approximately [$delta_x_round] more units of product will be sold in the next month if the price is decreased by $[$abs_delta_p] per unit. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change-2-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change-2-jms.pg new file mode 100644 index 0000000000..349509e0f6 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change-2-jms.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives of exponential functions) +## Date(27 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +#Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = non_zero_random(-5,5,1); +$pow = random(2,4,1); +$apow = $a*$pow; +$powm1 = $pow-1; +$b = non_zero_random(-9,9,1); +$b2 = 2*$b; +$c = random(1,20,1); +$f = Formula("$a x^{$pow} + $b x^2 - $c")->reduce(); +$fder = Formula("$apow x^{$powm1} + $b2 x")->reduce(); +$pt1 = random(1,5,1); +$delta_x = random(-1,1,2)*random(1,4,1)/10; +$pt2 = $pt1 + $delta_x; +$fderpt = Compute("$apow*($pt1**$powm1) + $b2*$pt1"); +$df = Compute("($apow*($pt1**$powm1) + $b2*$pt1)*$delta_x"); +$fpt1 = Compute("$a*($pt1**$pow) + $b*($pt1**2) - $c"); +$fpt2 = Compute("$a*($pt2**$pow) + $b*($pt2**2) - $c"); +$delta_f = Compute("$fpt2-$fpt1"); +BEGIN_PGML +Let [`f(x)=[$f]`]. + ++ The differential of [`f`] is [`df = \, `] [_]{$fder}{10} [`dx`]. ++ If [`x`] starts at [`x=[$pt1]`]and the change in [`x`] is [`\Delta x = [$delta_x]\,`], then by using differential approximation the corresponding **approximate change** in [`f`] is [_]{$df}{5}. ++ Under the same assumptions, the corresponding **actual change** in [`f`] is [_]{$delta_f}{5} + +**Note**: You may need a calculator to complete the last part of this problem! +END_PGML + + +BEGIN_PGML_SOLUTION ++ [`df = f'(x) dx = ([$fder]) dx `] ++ If [`x=[$pt1]`] and [`\Delta x = [$delta_x]`], then the approximate change in [`f`] is [`df = f'([$pt1])\Delta x = f'([$pt1])([$delta_x]) = [$fderpt]([$delta_x])= [$df]`]. ++ The second [`x`] value taken is [`x = [$pt1] + ([$delta_x]) = [$pt2]`], therefore, the actual change in [`f`] is [`\Delta f = f([$pt2]) - f([$pt1]) = [$fpt2] - ([$fpt1]) = [$delta_f]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change-3-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change-3-jms.pg new file mode 100644 index 0000000000..8aa1040770 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change-3-jms.pg @@ -0,0 +1,61 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives of exponential functions) +## Date(27 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +#Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = non_zero_random(-5,5,1); +$aa = $a**2; +$c = random(1,7,1); #shift +$f = Formula("sqrt(x-$c)")->reduce(); +$fder = Formula("1/(2*sqrt(x-$c))")->reduce(); +$pt1 = $aa+$c; #shift from square +$delta_x = random(-1,1,2)*random(1,4,1)/10; +$pt2 = $pt1 + $delta_x; +$delta_x_ans = Compute("$pt2 - $pt1"); +$fderpt = Compute("1/(2*sqrt($pt1-$c))"); +$df = Compute("(1/(2*sqrt($pt1-$c)))*$delta_x"); +$fpt1 = Compute("sqrt($pt1-$c)"); +$fpt2 = Compute("sqrt($pt2-$c)"); +$delta_f = Compute("$fpt2-$fpt1"); +BEGIN_PGML +Let [`f(x)=[$f]`]. + ++ The differential of [`f`] is [`df = \, `] [_]{$fder}{10} [`dx`]. ++ If [`x`] changes from [`x=[$pt1]`] to [`x=[$pt2]`], then the change in [`x`] is [`dx = \Delta x = \,`] [_]{$delta_x_ans}{3} and the corresponding **approximate change** in [`f`] obtained by **differential approximation** is [_]{$df}{5}. ++ If [`x`] changes from [`x=[$pt1]`] to [`x=[$pt2]`], then the corresponding **actual change** in [`f`] is [_]{$delta_f}{5} + +**Reflection prompt**: What do you notice about your last two answers? which of these is easier to find? +END_PGML + + +BEGIN_PGML_SOLUTION ++ [``df = f'(x) dx = [$fder] dx ``] ++ If [`x=[$pt1]`] and [`dx = \Delta x = [$pt2]-[$pt1] = [$delta_x]`], then the approximate change in [`f`] is [`df = f'([$pt1])\Delta x = f'([$pt1])([$delta_x]) = [$fderpt]([$delta_x])= [$df]`]. ++ The actual change in [`f`] is [`\Delta f = f([$pt2]) - f([$pt1]) = [$fpt2] - ([$fpt1]) = [$delta_f]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change1-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change1-jms.pg new file mode 100644 index 0000000000..67f406f5c0 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-3-1-Ap-I/4-3-1-Ap-I-fcn-change1-jms.pg @@ -0,0 +1,66 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives of polynomials and power functions) +## Date(27 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +#Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = non_zero_random(-5,5,1); +$pow = random(2,4,1); +$apow = $a*$pow; +$powm1 = $pow-1; +$b = non_zero_random(-9,9,1); +$c = random(1,9,1); +$f = Formula("$a x^{$pow} + $b x + $c")->reduce(); +$fder = Formula("$apow x^{$powm1} + $b")->reduce(); +$pt1 = random(1,5,1); +$delta_x = random(-1,1,2)*random(1,4,1)/10; +$pt2 = $pt1 + $delta_x; +$delta_x_ans = Compute("$pt2 - $pt1"); +$fderpt = Compute("$apow*($pt1**$powm1) + $b"); +$df = Compute("($apow*($pt1**$powm1) + $b)*$delta_x"); +$fpt1 = Compute("$a*($pt1**$pow) + $b*$pt1 + $c"); +$fpt2 = Compute("$a*($pt2**$pow) + $b*$pt2 + $c"); +$delta_f = Compute("$fpt2-$fpt1"); +BEGIN_PGML +Let [`f(x)=[$f]`]. + ++ The differential of [`f`] is [`df = \, `] [_]{$fder}{10} [`dx`]. ++ If [`x`] changes from [`x=[$pt1]`] to [`x=[$pt2]`], then the change in [`x`] is [`dx = \Delta x = \,`] [_]{$delta_x_ans}{3} and the corresponding **approximate change** in [`f`] is [`d f = \,`] [_]{$df}{5}. ++ If [`x`] changes from [`x=[$pt1]`] to [`x=[$pt2]`], then the corresponding **actual change** in [`f`] is [`\Delta f = \,`] [_]{$delta_f}{5} + +**Note**: you may need a calculator to complete the last part of this problem! + +**Reflection prompt**: What do you notice about the last two values of [`df`] and [`\Delta f`]? +END_PGML + + +BEGIN_PGML_SOLUTION ++ [`df = f'(x) dx = ([$fder]) dx `] ++ If [`x=[$pt1]`] and [`dx = \Delta x = [$pt2]-[$pt1] = [$delta_x]`], then the approximate change in [`f`] is [`df = f'([$pt1])\Delta x = f'([$pt1])([$delta_x]) = [$fderpt]([$delta_x])= [$df]`]. ++ The actual change in [`f`] is [`\Delta f = f([$pt2]) - f([$pt1]) = [$fpt2] - ([$fpt1]) = [$delta_f]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-change-2-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-change-2-jms.pg new file mode 100644 index 0000000000..4eaf806fb6 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-change-2-jms.pg @@ -0,0 +1,59 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Linear approximation and differentials) +## Date(27 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$delta_x = random(2,9,1); #percent cahange in variable x +$pow = random(-1,1,2)*non_zero_random(2,5,1); #power avoid +/- 1 +$powm1 = $pow-1; +$denom = random(3,7,1); #denominator +$sign = random(-1,1,2); +if($sign == -1) +{$incdec = 'decreases'; + $sign_name = 'negative';} +else +{$incdec = 'increases'; + $sign_name = 'positive';} +$delta_x_signed = $sign*$delta_x; +$delta_y = $pow*$delta_x_signed; + +BEGIN_PGML +Suppose that [``y = \frac{\pi^2}{\ln([$denom])}x^{[$pow]}``] is a function of the independent variable [`x`]. + +If the independent variable [`x`] [$incdec] by [`[$delta_x] \%`], then the corresponding approximate percentage change in [`y`] is [_]{$delta_y}{2} %. +END_PGML + +BEGIN_PGML_SOLUTION +We are given that [``\frac{\Delta x}{x} =[$delta_x_signed] \%``] and we want to approximate [``\frac{\Delta y}{y}``]. + +Using differential approximation, we know that [``\Delta y \approx dy = \frac{dy}{dx} \Delta x``] and [``\frac{dy}{dx} = \frac{[$pow] \pi^2}{\ln([$denom])} x^{[$powm1]} ``]. + +Therefore, [```\frac{\Delta y}{y} \approx \frac{\dfrac{dy}{dx} \Delta x}{y} = \frac{\dfrac{[$pow] \pi^2}{\ln([$denom])} x^{[$powm1]} \Delta x}{\dfrac{\pi^2}{\ln([$denom])}x^{[$pow]}} = [$pow]\frac{\Delta x}{x} = [$pow]([$delta_x_signed]\%) = [$delta_y] \%```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-change-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-change-jms.pg new file mode 100644 index 0000000000..ca30b7a396 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-change-jms.pg @@ -0,0 +1,73 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Linear approximation and differentials) +## Date(27 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$delta_x = random(2,9,1); #percent cahange in variable x +$pow = random(-1,1,2)*non_zero_random(2,5,1); #power avoid +/- 1 +$powm1 = $pow-1; +$denom = random(3,7,1); #denominator +$sign = random(-1,1,2); +if($sign == -1) +{$incdec = 'decreases'; + $sign_name = 'negative';} +else +{$incdec = 'increases'; + $sign_name = 'positive';} +$delta_x_signed = $sign*$delta_x; +$delta_A = $pow*$delta_x_signed; +if($delta_A<0) +{$ans_sign = 'decreases';} +else +{$ans_sign = 'increases';} +$abs_delta_A = abs($delta_A); +$popup = DropDown( + [ + 'increases', + 'decreases', + ], + $ans_sign +); + +BEGIN_PGML +The quantity [`A`] depends on a variable [`x`] under the relationship [``A = \frac{\pi}{[$denom]}x^{[$pow]}``]. + +If the variable [`x`] [$incdec] by [`[$delta_x]`] percent, then [`A`] [_]{$popup} by approximately [_]{$abs_delta_A}{2} percent. +END_PGML + +BEGIN_PGML_SOLUTION +We are given that [``\frac{\Delta x}{x} =[$delta_x_signed] \%``] and we want to approximate [``\frac{\Delta A}{A}``]. + +Using differential approximation, we know that [``\Delta A \approx dA = \frac{dA}{dx} \Delta x``] and [``\frac{dA}{dx} = \frac{[$pow] \pi}{[$denom]} x^{[$powm1]} ``]. + +Therefore, [```\frac{\Delta A}{A} \approx \frac{\dfrac{dA}{dx} \Delta x}{A} = \frac{\dfrac{[$pow] \pi}{[$denom]} x^{[$powm1]} \Delta x}{\dfrac{\pi}{[$denom]}x^{[$pow]}} = [$pow]\frac{\Delta x}{x} = [$pow]([$delta_x_signed]\%) = [$delta_A] \%```] + +Therfore, if [`x`] [$incdec] by [`[$delta_x]`] percent, then [`A`] [$ans_sign] by approximately [`[$abs_delta_A]`] percent. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-sphere-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-sphere-jms.pg new file mode 100644 index 0000000000..493b1cc11b --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-3-2-Ap-I/4-3-2-Ap-I-percent-sphere-jms.pg @@ -0,0 +1,67 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Rates of change - engineering and physics) +## Date(27 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$delta_S = random(2,25,1); #percent cahange in surface area +$sign = random(-1,1,2); +if($sign == -1) +{$incdec = 'decreased'; + $sign_name = 'negative';} +else +{$incdec = 'increased'; + $sign_name = 'positive';} +$delta_S_signed = $sign*$delta_S; +$delta_R = $sign*$delta_S/2; #percent cahange in radius, incorporate sign here +$delta_V = 3*$delta_R; #percent cahange in volume + +BEGIN_PGML +Based on observations made with a ground-based telescope, you have determined that the **surface area** of a nearby star has [$incdec] by [$delta_S] percent. + +Use differential approximation to determine the corresponding: + ++ approximate percentage change in the **radius** of the star: [_]{$delta_R}{2} % ++ approximate percentage change in the **volume** of the star: [_]{$delta_V}{2} % + +Due to its immense gravity, you can assume that the star is a perfect **sphere**. +END_PGML + +BEGIN_PGML_HINT +The volume of a sphere of radius [`r`] is [``V = \frac{4}{3}\pi r^3``] and its surface area is [``S = 4\pi r^2``]. +END_PGML_HINT + +BEGIN_PGML_SOLUTION +We are given that the actual percentage change in the surface area is [``\frac{\Delta S}{S} = [$delta_S_signed] \%``]. + +Using differential approximation we know that [``\Delta S \approx dS = \frac{dS}{dr} dr ``], so in terms of percentage change we have that [```\frac{\Delta S}{S} \approx \frac{dS}{S} = \frac{\frac{dS}{dr} dr}{S} = \frac{8\pi r dr}{4\pi r^2} = \frac{2 dr}{r} \approx \frac{2\Delta r}{r},```] +so the approximate percentage change in the radius of the sphere is [```\frac{\Delta r}{r} \approx \frac{1}{2} \frac{\Delta S}{S} = \frac{1}{2}([$delta_S_signed] \%) = [$delta_R] \%.```] + +Similarly, [``\Delta V \approx dV = \frac{dV}{dr}dr``], so the approximate percentage change in the volume is +[``` \frac{\Delta V}{V} \approx \frac{dV}{V} = \frac{\frac{dV}{dr}dr}{V} = \frac{4\pi r^2 dr}{\frac{4}{3} \pi r^3} = 3\frac{dr}{r} \approx 3 \frac{\Delta r}{r} \approx 3([$delta_R] \%) = [$delta_V] \%.```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-3-3-Ap-I/4-3-3-Ap-I-ivt-mc-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-3-3-Ap-I/4-3-3-Ap-I-ivt-mc-jms.pg new file mode 100644 index 0000000000..325f5e9111 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-3-3-Ap-I/4-3-3-Ap-I-ivt-mc-jms.pg @@ -0,0 +1,72 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(28 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(-9, -3, 1); #left +$step = random(10,15,1); +$step1 = random(1,3,1); +$step2 = $step1 + random(1,2,1); +$c1 = $a + $step1; +$c2 = $a + $step1 + $step2; +$b = $c2+$step2 +random(1,2,1); #right + +$fa = random(-9,-1,1); #neg +$fc1 = random(-9,-1,1); #neg +$fc2 = random(1,9,1); #pos +$fb = random(-9,-1,1); #neg + +$ans = "\(($c1,$c2)\)"; +$dist = "\(($a,$c1)\)"; + +$radio1 = RadioButtons( + [ [ "\(($a,$c2)\)", "$dist", "$ans", "\(($c2,$b)\)", "\(($a,$b)\)"], 'None of the above' ], + "$ans" # correct answer +); + +BEGIN_PGML +Suppose that [`f`] is a continuous function on the interval [`[[$a],[$b]]`]. + +Further suppose that + +[# +[.[`f([$a]) = [$fa],`].] +[.[`f([$c1]) = [$fc1],`].] +[.[`f([$c2]) = [$fc2],`] and.] +[.[`f([$b]) = [$fb]`].] +#] + +Which of the following is the smallest (that is, shortest length) interval on which the Intermediate Value Theorem guarantees that there is a solution to the equation [`0 = f(x)`]? + +[_]{$radio1} +END_PGML + +BEGIN_PGML_SOLUTION +We can apply the Intermediate Value Theorem (IVT) because [`f`] is a continuous function on the interval [`[[$a],[$b]]`]. +- Since [`f([$a]) = [$fa]<0`] and [`f([$c2]) = [$fc2]>0`], by the IVT the equation [`0 = f(x)`] has a solution in [`([$a],[$c2])`]. +- Since [`f([$c1]) = [$fc1]<0`] and [`f([$c2]) = [$fc2]>0`], by the IVT the equation [`0 = f(x)`] has a solution in [`([$c1],[$c2])`]. +- Since [`f([$c2]) = [$fc2]>0`] and [`f([$b]) = [$fb]<0`], by the IVT the equation [`0 = f(x)`] has a solution in [`([$c2],[$b])`]. +- Notice that since the intervals [`([$c1],[$c2])`] and [`([$c2],[$b])`] do not intersect (overlap), we can conclude that there are at least two solutions to [`0=f(x)`] in the interval [`([$a],[$b])`]. + +The smallest (shortest) of these intervals is [`([$c1],[$c2])`]. + +Note that even though the interval [`([$a],[$c1])`] is smaller (shorter) than [`([$c1],[$c2])`] we do not know if there is a solution to [`0 = f(x)`] in [`([$a],[$c1])`] because [`f([$a]) = [$fa] < 0`] and [`f([$c1]) = [$fc1] < 0`] and we cannot apply the Intermediate Value Theorem to make conclusions about the equation [`0=f(x)`] because [`0`] is not between [`f([$a])`] and [`f([$c1])`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-3-3-Ap-I/4-3-3-Ap-I-ivt-mc-no-sol-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-3-3-Ap-I/4-3-3-Ap-I-ivt-mc-no-sol-jms.pg new file mode 100644 index 0000000000..9bd5a2a5ca --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-3-3-Ap-I/4-3-3-Ap-I-ivt-mc-no-sol-jms.pg @@ -0,0 +1,66 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(28 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(-9, -3, 1); #left +$step = random(10,15,1); +$b = $a + $step; #right +$step1 = random(1,3,1); +$step2 = $step1 + random(1,2,1); +$c1 = $a + $step1; +$c2 = $a + $step1 + $step2; + +$sign = random(-1,1,2); +if($sign == -1) +{$sign_name = 'negative';} +else +{$sign_name = 'positive';} +$fa = $sign*random(1,9,1); +$fc1 = $sign*random(1,9,1); +$fc2 = $sign*random(1,9,1); +$fb = $sign*random(1,9,1); + +$radio1 = RadioButtons( + [ [ "\(($a,$c1)\)", "\(($c1,$c2)\)", "\(($a,$c2)\)", "\(($c1,$b)\)", "\(($a,$b)\)"], 'None of the above' ], + 'None of the above' # correct answer +); + +BEGIN_PGML +Suppose that [`f`] is a continuous function on the interval [`[[$a],[$b]]`]. + +Further suppose that + +[# +[.[`f([$a]) = [$fa],`].] +[.[`f([$c1]) = [$fc1],`].] +[.[`f([$c2]) = [$fc2],`] and.] +[.[`f([$b]) = [$fb]`].] +#] + +Which of the following is the smallest (that is, shortest length) interval on which the Intermediate Value Theorem guarantees that there is a solution to the equation [`0 = f(x)`]? + +[_]{$radio1} +END_PGML + +BEGIN_PGML_SOLUTION +Since all given values of [`f`] are [$sign_name], we cannot apply the Intermediate Value Theorem with the known information to make any conlusions about solutions to the equation [`0=f(x)`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-cubic-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-cubic-jms.pg new file mode 100644 index 0000000000..cb083c8186 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-cubic-jms.pg @@ -0,0 +1,79 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Newton's method) +## Date(28 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = random(1,7,2); #odd coeffient since you can factor when $a=2 +$f = Formula("x^3+x+$a")->reduce(); +$fder = Formula("3x^2 + 1")->reduce(); +$x0=-1; #start at same point for all versions + +#Newton's Method +$fx0 = Compute("$x0**3+$x0+$a"); +$fderx0 = Compute("3*($x0)**2 + 1"); +$x1 = Compute("$x0 - $fx0/$fderx0"); +$fx1 = Compute("$x1**3+$x1+$a"); +$fderx1 = Compute("3*($x1)**2 + 1"); +$x2 = Compute("$x1 - $fx1/$fderx1"); +$fx2 = Compute("$x2**3+$x2+$a"); +$fderx2 = Compute("3*($x2)**2 + 1"); +$x3 = Compute("$x2 - $fx2/$fderx2"); +$fx3 = Compute("$x3**3+$x3+$a"); +$fderx3 = Compute("3*($x3)**2 + 1"); +$x4 = Compute("$x3 - $fx3/$fderx3"); + +BEGIN_PGML +First, use the Intermediate Value Theorem to justify to yourself that there is a solution to the equation [`[$f]=0`] in the interval [`[-2,0]`]. + +Use Newton's Method to approximate the solution to the equation [`[$f]=0`] starting with an initial guess [`x_0 = [$x0]`]. + ++ [`x_1 = \, `] [_]{$x1}{5} ++ [`x_2 = \, `] [_]{$x2}{5} ++ [`x_3 = \, `] [_]{$x3}{5} ++ [`x_4 = \, `] [_]{$x4}{5} + +Enter either exact values or use at least 6 decimal places for your answers, but **do not** use rounded answers for intermediate calculations. +END_PGML + +BEGIN_PGML_SOLUTION +Recall that in Newton's Method each successive approximation is given by [``x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}``], [`n\geq 0`]. + +Here we have [`f(x) = [$f]`] and [`f'(x) = [$fder]`]. So starting with [`x_0 = [$x0]`] we get + ++ [``x_1 = x_0 - \frac{f(x_0)}{f'(x_0)} = [$x0] - \frac{[$fx0]}{[$fderx0]} = [$x1]``] ++ [``x_2 = x_1 - \frac{f(x_1)}{f'(x_1)} = [$x1] - \frac{[$fx1]}{[$fderx1]} = [$x2]``] ++ [``x_3 = x_2 - \frac{f(x_2)}{f'(x_2)} = [$x2] - \frac{[$fx2]}{[$fderx2]} = [$x3]``] + +If we do one more iteration we get that: + ++ [``x_4 = x_3 - \frac{f(x_3)}{f'(x_3)} = [$x3] - \frac{[$fx3]}{[$fderx3]} = [$x4]``] + +**Ask yourself:** How many decimal places is our approximation of the solution accurate to after four iterations of Newton's Method? +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-cubic-jmsW2026.pg b/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-cubic-jmsW2026.pg new file mode 100644 index 0000000000..b4a5633ae7 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-cubic-jmsW2026.pg @@ -0,0 +1,77 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Newton's method) +## Date(28 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = random(1,7,2); #odd coeffient since you can factor when $a=2 +$f = Formula("x^3+x+$a")->reduce(); +$fder = Formula("3x^2 + 1")->reduce(); +$x0=-1; #start at same point for all versions + +#Newton's Method +$fx0 = Compute("$x0**3+$x0+$a"); +$fderx0 = Compute("3*($x0)**2 + 1"); +$x1 = Compute("$x0 - $fx0/$fderx0"); +$fx1 = Compute("$x1**3+$x1+$a"); +$fderx1 = Compute("3*($x1)**2 + 1"); +$x2 = Compute("$x1 - $fx1/$fderx1"); +$fx2 = Compute("$x2**3+$x2+$a"); +$fderx2 = Compute("3*($x2)**2 + 1"); +$x3 = Compute("$x2 - $fx2/$fderx2"); +$fx3 = Compute("$x3**3+$x3+$a"); +$fderx3 = Compute("3*($x3)**2 + 1"); +$x4 = Compute("$x3 - $fx3/$fderx3"); + +BEGIN_PGML +Use Newton's Method to approximate the solution to the equation [`[$f]=0`] starting with an initial guess [`x_0 = [$x0]`]. + ++ [`x_1 = \, `] [_]{$x1}{5} ++ [`x_2 = \, `] [_]{$x2}{5} ++ [`x_3 = \, `] [_]{$x3}{5} ++ [`x_4 = \, `] [_]{$x4}{5} + +Enter either exact values or use at least 6 decimal places for your answers, but **do not** use rounded answers for intermediate calculations. +END_PGML + +BEGIN_PGML_SOLUTION +Recall that in Newton's Method each successive approximation is given by [``x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}``], [`n\geq 0`]. + +Here we have [`f(x) = [$f]`] and [`f'(x) = [$fder]`]. So starting with [`x_0 = [$x0]`] we get + ++ [``x_1 = x_0 - \frac{f(x_0)}{f'(x_0)} = [$x0] - \frac{[$fx0]}{[$fderx0]} = [$x1]``] ++ [``x_2 = x_1 - \frac{f(x_1)}{f'(x_1)} = [$x1] - \frac{[$fx1]}{[$fderx1]} = [$x2]``] ++ [``x_3 = x_2 - \frac{f(x_2)}{f'(x_2)} = [$x2] - \frac{[$fx2]}{[$fderx2]} = [$x3]``] + +If we do one more iteration we get that: + ++ [``x_4 = x_3 - \frac{f(x_3)}{f'(x_3)} = [$x3] - \frac{[$fx3]}{[$fderx3]} = [$x4]``] + +**Ask yourself:** How many decimal places is our approximation of the solution accurate to after four iterations of Newton's Method? +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-exp-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-exp-jms.pg new file mode 100644 index 0000000000..5a8f1d09b2 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-exp-jms.pg @@ -0,0 +1,76 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(28 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = random(2,9,1); +$b = $a+random(2,5,1); +$f = Formula("$a*x*e^x - $b")->reduce(); +$fder = Formula("$a*e^x + $a*x*e^x")->reduce(); +if(abs($a-$b)>3) +{$x0 = 1;} +else +{$x0 = 0;} +if(abs($a-$b)>4) +{$right = 2;} +else +{$right = 1;} + +#Newton's Method +$fx0 = Compute("$a*$x0*e^$x0 - $b"); +$fderx0 = Compute("$a*e^$x0 + $a*$x0*e^$x0"); +$x1 = Compute("$x0 - $fx0/$fderx0"); +$fx1 = Compute("$a*$x1*e^$x1 - $b"); +$fderx1 = Compute("$a*e^$x1 + $a*$x1*e^$x1"); +$x2 = Compute("$x1 - $fx1/$fderx1"); +$fx2 = Compute("$a*$x2*e^$x2 - $b"); +$fderx2 = Compute("$a*e^$x2 + $a*$x2*e^$x2"); +$x3 = Compute("$x2 - $fx2/$fderx2"); + +BEGIN_PGML +First, use the Intermediate Value Theorem to justify to yourself that there is a solution to the equation [`[$f]=0`] in the interval [`[0,[$right]]`]. + +Use Newton's Method to approximate the solution to the equation [`[$f]=0`] starting with an initial guess [`x_0 = [$x0]`]. + ++ [`x_1 = \, `] [_]{$x1}{5} ++ [`x_2 = \, `] [_]{$x2}{5} ++ [`x_3 = \, `] [_]{$x3}{5} + +Enter either exact values or use at least 6 decimal places for your answers, but **do not** use rounded answers for intermediate calculations. +END_PGML + +BEGIN_PGML_SOLUTION +Recall that in Newton's Method each successive approximation is given by [``x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}``], [`n\geq 0`]. + +Here we have [`f(x) = [$f]`] and [`f'(x) = [$fder]`]. So starting with [`x_0 = [$x0]`] we get ++ [``x_1 = x_0 - \frac{f(x_0)}{f'(x_0)} = [$x0] - \frac{[$fx0]}{[$fderx0]} = [$x1]``] ++ [``x_2 = x_1 - \frac{f(x_1)}{f'(x_1)} = [$x1] - \frac{[$fx1]}{[$fderx1]} = [$x2]``] ++ [``x_3 = x_2 - \frac{f(x_2)}{f'(x_2)} = [$x2] - \frac{[$fx2]}{[$fderx2]} = [$x3]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-log-jms.pg b/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-log-jms.pg new file mode 100644 index 0000000000..a5546b724d --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-log-jms.pg @@ -0,0 +1,81 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Newton's method) +## Date(28 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = random(2,9,1); +$f = Formula("$a*x*ln(x)-1")->reduce(); +$eq = Formula("$a*x*ln(x)")->reduce(); +$fder = Formula("$a*ln(x)+$a")->reduce(); +$x0=1; #start at same point for all versions + +#Newton's Method +$fx0 = Compute("$a*$x0*ln($x0)-1"); +$fderx0 = Compute("$a*ln($x0)+$a"); +$x1 = Compute("$x0 - $fx0/$fderx0"); +$fx1 = Compute("$a*$x1*ln($x1)-1"); +$fderx1 = Compute("$a*ln($x1)+$a"); +$x2 = Compute("$x1 - $fx1/$fderx1"); +$fx2 = Compute("$a*$x2*ln($x2)-1"); +$fderx2 = Compute("$a*ln($x2)+$a"); +$x3 = Compute("$x2 - $fx2/$fderx2"); +$fx3 = Compute("$a*$x3*ln($x3)-1"); +$fderx3 = Compute("$a*ln($x3)+$a"); +$x4 = Compute("$x3 - $fx3/$fderx3"); + +BEGIN_PGML +First, use the Intermediate Value Theorem to justify to yourself that there is a solution to the equation [`[$eq]=1`] in the interval [`[1,2]`]. + +Use Newton's Method to approximate the solution to the equation [`[$eq]=1`] starting with an initial guess [`x_0 = [$x0]`]. + ++ [`x_1 = \, `] [_]{$x1}{5} ++ [`x_2 = \, `] [_]{$x2}{5} ++ [`x_3 = \, `] [_]{$x3}{5} + +Enter either exact values or use at least 6 decimal places for your answers, but **do not** use rounded answers for intermediate calculations. +END_PGML + +BEGIN_PGML_SOLUTION +Here we want to solve [`[$eq]=1`] so we can rearrange this to [`[$f]=0`] and use the function [`f(x) = [$f]`]. + +Recall that in Newton's Method each successive approximation is given by [``x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}``], [`n\geq 0`]. + +Now [`f'(x) = [$fder]`], so starting with [`x_0 = [$x0]`] we get + ++ [``x_1 = x_0 - \frac{f(x_0)}{f'(x_0)} = [$x0] - \frac{[$fx0]}{[$fderx0]} = [$x1]``] ++ [``x_2 = x_1 - \frac{f(x_1)}{f'(x_1)} = [$x1] - \frac{[$fx1]}{[$fderx1]} = [$x2]``] ++ [``x_3 = x_2 - \frac{f(x_2)}{f'(x_2)} = [$x2] - \frac{[$fx2]}{[$fderx2]} = [$x3]``] + +If we do one more iteration we get that + ++ [``x_4 = x_3 - \frac{f(x_3)}{f'(x_3)} = [$x3] - \frac{[$fx3]}{[$fderx3]} = [$x4]``] + +so our approximation of the solution is accurate to 5 decimal places after just 4 iterations of Newton's Method! +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-log-jmsW2026.pg b/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-log-jmsW2026.pg new file mode 100644 index 0000000000..30b2e3c995 --- /dev/null +++ b/Contrib/UCalgary/249-4-0-0-I/4-4-0-Ap-C/4-4-0-Ap-C-nm-log-jmsW2026.pg @@ -0,0 +1,79 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Newton's method) +## Date(28 February 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +Context()->flags->set(tolerance => 0.00001, tolType => 'absolute'); + +$a = random(2,9,1); +$f = Formula("$a*x*ln(x)-1")->reduce(); +$eq = Formula("$a*x*ln(x)")->reduce(); +$fder = Formula("$a*ln(x)+$a")->reduce(); +$x0=1; #start at same point for all versions + +#Newton's Method +$fx0 = Compute("$a*$x0*ln($x0)-1"); +$fderx0 = Compute("$a*ln($x0)+$a"); +$x1 = Compute("$x0 - $fx0/$fderx0"); +$fx1 = Compute("$a*$x1*ln($x1)-1"); +$fderx1 = Compute("$a*ln($x1)+$a"); +$x2 = Compute("$x1 - $fx1/$fderx1"); +$fx2 = Compute("$a*$x2*ln($x2)-1"); +$fderx2 = Compute("$a*ln($x2)+$a"); +$x3 = Compute("$x2 - $fx2/$fderx2"); +$fx3 = Compute("$a*$x3*ln($x3)-1"); +$fderx3 = Compute("$a*ln($x3)+$a"); +$x4 = Compute("$x3 - $fx3/$fderx3"); + +BEGIN_PGML +Use Newton's Method to approximate the solution to the equation [`[$eq]=1`] starting with an initial guess [`x_0 = [$x0]`]. + ++ [`x_1 = \, `] [_]{$x1}{5} ++ [`x_2 = \, `] [_]{$x2}{5} ++ [`x_3 = \, `] [_]{$x3}{5} + +Enter either exact values or use at least 6 decimal places for your answers, but **do not** use rounded answers for intermediate calculations. +END_PGML + +BEGIN_PGML_SOLUTION +Here we want to solve [`[$eq]=1`] so we can rearrange this to [`[$f]=0`] and use the function [`f(x) = [$f]`]. + +Recall that in Newton's Method each successive approximation is given by [``x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}``], [`n\geq 0`]. + +Now [`f'(x) = [$fder]`], so starting with [`x_0 = [$x0]`] we get + ++ [``x_1 = x_0 - \frac{f(x_0)}{f'(x_0)} = [$x0] - \frac{[$fx0]}{[$fderx0]} = [$x1]``] ++ [``x_2 = x_1 - \frac{f(x_1)}{f'(x_1)} = [$x1] - \frac{[$fx1]}{[$fderx1]} = [$x2]``] ++ [``x_3 = x_2 - \frac{f(x_2)}{f'(x_2)} = [$x2] - \frac{[$fx2]}{[$fderx2]} = [$x3]``] + +If we do one more iteration we get that + ++ [``x_4 = x_3 - \frac{f(x_3)}{f'(x_3)} = [$x3] - \frac{[$fx3]}{[$fderx3]} = [$x4]``] + +so our approximation of the solution is accurate to 5 decimal places after just 4 iterations of Newton's Method! +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-1-1-R-C/5-1-1-R-C-defn-inf-lim-mc-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-1-1-R-C/5-1-1-R-C-defn-inf-lim-mc-jms.pg new file mode 100644 index 0000000000..8e8569e418 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-1-1-R-C/5-1-1-R-C-defn-inf-lim-mc-jms.pg @@ -0,0 +1,40 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Limits at infinity, horizontal and oblique asymptotes) +## Date(3 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = non_zero_random(-7,7,1); + +$radio1 = RadioButtons( + [ [ "if the values of \(f(x)\) can be made arbitrarily large as \(x\) is made sufficiently close to \($a\).", "if the values of \(f(x)\) are arbitrary as \(x\) gets infinitley close to \($a\).", "if \(f($a) = \dfrac{1}{0}\).", "if \(y=f(x)\) has a horizontal asymptote at \(x=$a\)."], 'None of the above.' ], + "if the values of \(f(x)\) can be made arbitrarily large as \(x\) is made sufficiently close to \($a\)." # correct answer +); + +BEGIN_PGML +Let [`f`] be a function of one real variable [`x`]. + +Which of the following statements correctly completes the definition of what it means for [``\lim_{x \to [$a]}f(x)``] to equal [`\infty`]? + +"We say that [`` \lim_{x \to [$a]}f(x)``] is equal to [`\infty`] ... + +[_]{$radio1} +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-1-1-R-C/5-1-1-R-C-defn-mc-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-1-1-R-C/5-1-1-R-C-defn-mc-jms.pg new file mode 100644 index 0000000000..18f5e3d064 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-1-1-R-C/5-1-1-R-C-defn-mc-jms.pg @@ -0,0 +1,41 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Limits at infinity, horizontal and oblique asymptotes) +## Date(3 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 9, 1); +$b = random(15,25,1); + +$radio1 = RadioButtons( + [ [ "if the values of \(f(x)\) approach \($b\) as \(x\) approaches the number \($a\) from both the left and right.", "if and only if the values of \(f(x)\) approach \(f($a)=$b\) as \(x\) gets close to \($a\).", "if \($a\) is in the domain of the function \(f\) and \(f($a) = $b\).", "if the values of \(f(x)\) can be made arbitrarily close to \($b\) as \(x\) is made arbitrary."], 'None of the above.' ], + "if the values of \(f(x)\) approach \($b\) as \(x\) approaches the number \($a\) from both the left and right." # correct answer +); + +BEGIN_PGML +Let [`f`] be a function of one real variable [`x`]. + +Which of the following statements correctly completes the definition of what it means for [``\lim_{x \to [$a]}f(x)``] to exist and equal [`[$b]`]? + +"We say that [`` \lim_{x \to [$a]}f(x)``] exists and is equal to [`[$b]`] ... + +[_]{$radio1} +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-1-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-1-jms.pg new file mode 100644 index 0000000000..1df38b2d12 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-1-jms.pg @@ -0,0 +1,82 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Evaluating limits - rational expressions) +## Date(4 March 2025) +## Institution(University of Calgary) +## Author(Danny Glin, Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# first limit +$a = random(2, 6, 1); +$b = non_zero_random(-5, 5, 1); + +if ($a + $b == 0) { + $b = abs($b) + 1; +} + +$f = Formula("(x+$b)/(sqrt(x^2+1))")->reduce(); + +$aplusb = $a + $b; +$c = $a**2 + 1; + +$ans1 = Compute("($aplusb)/sqrt($c)"); + +#second limit +$sign = random(-1,1,2); +if($sign == -1) +{$side = '-';} +else +{$side = '+';} +$d = non_zero_random(-7,7,1); +$e = random(2,5,1); +$etimesd = $e*$d; +$g = Formula("|x-$d|/($e*x-$etimesd)")->reduce(); +if($sign == -1) +{$ans2 = Compute("(-1)/($e)");} +else +{$ans2 = Compute("1/($e)");} + +BEGIN_PGML +Evaluate the following limits. + + +a) [``\lim_{x\to [$a]}[$f]=\,``][_]{$ans1}{5} + +b) [``\lim_{x\to [$d]^{[$side]}}[$g]=\,``][_]{$ans2}{5} + + +If a limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +BEGIN_PGML_SOLUTION +a) This limit can be solved by direct substitution: [``\lim_{x\to [$a]}[$f]=\frac{[$a]+[$b]}{\sqrt{([$a])^2+1}} = \frac{[$aplusb]}{\sqrt{[$c]}}``]. +b) Recall that [``|x-[$d]| = \begin{cases} x-[$d] & x \geq [$d] \\ -(x-[$d]) & x < [$d] \end{cases},``] so +[``` \lim_{x\to [$d]^{+}}[$g]= \lim_{x\to [$d]^{+}}\frac{x-[$d]}{[$e](x-[$d])} = \frac{1}{[$e]} ```] +while +[``` \lim_{x\to [$d]^{-}}[$g]= \lim_{x\to [$d]^{-}}\frac{-(x-[$d])}{[$e](x-[$d])} = -\frac{1}{[$e]}. ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-2-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-2-jms.pg new file mode 100644 index 0000000000..a06dfc8d89 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-2-jms.pg @@ -0,0 +1,87 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Evaluating limits - rational expressions) +## Date(4 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# first limit +$a = random(2, 6, 1); +$b = non_zero_random(-5, 5, 1); + +if ($a - $b == 0) { + $b = abs($b) + 1; +} +$twicea = 2*$a; +$asq = $a**2; +$atimesb = $a*$b; +$twiceaplusb = 2*($a + $b); +$aminusb = Compute("$a-$b"); + +$f = Formula("(x^2 -$twicea*x + $asq)/(x^2-$twiceaplusb*x +$atimesb)")->reduce(); + +$ans1 = Compute("0"); + +#second limit +$sign = random(-1,1,2); +if($sign == -1) +{$side = '-';} +else +{$side = '+';} +$d = non_zero_random(-7,7,1); +$e = random(2,5,1); +$h = random(6,9,1); +$etimesd = $e*$d; +$htimesd = $h*$d; +$g = Formula("($e*x-$etimesd)/(|$h*x-$htimesd|)")->reduce(); +$ans2 = 'DNE'; + +BEGIN_PGML +Evaluate the following limits. + + +a) [``\lim_{x\to [$a]}[$f]=\,``][_]{$ans1}{5} + +b) [``\lim_{x\to [$d]}[$g]=\,``][_]{$ans2}{5} + + +If a limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +BEGIN_PGML_SOLUTION +a) This limit can be solved by direct substitution: [``\lim_{x\to [$a]}[$f]=\lim_{x\to [$a]}\frac{(x-[$a])^2}{(x-[$a])(x-[$b])} = \lim_{x\to [$a]}\frac{x-[$a]}{x-[$b]} = \frac{0}{[$aminusb]} = [$ans1]``]. + +b) First, recall that since [`[$h]>0`] we have that [``|[$h]x-[$htimesd]| = \begin{cases} [$h](x-[$d]) & x \geq [$d] \\ -[$h](x-[$d]) & x < [$d] \end{cases}``] + +We will consider one-sided limits +[``` \lim_{x\to [$d]^{+}}[$g]= \lim_{x\to [$d]^{+}}\frac{[$e](x-[$d])}{[$h]|x-[$d]|}= \lim_{x\to [$d]^{+}}\frac{[$e](x-[$d])}{[$h](x-[$d])} = \frac{[$e]}{[$h]} ```] +while +[``` \lim_{x\to [$d]^{-}}[$g]= \lim_{x\to [$d]^{-}}\frac{[$e](x-[$d])}{-[$h](x-[$d])} = -\frac{[$e]}{[$h]}. ```] +Therefore, since the two one-sided limits are not equal, [``\lim_{x\to [$d]}[$g]``] does not exist. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-3-inf-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-3-inf-jms.pg new file mode 100644 index 0000000000..99fe96cf23 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-2-2-An-C/5-2-2-An-C-compute-limits-3-inf-jms.pg @@ -0,0 +1,79 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Evaluating limits - rational expressions) +## Date(4 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# first limit +$a = non_zero_random(-6, 6, 1); +$aa = $a**2; +$twicea = 2*$a; + +$f = Formula("1/($aa-x^2)")->reduce(); + +if($a > 0) +{ +$ans1 = '-inf'; +$ans1_tex = '-\infty'; +$ans2 = 'inf'; +$ans2_tex = '\infty'; +} +else +{ +$ans1 = 'inf'; +$ans1_tex = '\infty'; +$ans2 = '-inf'; +$ans2_tex = '-\infty'; +} +$ans3 = Compute("DNE"); + +BEGIN_PGML +Evaluate the following limits. + + +a) [``\lim_{x\to [$a]^+}[$f]=\,``][_]{$ans1}{5} + +b) [``\lim_{x\to [$a]^-}[$f]=\,``][_]{$ans2}{5} + +c) [``\lim_{x\to [$a]}[$f]=\,``][_]{$ans3}{5} + + +If a limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +BEGIN_PGML_SOLUTION +In this solution, we will write [`0^+`] to represent a number that is approaching [`0`] and is positive, and [`0^-`] to represent a number that is approaching [`0`] and is negative. This is nonstandard notation, so we will not write that a limit is "equal" to such an expression. + +a) [``\lim_{x\to [$a]^+}[$f] = \lim_{x\to [$a]^+}\frac{1}{([$a]-x)([$a]+x)} \approx \frac{1}{0^-([$twicea])}``] so [``\lim_{x\to [$a]^+}[$f] =[$ans1_tex]``] + +b) [``\lim_{x\to [$a]^-}[$f] = \lim_{x\to [$a]^+}\frac{1}{([$a]-x)([$a]+x)} \approx \frac{1}{0^+([$twicea])}``] so [``\lim_{x\to [$a]^-}[$f] =[$ans2_tex]``] + +c) Since the one-sided limits in part (a) and (b) are not equal, we conclude that [``\lim_{x\to [$a]}[$f]``] does not exist. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-1-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-1-jms.pg new file mode 100644 index 0000000000..7cc53d8522 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-1-jms.pg @@ -0,0 +1,107 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(One-sided limits - concept of) +## Date(4 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# interval +$a = random(-4, -1, 1); +$b = random(1,4,1); +if($a+$b == 0) +{$b = $b+1;} #keep endpoints of different in absolute value +#function coefficients +$c = non_zero_random(-6,6,1); +$d = non_zero_random(-5,5,1); +$e = non_zero_random(-5,5,1); + +#functions +$f = Formula("x^2+$c*x")->reduce(); +$g = Formula("sqrt(|x+$d|)")->reduce(); +$h = Formula("(x^2+x+$e)")->reduce(); + +#function values +$fa = Compute("($a)**2+($c)*($a)"); +$ga = Compute("sqrt(abs($a+$d))"); +$absaplusd = Compute("abs($a+$d)"); +$gb = Compute("sqrt(abs($b+$d))"); +$hb = Compute("($b)**2 + ($b) + ($e)"); + +#side +$side = random(-1,1,2); +if($side == -1) +{ +$aside = '-'; +$bside = '+'; +$ans1 = $fa; +$ans2 = $hb; +} +else +{ +$aside = '+'; +$bside = '+'; +$ans1 = $ga; +$ans2 = $hb; +} + + +BEGIN_PGML +Consider the following piecewise defined function. + +[``` f(x) = \begin{cases} [$f] & x \leq [$a] \\ + [$g] & [$a] < x \leq [$b] \\ + [$h] & x > [$b] \end{cases}```] + +Evaluate the following limits. + + +a) [``\lim_{x\to [$a]^{[$aside]}}f(x)=\,``][_]{$ans1}{5} + +b) [``\lim_{x\to [$b]^{[$bside]}}f(x)=\,``][_]{$ans2}{5} + +If a limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +if($side == -1) +{ +BEGIN_PGML_SOLUTION + +a) When [`x\to[$a]^{[$aside]}`] we have [`x <[$a]`], so [``\lim_{x\to [$a]^{[$aside]}} f(x)= \lim_{x\to [$a]^{[$aside]}}[$f] = ([$a])^2+[$c]([$a])= [$fa]``] +b) When [`x\to[$b]^{[$bside]}`] we have [`x >[$b]`], so[``\lim_{x\to [$b]^{[$bside]}} f(x)= \lim_{x\to [$b]^{[$bside]}} [$h] = [$b]^2 + [$b] + [$e] =[$hb]``] + +END_PGML_SOLUTION +} +else{ +BEGIN_PGML_SOLUTION + +a) When [`x\to[$a]^{[$aside]}`] we have [`x >[$a]`], so [``\lim_{x\to [$a]^{[$aside]}} f(x)= \lim_{x\to [$a]^{[$aside]}}[$g] = \sqrt{|[$a]+[$d]|} = \sqrt{[$absaplusd]}``] +b) When [`x\to[$b]^{[$bside]}`] we have [`x >[$b]`], so [``\lim_{x\to [$b]^{[$bside]}} f(x)= \lim_{x\to [$b]^{[$bside]}} [$h] = [$b]^2 + [$b] + [$e] = [$hb]``] + +END_PGML_SOLUTION +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-2-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-2-jms.pg new file mode 100644 index 0000000000..2d12aa51de --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-2-jms.pg @@ -0,0 +1,108 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(One-sided limits - concept of) +## Date(4 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# interval +$a = random(-3, -2, 1); +$b = random(1, 4, 1); + +#function coefficients +$c = non_zero_random(1, 2, 1); +$d = non_zero_random(-2, -1, 1); +$e = non_zero_random(2,5,1); + +#functions +$f = Formula("x^2+$c*x-1")->reduce(); +$g = Formula("sqrt(|x+$d|)")->reduce(); +$h = Formula("(ln(x)+$e)")->reduce(); + +#function values +$fa = Compute("($a)**2+($c)*($a)-1"); +$ga = Compute("sqrt(abs($a+$d))"); +$absaplusd = Compute("abs($a+$d)"); +$gb = Compute("sqrt(abs($b+$d))"); +$hb = Compute("ln($b) + ($e)"); + +#two sided +if($fa == $ga) +{ +$ans3 = $fa; +} +else +{ +$ans3 = 'DNE'; +} + + +BEGIN_PGML +Consider the following piecewise defined function. + +[``` f(x) = \begin{cases} [$f] & x < [$a] \\ + [$g] & [$a] \leq x < [$b] \\ + [$h] & x \geq [$b] \end{cases}```] + +Evaluate the following limits. + + +a) [``\lim_{x\to [$a]^{+}}f(x)=\,``][_]{$ga}{5} + +b) [``\lim_{x\to [$a]^{-}}f(x)=\,``][_]{$fa}{5} + +c) [``\lim_{x\to [$a]}f(x)=\,``][_]{$ans3}{5} + +If a limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +if($fa == $ga) +{ +BEGIN_PGML_SOLUTION + +a) When [`x\to[$a]^{+}`] we have [`x >[$a]`], so [``\lim_{x\to [$a]^{+}} f(x)= \lim_{x\to [$a]^{+}}[$g] = \sqrt{|[$a]+[$d]|} = \sqrt{[$absaplusd]}``] + +b) When [`x\to[$a]^{-}`] we have [`x <[$a]`], so [``\lim_{x\to [$a]^{-}} f(x)= \lim_{x\to [$a]^{-}}[$f] = ([$a])^2+[$c]([$a])-1= [$fa]``] + +c) Since the two one-sided limits are equal, we conclude that [``\lim_{x\to[$a]}f(x) = [$fa]``] +END_PGML_SOLUTION +} +else +{ +BEGIN_PGML_SOLUTION + +a) When [`x\to[$a]^{+}`] we have [`x >[$a]`], so [``\lim_{x\to [$a]^{+}} f(x)= \lim_{x\to [$a]^{+}}[$g] = \sqrt{|[$a]+[$d]|} = \sqrt{[$absaplusd]}``] + +b) When [`x\to[$a]^{-}`] we have [`x <[$a]`], so [``\lim_{x\to [$a]^{-}} f(x)= \lim_{x\to [$a]^{-}}[$f] = ([$a])^2+[$c]([$a])-1= [$fa]``] + + +c) Since the two one-sided limits are not equal, [``\lim_{x\to[$a]}f(x)``] does not exist. + +END_PGML_SOLUTION +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-3-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-3-jms.pg new file mode 100644 index 0000000000..b074a536bd --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-2-3-An-C/5-2-3-An-C-pw-limit-3-jms.pg @@ -0,0 +1,132 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(One-sided limits - concept of) +## Date(4 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# interval +$left = random(-3,-1,1); #not important +$a = random(1, 3, 1); #first limit exists only when a=1; so 33% of cases +$b = random(4, 6, 1); + +#function coefficients +$c = $b+$a; +$d = $a*$b-random(1,3,2); #second limit exists when d=1; so 50% of cases +$twicea = 2*$a; + +#functions +$f = Formula("x+$a")->reduce(); +$g = Formula("x^2 + $twicea*x-1")->reduce(); +$h = Formula("$c*x+$d")->reduce(); + +#function values +$fa = Compute("($a)+$a"); +$ga = Compute("($a)**2+$twicea*($a)-1"); +$gb = Compute("($b)**2+$twicea*($b)-1"); +$hb = Compute("$c*($b)+$d"); + +if($fa == $ga && $gb == $hb) +{ +$ans1 = $fa; +$ans2 = $gb; +} +elsif($fa == $ga) +{ +$ans1 = $fa; +$ans2 = 'DNE'; +} +elsif($gb == $hb) +{ +$ans1 = 'DNE'; +$ans2 = $gb; +} +else +{ +$ans1 = 'DNE'; +$ans2 = 'DNE'; +} + +BEGIN_PGML +Consider the following piecewise defined function. + +[``` f(x) = \begin{cases} [$f] & [$left] < x \leq [$a] \\ + [$g] & [$a] < x < [$b] \\ + [$h] & x \geq [$b] \end{cases}```] + +Evaluate the following limits. + + +a) [``\lim_{x\to [$a]}f(x)=\,``][_]{$ans1}{5} + +b) [``\lim_{x\to [$b]}f(x)=\,``][_]{$ans2}{5} + +If a limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +if($fa == $ga && $gb == $hb) +{ +BEGIN_PGML_SOLUTION + +a) [``\lim_{x\to [$a]^-} f(x) = \lim_{x\to [$a]^-}[$f] = [$a]+[$a] = [$fa] ``] and [``\lim_{x\to [$a]^+} f(x) = \lim_{x\to [$a]^-}[$g] = ([$a])^2+[$twicea]([$a])-1 = [$ga] ``] so [``\lim_{x\to [$a]}f(x) = [$ans1]``]. + +b) [``\lim_{x\to [$b]^-} f(x) = \lim_{x\to [$b]^-}[$g] = ([$b])^2+[$twicea]([$b])-1 =[$gb] ``] and [``\lim_{x\to [$b]^+} f(x) = \lim_{x\to [$b]^+}[$h] = [$c]([$b])+[$d]=[$hb] ``] so [``\lim_{x\to [$b]}f(x) = [$ans2]``]. + +END_PGML_SOLUTION +} +elsif($fa == $ga) +{ +BEGIN_PGML_SOLUTION + +a) [``\lim_{x\to [$a]^-} f(x) = \lim_{x\to [$a]^-}[$f] = [$a]+[$a] = [$fa] ``] and [``\lim_{x\to [$a]^+} f(x) = \lim_{x\to [$a]^-}[$g] = ([$a])^2+[$twicea]([$a])-1 = [$ga] ``] so [``\lim_{x\to [$a]}f(x) = [$ans1]``]. + +b) [``\lim_{x\to [$b]^-} f(x) = \lim_{x\to [$b]^-}[$g] = ([$b])^2+[$twicea]([$b])-1 =[$gb] ``] and [``\lim_{x\to [$b]^+} f(x) = \lim_{x\to [$b]^+}[$h] = [$c]([$b])+[$d]=[$hb] ``] so [``\lim_{x\to [$b]}f(x) ``] does not exist. + +END_PGML_SOLUTION +} +elsif($gb == $hb) +{ +BEGIN_PGML_SOLUTION + +a) [``\lim_{x\to [$a]^-} f(x) = \lim_{x\to [$a]^-}[$f]= [$a]+[$a] = [$fa] ``] and [``\lim_{x\to [$a]^+} f(x) = \lim_{x\to [$a]^-}[$g] = ([$a])^2+[$twicea]([$a])-1 =[$ga] ``] so [``\lim_{x\to [$a]}f(x) ``] does not exist. + +b) [``\lim_{x\to [$b]^-} f(x) = \lim_{x\to [$b]^-}[$g] = ([$b])^2+[$twicea]([$b])-1 =[$gb] ``] and [``\lim_{x\to [$b]^+} f(x) = \lim_{x\to [$b]^+}[$h] = [$c]([$b])+[$d]=[$hb] ``] so [``\lim_{x\to [$b]}f(x) = [$ans2]``]. + +END_PGML_SOLUTION +} +else +{ +BEGIN_PGML_SOLUTION + +a) [``\lim_{x\to [$a]^-} f(x) = \lim_{x\to [$a]^-}[$f]= [$a]+[$a] = [$fa] ``] and [``\lim_{x\to [$a]^+} f(x) = \lim_{x\to [$a]^-}[$g] = ([$a])^2+[$twicea]([$a])-1 =[$ga] ``] so [``\lim_{x\to [$a]}f(x) ``] does not exist. + +b) [``\lim_{x\to [$b]^-} f(x) = \lim_{x\to [$b]^-}[$g] = ([$b])^2+[$twicea]([$b])-1 =[$gb] ``] and [``\lim_{x\to [$b]^+} f(x) = \lim_{x\to [$b]^+}[$h] = [$c]([$b])+[$d]=[$hb] ``] so [``\lim_{x\to [$b]}f(x) ``] does not exist. + +END_PGML_SOLUTION +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-1-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-1-jms.pg new file mode 100644 index 0000000000..1c300ef03b --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-1-jms.pg @@ -0,0 +1,73 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Evaluating limits - trigonometric) +## Date(5 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# first limit +$a = random(2,7,1); +$b = non_zero_random(-6,6,1); +if($a+$b == 0) +{$b = -abs($b)-1;} +$f = Formula("(sin($a*x))/(sin($b*x))")->reduce(); +$flhop = Formula("($a*cos($a*x))/($b*cos($b*x))")->reduce(); + +$ans1 = Compute("($a*cos($a*pi))/($b*cos($b*pi))"); + +#second limit +$c = random(2,9,1); +$d = random(2,9,1); +$e = non_zero_random(-6,6,1); +$g = Formula("(ln($c x))/(x^2 +$d*x +$e)")->reduce(); +$glhop = Formula("($c/ ($c x))/(2*x + $d)")->reduce(); + +$ans2 = 0; + +BEGIN_PGML +Evaluate the following limits. + + +a) [``\lim_{x\to \pi}[$f]=\,``][_]{$ans1}{5} + +b) [``\lim_{x\to \infty}[$g]=\,``][_]{$ans2}{5} + + +If a limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +BEGIN_PGML_SOLUTION +a) As [`x`] approaches [`\pi`], [`\sin([$a]x)`] and [`\sin([$b]x)`] both approach [`0`] so we can use L'Hôpital's Rule +[```\lim_{x\to \pi}[$f]=\lim_{x\to \pi}[$flhop] = \frac{[$a]\cos([$a]\pi)}{[$b]\cos([$b]\pi)} = [$ans1].```] + +Remember to enter an exact value and not a decimal approximation of your answer! + +b) As [`x`] approaches [`\infty`], [`\ln([$c]x)`] and [`x^2 +[$d]*x +[$e]`] both approach [`\infty`] so we can use L'Hôpital's Rule [```\lim_{x\to \infty}[$g] = \lim_{x\to \infty}[$glhop] = \lim_{x\to \infty} \frac{1}{2x^2+[$d]x}= 0 ```] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-2-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-2-jms.pg new file mode 100644 index 0000000000..85ce683ba6 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-2-jms.pg @@ -0,0 +1,71 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Evaluating limits - trigonometric) +## Date(5 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# first limit +$a = random(2,7,1); +$b = non_zero_random(-6,6,1); +if($a+$b == 0) +{$b = -abs($b)-1;} +$f = Formula("(ln(1+$a*x))/($b*x)")->reduce(); +$flhop = Formula("($a/(1+$a*x))/($b)")->reduce(); +$ans1 = Compute("($a)/($b)"); + +#second limit +$c = random(5,9,2); +$d = $c - random(2,4,2); +$twiced = 2*$d; +$g = Formula("($c*e^x-$c*x-$c)/($d*x^2)")->reduce(); +$glhop1 = Formula("($c*e^x-$c)/($twiced*x)")->reduce(); +$glhop2 = Formula("($c*e^x)/($twiced)")->reduce(); +$ans2 = Compute("$c/$twiced"); + +BEGIN_PGML +Evaluate the following limits. + + +a) [``\lim_{x\to 0}[$f]=\,``][_]{$ans1}{5} + +b) [``\lim_{x\to 0^+}[$g]=\,``][_]{$ans2}{5} + + +If a limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +BEGIN_PGML_SOLUTION +a) As [`x`] approaches [`0`], [`\ln(1+[$a]x)`] and [`[$b]x`] both approach [`0`] so we can use L'Hôpital's Rule +[```\lim_{x\to 0}[$f]=\lim_{x\to 0}[$flhop] = \frac{[$a]}{[$b]}.```] + +b) As [`x`] approaches [`0`] from the right, [`[$c]e^x-[$c]x-[$c]`] and [`[$d]x^2`] both approach [`0`] so we can use L'Hôpital's Rule [```\lim_{x\to 0^+}[$g] = \lim_{x\to 0^+}[$glhop1]. ```] +Again, as [`x`] approaches [`0`] from the right, [`[$c]e^x-[$c]`] and [`[$twiced]x`] both approach [`0`] so we can use L'Hôpital's Rule again [```\lim_{x\to 0^+}[$g] = \lim_{x\to 0^+}[$glhop1] = \lim_{x\to 0^+}[$glhop2] = \frac{[$c]}{[$twiced]}. ```] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-2-jmsNOCHAIN.pg b/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-2-jmsNOCHAIN.pg new file mode 100644 index 0000000000..90af985e98 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-2-jmsNOCHAIN.pg @@ -0,0 +1,67 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Evaluating limits - trigonometric) +## Date(5 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +#NOTE: This has been edited to include only the limit that doesn't require use of the Chain Rule, as we have not covered that yet. + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# first limit +#$a = random(2,7,1); +#$b = non_zero_random(-6,6,1); +#if($a+$b == 0) +#{$b = -abs($b)-1;} +#$f = Formula("(ln(1+$a*x))/($b*x)")->reduce(); +#$flhop = Formula("($a/(1+$a*x))/($b)")->reduce(); +#$ans1 = Compute("($a)/($b)"); + +#second limit +$c = random(5,9,2); +$d = $c - random(2,4,2); +$twiced = 2*$d; +$g = Formula("($c*e^x-$c*x-$c)/($d*x^2)")->reduce(); +$glhop1 = Formula("($c*e^x-$c)/($twiced*x)")->reduce(); +$glhop2 = Formula("($c*e^x)/($twiced)")->reduce(); +$ans2 = Compute("$c/$twiced"); + +BEGIN_PGML +Evaluate the following limit. + +[``\lim_{x\to 0^+}[$g]=\,``][_]{$ans2}{5} + + +If a limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +BEGIN_PGML_SOLUTION +As [`x`] approaches [`0`] from the right, [`[$c]e^x-[$c]x-[$c]`] and [`[$d]x^2`] both approach [`0`] so we can use L'Hôpital's Rule [```\lim_{x\to 0^+}[$g] = \lim_{x\to 0^+}[$glhop1]. ```] +Again, as [`x`] approaches [`0`] from the right, [`[$c]e^x-[$c]`] and [`[$twiced]x`] both approach [`0`] so we can use L'Hôpital's Rule again [```\lim_{x\to 0^+}[$g] = \lim_{x\to 0^+}[$glhop1] = \lim_{x\to 0^+}[$glhop2] = \frac{[$c]}{[$twiced]}. ```] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-3-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-3-jms.pg new file mode 100644 index 0000000000..e515c284b9 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-3-2-Ap-C/5-3-2-Ap-C-compute-lhop-3-jms.pg @@ -0,0 +1,67 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Evaluating limits - trigonometric) +## Date(6 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(2,7,1)*random(-1,1,2); +$b = non_zero_random(2,8,2); +$c = non_zero_random(-9,9,1); +$d = random(3,7,2); +$f = Formula("(sqrt($d*x^2+$a*x))/($b*x+$c)")->reduce(); +$ans1 = Compute("sqrt($d)/($b)"); +$ans2 = Compute("-sqrt($d)/($b)"); +BEGIN_PGML + +Evaluate the following limits. + + +a) [``\lim_{x\to \infty}[$f]=\,``][_]{$ans1}{5} + +b) [``\lim_{x\to -\infty}[$f]=\,``][_]{$ans2}{5} + + +If a limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +BEGIN_PGML_SOLUTION +**Remark:** These limits are both Type [`\dfrac{\infty}{\infty}`] so you can use L'Hôpital's Rule; however, it may not be the best approach to solving this problem (try it and see what happens!). + +a) We will factor out the largest power of [`x`] from the numerator and denominator +[```\lim_{x\to \infty}[$f]= \lim_{x\to \infty} \frac{\sqrt{x^2\left([$d]+\dfrac{[$a]}{x}\right)}}{x\left([$b]+\dfrac{[$c]}{x}\right)} = \lim_{x\to \infty} \frac{\sqrt{x^2}\sqrt{[$d]+\dfrac{[$a]}{x}}}{x\left([$b]+\dfrac{[$c]}{x}\right)}```] +Now, recall that [``\sqrt{x^2} = |x| = \begin{cases} x & x \geq 0 \\ -x & x < 0 \end{cases}``] and since [`x\to \infty`], [`x>0`] and we have +[```\lim_{x\to \infty}[$f] = \lim_{x\to \infty} \frac{x \sqrt{[$d]+\dfrac{[$a]}{x}}}{x\left([$b]+\dfrac{[$c]}{x}\right)} = \lim_{x\to \infty} \frac{\sqrt{[$d]+\dfrac{[$a]}{x}}}{[$b]+\dfrac{[$c]}{x}} = \frac{\sqrt{[$d]+0}}{[$b]+0}=\frac{\sqrt{[$d]}}{[$b]}```] + +b) The first part of this computation is the same as above +[```\lim_{x\to \infty}[$f]= \lim_{x\to \infty} \frac{\sqrt{x^2\left([$d]+\dfrac{[$a]}{x}\right)}}{x\left([$b]+\dfrac{[$c]}{x}\right)} = \lim_{x\to \infty} \frac{\sqrt{x^2}\sqrt{[$d]+\dfrac{[$a]}{x}}}{x\left([$b]+\dfrac{[$c]}{x}\right)}```] +Now, recall that [``\sqrt{x^2} = |x| = \begin{cases} x & x \geq 0 \\ -x & x < 0 \end{cases}``] and since [`x\to -\infty`], [`x<0`] and we have +[```\lim_{x\to \infty}[$f] = \lim_{x\to \infty} \frac{(-x) \sqrt{[$d]+\dfrac{[$a]}{x}}}{x\left([$b]+\dfrac{[$c]}{x}\right)} = \lim_{x\to \infty} \frac{-\sqrt{[$d]+\dfrac{[$a]}{x}}}{[$b]+\dfrac{[$c]}{x}} = \frac{-\sqrt{[$d]+0}}{[$b]+0}=\frac{-\sqrt{[$d]}}{[$b]}```] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-1-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-1-jms.pg new file mode 100644 index 0000000000..74e0b4613b --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-1-jms.pg @@ -0,0 +1,76 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Squeeze theorem) +## Date(7 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +$a = random(2,3,1)*random(-1,1,2); +if ($a < 0) +{$c = $a-1; +$low = Formula("($c-$a*x)/(x)")->reduce(); +$high = Formula("(-$c-$a*x)/(x)")->reduce(); +} +else +{$c = $a+1; +$low = Formula("(-$c-$a*x)/(x)")->reduce(); +$high = Formula("($c-$a*x)/(x)")->reduce(); +} +$f = Formula("($c*sin(2*x)-$a*x)/(x)")->reduce(); +$line = Formula("-$a")->reduce(); + + +$popup1 = DropDown( + [ + 'True', + 'False' + ], + 'True' +); + +$popup2 = DropDown( + [ + 'True', + 'False' + ], + 'True' +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-1,0) -- (15,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-5) -- (0,5) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-1,-5) grid (15,5); +\foreach \x in {2,4,...,12} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-1}:{15}] (\x,{($c*sin(2*\x r))/(\x)-$a}) node[right] {\(y=f(x)\)}; +\draw[dashed ,blue, very thick] plot[domain={1}:{15}] (\x,{-$a}); +END_TIKZ + +# +BEGIN_PGML +Consider the following sketch of the graph of the function [``f(x) = [$f]``] (solid, red) and the line [``y=[$line]``] (blue, dashed). + +[@ image($graph_image, width => 700, tex_size => 800) @]* + +Determine if the following statements are **true** or **false**. + +[_]{$popup1} For [`x>0`], we have [``[$low] \leq [$f] \leq [$high]``] and we can use the Squeeze Theorem to show that [``\lim_{x\to \infty} f(x) =[$line]``] + +[_]{$popup2} The line [``y=[$line]``] is a horizontal asymptote of the function [``y=[$f]``]. + +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-2-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-2-jms.pg new file mode 100644 index 0000000000..0131b95305 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-2-jms.pg @@ -0,0 +1,75 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Squeeze theorem) +## Date(7 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +$a = random(1,2,1)*random(-1,1,2); +if ($a < 0) +{$c = -3; +$low = Formula("($c-$a*x)/(x)")->reduce(); +$high = Formula("(-$c-$a*x)/(x)")->reduce(); +} +else +{$c = 3; +$low = Formula("(-$c-$a*x)/(x)")->reduce(); +$high = Formula("($c-$a*x)/(x)")->reduce(); +} +$f = Formula("($c*cos(2*x)-$a*x)/(x)")->reduce(); +$line = Formula("-$a")->reduce(); + +$popup1 = DropDown( + [ + 'True', + 'False' + ], + 'True' +); + +$popup2 = DropDown( + [ + 'True', + 'False' + ], + 'True' +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-1,0) -- (15,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-5) -- (0,5) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-1,-5) grid (15,5); +\foreach \x in {2,4,...,12} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={.5}:{15}] (\x,{($c*cos(pi*\x r))/(\x)-$a}) node[right] {\(y=f(x)\)}; +\draw[dashed ,blue, very thick] plot[domain={1}:{15}] (\x,{-$a}); +END_TIKZ + +# +BEGIN_PGML +Consider the following sketch of the graph of the function [``f(x) = [$f]``] (solid, red) and the line [``y=[$line]``] (blue, dashed). + +[@ image($graph_image, width => 700, tex_size => 800) @]* + +Determine if the following statements are **true** or **false**. + +[_]{$popup1} For [`x>0`], we have [``[$low] \leq [$f] \leq [$high]``] and we can use the Squeeze Theorem to show that [``\lim_{x\to \infty} f(x) = [$line]``] + +[_]{$popup2} The line [``y=[$line]``] is a horizontal asymptote of the function [``y=[$f]``]. + +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-3-R-I/5-5-3-R-I-discon-defn-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-3-R-I/5-5-3-R-I-discon-defn-jms.pg new file mode 100644 index 0000000000..366b2d4d83 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-3-R-I/5-5-3-R-I-discon-defn-jms.pg @@ -0,0 +1,68 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + +## KEYWORDS() + +## DBsubject('') +## DBchapter('') +## DBsection('') +## Date('12 March 2025') +## Author('Jerrod Smith') +## Institution('University of Calgary') + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(-9,9,1); +$b = random(-9,9,1); +$c = random(-9,9,1); + +$popup_rem = DropDown( + [ + 'Removable discontinuity', + 'Jump discontinuity', + 'Infinite discontinuity' + ], + 'Removable discontinuity' +); + +$popup_jump = DropDown( + [ + 'Removable discontinuity', + 'Jump discontinuity', + 'Infinite discontinuity' + ], + 'Jump discontinuity' +); + +$popup_inf = DropDown( + [ + 'Removable discontinuity', + 'Jump discontinuity', + 'Infinite discontinuity' + ], + 'Infinite discontinuity' +); + + +BEGIN_PGML +Let [`f`] be a function of a single variable [`x`]. + +Match the type of discontinuity to the correct definition. + +[_]{$popup_inf} at [`x=[$a]`]: At least one of the limits [``\lim_{x\to [$a]^-} f(x)``], [``\lim_{x\to [$a]^+} f(x)``], [``\lim_{x\to [$a]} f(x)``] is equal to [`\pm \infty`]. + +[_]{$popup_rem} at [`x=[$b]`]: The limit [``\lim_{x\to [$b]} f(x)``] exists and is not equal to [``f([$b])``]. + +[_]{$popup_jump} at at [`x=[$c]`]: The limits [``\lim_{x\to [$c]^-} f(x)``] and [``\lim_{x\to [$c]^+} f(x)``] both exist, but are not equal to each other. + +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-4-Ap-C/5-5-4-Ap-C-cont-int-1-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-4-Ap-C/5-5-4-Ap-C-cont-int-1-jms.pg new file mode 100644 index 0000000000..d53cc44a9f --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-4-Ap-C/5-5-4-Ap-C-cont-int-1-jms.pg @@ -0,0 +1,78 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + +## KEYWORDS() + +## DBsubject('') +## DBchapter('') +## DBsection('') +## Date('11 March 2025') +## Author('Jerrod Smith') +## Institution('University of Calgary') + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = random(-3, 1, 1); +$b = random(2,6,1); +$c = non_zero_random(-3,3,1); +$m = random(2,6,1); + +$f1 = Formula("$b/(x-$a)")->reduce(); +$f2 = Formula("x^2 + $c*x")->reduce(); + +$f1m = Compute("$b/($m-$a)"); +$mlessa = $m-$a; +$f2m = Compute("($m)**2 + $c*$m"); +if($f1m == $f2m) +{$domain = Compute("(-inf,$a)U($a,inf)");} +else +{$domain = Compute("(-inf,$a)U($a,$m)U($m,inf)");} + +BEGIN_PGML +Consider the piecewise defined function [``f(x)=\begin{cases} \displaystyle [$f1] & x < [$m], x \neq [$a] \\ [$f2] & x \geq [$m] \end{cases}``]. + +Find the interval(s) on which [`f`] is continuous. Write your answer as a union of intervals using the union symbol: [`\cup`]. + +The function [`f`] is continuous on [_]{$domain}{20}. [@helpLink('intervals')@]* +END_PGML + +if($f1m == $f2m) +{ +BEGIN_PGML_SOLUTION +First notice that [`f`] is undefined at [`x = [$a]`] so [`f`] is discontinuous at [`x=[$a]`]; moreover, by computing [``\lim_{x\to[$a]}f(x)``] you can check that [`f`] has an infinite discontinutiy at [`x=[$a]`]. Since the function [`[$f1]`] is a rational function and continuous on its domain, [`f`] is continuous at all other points with [`x<[$m]`]. + +The function [`[$f2]`] is a polynomial, so it is continuous everywhere. So, [`f`] is continuous for [`x>[$m]`] and we just need to check continuity at [`x=[$m]`]. We will do so by considering one-sided limits. + +First, [``\lim_{x\to[$m]^+} f(x) = \lim_{x\to[$m]^+} [$f2] = [$f2m] = f([$m])``] and [``\lim_{x\to[$m]^-} f(x) = \lim_{x\to[$m]^+} [$f1] = \frac{[$b]}{[$mlessa]} = [$f1m]``]. Since these two limits are equal to each other and equal to the value of [`f`] at [`x=[$m]`] we get that [``\lim_{x\to[$m]}f(x)= f([$m])``] and [`f`] is continuous at [`x=[$m]`]. + +Therefore, [`f`] is continuous on [`[$domain]`]. +END_PGML_SOLUTION +} +else +{ +BEGIN_PGML_SOLUTION +First notice that [`f`] is undefined at [`x = [$a]`] so [`f`] is discontinuous at [`x=[$a]`]; moreover, by computing [``\lim_{x\to[$a]}f(x)``] you can check that [`f`] has an infinite discontinuity at [`x=[$a]`]. Since the function [`[$f1]`] is a rational function and continuous on its domain, [`f`] is continuous at all other points with [`x<[$m]`]. + +The function [`[$f2]`] is a polynomial, so it is continuous everywhere. So, [`f`] is continuous for [`x>[$m]`] and we just need to check continuity at [`x=[$m]`]. We will do so by considering one-sided limits. + +First, [``\lim_{x\to[$m]^+} f(x) = \lim_{x\to[$m]^+} [$f2] = [$f2m] = f([$m])``] and [``\lim_{x\to[$m]^-} f(x) = \lim_{x\to[$m]^+} [$f1] = \frac{[$b]}{[$mlessa]} = [$f1m]``]. Since these two limits exist but are not equal, we see that [`f`] has a jump discontinuity at [`x=[$m]`]. + +Therefore, [`f`] is continuous on [`[$domain]`]. +END_PGML_SOLUTION +} + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-4-Ap-C/5-5-4-Ap-C-cont-int-2-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-4-Ap-C/5-5-4-Ap-C-cont-int-2-jms.pg new file mode 100644 index 0000000000..8d1b52724d --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-4-Ap-C/5-5-4-Ap-C-cont-int-2-jms.pg @@ -0,0 +1,96 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + +## KEYWORDS() + +## DBsubject('') +## DBchapter('') +## DBsection('') +## Date('11 March 2025') +## Author('Jerrod Smith') +## Institution('University of Calgary') + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = random(2,3,1); +$c = random(1,2,1); +$b = random(1,2,1); +$m = random(-2,-1,1); +$alessm = $a-$m; +$negam = -$a*$m; + + +$f1 = Formula("(x^2+$alessm*x + $negam)/(x-$m)")->reduce(); +$f2 = Formula("$c")->reduce(); +$f3 = Formula("$b/(x^2)")->reduce(); + +$f1m = Compute("($m+$a)"); +$f2m = Compute("$c"); +$f3m = Compute("$b/($m)**2"); + +if($f1m == $f2m && $f2m == $f3m) +{$domain = Compute("(-inf,0)U(0,inf)");} +else +{$domain = Compute("(-inf,$m)U($m,0)U(0,inf)");} + +BEGIN_PGML +Consider the piecewise defined function [``f(x)=\begin{cases} \displaystyle [$f1] & x < [$m] \\ [$f2] & x = [$m] \\ \displaystyle [$f3] & x > [$m], x \neq 0 \end{cases}``]. + +Find the interval(s) on which [`f`] is continuous. Write your answer as a union of intervals using the union symbol: [`\cup`]. + +The function [`f`] is continuous on [_]{$domain}{20}. [@helpLink('intervals')@]* +END_PGML + +if($f1m == $f2m && $f2m == $f3m) +{ +BEGIN_PGML_SOLUTION +The rational function [``[$f1]``] is continuous for all [`x\neq [$m]`] and the rational function [``[$f3]``] is continuous for all [`x\neq 0`]. + +Since [``\lim_{x\to 0}f(x) = \lim_{x\to 0}[$f3] = \infty``], [`f`] has an infinite discontinuity at [`x=0`]. + +Considering the definition of [`f`], the only additional place where [`f`] could have a discontinuity is at [`x=[$m]`], so we will look there. + +First, by definition [`f([$m]) = [$c]`]. Now let's look at the one-sided limits of [`f`] as [`x`] approaches [`[$m]`]. +[```\lim_{x\to [$m]^-}f(x) = \lim_{x\to [$m]^-}[$f1] = \lim_{x\to [$m]^-} \dfrac{(x+[$a])(x-[$m])}{(x-[$m])} = \lim_{x\to [$m]^-} (x+[$a]) = [$f1m],```] +and +[```\lim_{x\to [$m]^+}f(x) = \lim_{x\to [$m]^+}[$f3] = \dfrac{[$b]}{([$m])^2} = [$f1m].```] +Since [``\lim_{x\to [$m]^-}f(x) = \lim_{x\to [$m]^+}f(x) = f([$m])``], [`f`] is continuous at [`x=[$m]`]. + +Therefore, [`f`] is continuous on [`[$domain]`]. +END_PGML_SOLUTION +} +else +{ +BEGIN_PGML_SOLUTION +The rational function [``[$f1]``] is continuous for all [`x\neq [$m]`] and the rational function [``[$f3]``] is continuous for all [`x\neq 0`]. + +Since [``\lim_{x\to 0}f(x) = \lim_{x\to 0}[$f3] = \infty``], [`f`] has an infinite discontinuity at [`x=0`]. + +Considering the definition of [`f`], the only additional place where [`f`] could have a discontinuity is at [`x=[$m]`], so we will look there. + +First, by definition [`f([$m]) = [$c]`]. Now let's look at the one-sided limits of [`f`] as [`x`] approaches [`[$m]`]. +[```\lim_{x\to [$m]^-}f(x) = \lim_{x\to [$m]^-}[$f1] = \lim_{x\to [$m]^-} \dfrac{(x+[$a])(x-[$m])}{(x-[$m])} = \lim_{x\to [$m]^-} (x+[$a]) = [$f1m],```] +and +[```\lim_{x\to [$m]^+}f(x) = \lim_{x\to [$m]^+}[$f3] = \dfrac{[$b]}{([$m])^2} = [$f3m].```] + +Since [``\lim_{x\to [$m]^-}f(x)``], [``\lim_{x\to [$m]^+}f(x)``] and [``f([$m])``] are not all equal, [`f`] is also not continuous at [`x=[$m]`]. + +Therefore, [`f`] is continuous on [`[$domain]`]. +END_PGML_SOLUTION +} + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/MATH249-WeBWork-2026.zip b/Contrib/UCalgary/MATH249-WeBWork-2026.zip new file mode 100644 index 0000000000000000000000000000000000000000..c6316c0a62ce0249dfcbf5486b5563f6bb36764a GIT binary patch literal 499944 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%0D9n9h zpTJtpb^yE2Z0vS-ewXE71F&^vz=?i^`N#|uk=uk_W%r=rP_Mjm21TQjZXdrlI;OJO z>X^XF==P!2#<-|_2x4lNz-npE;8~H`|IG38NAe6$$7aeTo2h`_`PmXzg`@42Ac>dH z7g76;(Cl}G3g+N$^Mp-QTDn`**L%nQ(>^HfF&cYb%OF2L;hs@7A_A7x0fkydmti=a z`E_#hTY6`9@WC-yhRtv}HKu$&VenN7e;e%%{x#Z7C5T=%O}hig;99WvtLRh%K60dt zF&LY^<0>IH{u=xU68del`_$omhWim-5tRey;g2s~uUH{(X|VqvWnUFgXSZaDy9IYb za0u?f-QC^Y-66O`aCdii3lQ90f(CbYo5Q`G-)>J&4=?pS)#l->s@k=y*6N#6q$IM3 zBbxo1;#!Em$v|PJr z=lOm!c10zQS^)E@*UCvUdyLeUZkHN#Ql*x;H&4qy2!rugj5lg6XsA}q;4Ns%GnG2K z3I+K*My|4GBMRk<7GvC_ zb&RjTH74PpW;l3m) zkwNW6qA|If@!545c{uq5CGgm7X}1Ip8m#3_Keh{5$f9npO#I;PNKO{F3|qbD&XDCu-}oTSg7i(8tD`f3BVQrQ1dv20gDsr zh4D06(M3`|NJAT-7JT2(~lqZ;5-EPD44G{B=IU!N@kfkO|lr(!m8h-0%t`ekrpU@Q-@ID ztqR4}SC+`R+t}I$!Kp@<-se0sbnStAyKUJx&p3ANbv*Xtts;;k0pdwx(0RjyTnb7| zhrP{+dlzI-3W09p3a5wp{aC=EUm!^OxHsG!dr0Hta5+&lTH~aYloY-ft6U*&;Rkv_ z%YM79=zYM6=1C7`jA#wIc&ZHjys)xZya#&S;ex|<&(M}ii?7uMro*lUh62LGuo=Ic z4dKJ~7B4DaMEv@*{-j1c_Uw8&S4(p9#oVc9zKu<6-Z4W|rA6GiemCfJR^gyeOns)z zI~S~s82h$sfm3?k|6?+HvsAUgEb8`@uAzQWl7P;UEmGbqFdrm{Kl9ABBje(6w-X2> zXtD>yj>`$L(jL@)T)8)G{EzjcyLjgZ((9iB_E)~So&j@Pk4rsNgYs?*!&jQw}IOBsS?hCJ;1Lb=VEJf9#}=e-s%I&%38aMvGH^ACu^@h#1A??ZSB zmc{9q3$H2FQzB5z5^(bnqtF_aTC7~2|B6j705-E>big72*kl1z@c+9U>1c0eLhbt3 zf9J?|`wwgaG`Ig?ODLwN$md;tvi%UF&QBx_9SZYc`-xopn11c3_UNY;B-^l0 z*V0Y_v5L~68hT@vTb7$MltA+#e4EbWUEb^JM<{{T9MobF_U!;8{y#XePi8D*lfcklG& zF9T`VX}2-s|%j|PgLGl4 zEx5&;a0|psGL6Wx0W`@I3XwtXie3CjCS*G7g6{_&;{0eWyvM`VMda?GFQ$lGdBqdR+ZxO zpncR2BGSS6cX)!qdpRb&7x5K#OUh{J3x=s8P_e9a*Rxso=-xj0hnLI z$tszZgi~VNOLyh`QCGFvzS7Ah8*y&Z$mvVxfzK*G#^~?JOW7B|`R&m_H-1KNMORWQ znlYX8bCMk!bWjxQa@%wu3 z=idyEc`D>*FY%eR06xzMpM7Ma;yd@}EfW9}57Alx%jBl=HXA z;i;a5XQh2^TZy&B9oRBwAv_yl%S4j-#>NnpbUh9q(`PXwmv}9G^ee?PYO7ey=d&wy zW;!_EM7Ktkgs>%1Br=hLgM;lpcfCL62NW*1TD)@C;mZSUZV8N-t=4Qg+V(57P6Y1j6*>uq;T?QL%7u#SQp z!#0c)x6iJ7ky}b854Tf{hGJ6ZkfZ(=`KR|J@sEe2D@)!}4|eTMhX9$#ozs1riG$8= z#nmjwVT|;kmoF>EfM^m1h$g>jZU1Z*{^9h!-u}0LYDa4aOGiMiceJK9u(JBi zj^xVx@7LgW`;P+w5#_xZ0NALeH~++(07Gdc^97Gmo&t?O7o0l#3CVs|EWN)?8rL$o z5g_2h>bxAg6}5_H#zQ zqgtyvrR`73UIC}Tfocd5CI@V!^+VDu+XyBVBVl7HC`m&1NSwZ+<@3$FpK#timSk2* zamj-YiMc8rr=MLx^Vdz?`!s)A39IH3yr<6XiT&ubNO(Q|zSz>p8SDkpB+6tc^`i8i zh+RJlvKIXbNiZGvfOH+1Q-CUq)+7g^plIs2X>L9O)W%Fp%Ou2AHYHcNV37?yqIDAz zsx%ry$;K`S7-mbiTY*TdJ_CLn^5j&a%jE=6 zkFizdsFJcBTKts8<8V{zXQ>wCjPL-_uk}1*C8vGm*N-den;^>Gl4Pb0*Aas5jct*b zY@N^wMNT8>*xHEso<)>CRGDJl%9up~byCT#0l~ze3aLpBHZHa?Fs(y>g)zx$6~8G8 zI0Q)lZn<@aGnNGZR;GFR*&rt?E6=bw9AIR5HLwA%`{`gJ)O$M|g3iq$j^{fFGEP{} zFW7i@gRmC~d>PX61LY3<+R!Me-8h+g>yoF$QRvaa0wQI~!^1ZUkxo)BipMcC?AAxB zKRw{*k#+IXdejMI#Xfs)4XNDP;^s&{#WR_3{m|J%Fk|5-DX5vbMk*(8|6X$g0aF66 zdm4lxnP=#aeDq=BV1U!NH==v;Qe>2LNrwF;4SODokGIE>N!iabN@%Z8*?R|dX~#dsyoOz(SgV;s+E0pvIj}Vs9GzIA}?#Y$t*H?qFAF($!c5E zQ2U`av>8Pn*<;b-XasbL-(Mj7jBEp2YHU5AVQzAJ0$ojRtD4du#lG_CFJ&oVZ6D;( zZjgo?t(m2il%sIWg0&`G8B_QWu4C-Vhkl#E05LyH)%b*Wg10-JuCf*vKq&r$H5?i9 zVDxhm{}XRIPQhpxNs@zV8jO7&4!-iBGiW6pl`0woRY>S^1-}S2S$*O#{0^iCZ^7Dz zTR%FOUEH!5d{xdyu-B5se=ShC_M$UMRA%adF5I{0)*5DQ<^jVN`)W>4$JF*rt?bquNC&U+?Gc9d+e7D!!vm6Vj_Eq}qSL>9_AGW2LO_3&Q zs*WJH2HtiuXiclwTT9%ToswjPevl-SZkT7AVC|YP7=zD{7!7;wUqbJ?rUau1$f|IB z*FULqIyrG9aIdXvMjvu9ZKr2C^ChP?(`QO^%pBxj5R&EXMf88m2})Vi7TD(0&0Ng0 zU+a@%|0XGFc
  • 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

    3^wTU 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 R?Aqxa58osLYGTk7g~k)MVtQ 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�>Y!ay;SX; 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 z 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 G`TqeBw5ad^ literal 0 HcmV?d00001 diff --git a/Contrib/UCalgary/MATH_249_CLO_(High-level).docx b/Contrib/UCalgary/MATH_249_CLO_(High-level).docx new file mode 100644 index 0000000000000000000000000000000000000000..25fa857a1149b9088353f2f0bce7a1863cdb4834 GIT binary patch literal 25450 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 Date: Fri, 26 Jun 2026 12:20:36 -0600 Subject: [PATCH 04/29] Add files via upload --- .../5-4-1-U-C/5-4-1-U-C-asymp-dd-jms.pg | 97 +++++++++++ .../5-4-1-U-C/5-4-1-U-C-asymp-num-dd-jms.pg | 98 +++++++++++ .../5-4-2-Ap-C-asymp-horiz-2-jms.pg | 43 +++++ .../5-4-2-Ap-C/5-4-2-Ap-C-asymp-horiz-jms.pg | 55 ++++++ .../5-4-2-Ap-C/5-4-2-Ap-C-asymp-vert-jms.pg | 72 ++++++++ .../5-5-0-R-C/5-5-0-R-C-cont-def-dd-jms.pg | 110 ++++++++++++ .../5-5-1-U-C/5-5-1-U-C-dicon-graph-2-jms.pg | 85 ++++++++++ .../5-5-1-U-C/5-5-1-U-C-discon-graph-1-jms.pg | 92 ++++++++++ .../5-5-1-U-C/5-5-1-U-C-discon-graph-3-jms.pg | 92 ++++++++++ .../5-5-2-U-C/5-5-2-U-C-pw-cont-1-jms.pg | 158 ++++++++++++++++++ .../5-5-2-U-C/5-5-2-U-C-pw-cont-2-jms.pg | 118 +++++++++++++ .../5-5-5-Ap-I/5-5-5-Ap-I-const-cont-1-jms.pg | 68 ++++++++ .../5-5-5-Ap-I/5-5-5-Ap-I-const-cont-2-jms.pg | 73 ++++++++ .../5-5-5-Ap-I/5-5-5-Ap-I-const-cont-3-jms.pg | 81 +++++++++ 14 files changed, 1242 insertions(+) create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-4-1-U-C/5-4-1-U-C-asymp-dd-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-4-1-U-C/5-4-1-U-C-asymp-num-dd-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-horiz-2-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-horiz-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-vert-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-0-R-C/5-5-0-R-C-cont-def-dd-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-dicon-graph-2-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-discon-graph-1-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-discon-graph-3-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-2-U-C/5-5-2-U-C-pw-cont-1-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-2-U-C/5-5-2-U-C-pw-cont-2-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-1-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-2-jms.pg create mode 100644 Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-3-jms.pg diff --git a/Contrib/UCalgary/249-5-0-0-C/5-4-1-U-C/5-4-1-U-C-asymp-dd-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-4-1-U-C/5-4-1-U-C-asymp-dd-jms.pg new file mode 100644 index 0000000000..9a84f2d371 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-4-1-U-C/5-4-1-U-C-asymp-dd-jms.pg @@ -0,0 +1,97 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Infinite limits and vertical asymptotes) +## Date(6 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# vertical asymptote +$a = non_zero_random(-8,8,1); +$sign = random(-1,1,2); +if($sign == - 1) +{$La = '-\infty';} +else +{$La = '\infty';} +if($sign == - 1) +{$side = '+';} +else +{$side = '-';} + +$type1 = DropDown( + [ + 'a horizontal asymptote', + 'a vertical asymptote' + ], + 'a vertical asymptote' +); + +$eq1 = DropDown( + [ + 'x', + 'y' + ], + 'x' +); + +# horizontal asymptote +$Lb = non_zero_random(-8,8,1); +$sign2 = random(-1,1,2); +if($sign2 == - 1) +{$b = '-\infty';} +else +{$b = '\infty';} + + +$type2 = DropDown( + [ + 'a horizontal asymptote', + 'a vertical asymptote' + ], + 'a horizontal asymptote' +); + +$eq2 = DropDown( + [ + 'x', + 'y' + ], + 'y' +); + +# randomize the order in which the questions appear +$ver = random(0,1,1); +if($ver == 0) +{ +BEGIN_PGML +Let [`f`] be a function of one real variable [`x`]. + ++ If [``\lim_{x \to [$a]^{[$side]}} f(x)= [$La]``], then the graph [`y=f(x)`] has [_]{$type1} with equation [_]{$eq1}[`=`][_]{$a}{2}. + ++ If [``\lim_{x\to [$b]} f(x) = [$Lb]``], then the graph [`y=f(x)`] has [_]{$type2} with equation [_]{$eq2}[`=`][_]{$Lb}{2}. +END_PGML +} +else +{ +BEGIN_PGML +Let [`f`] be a function of one real variable [`x`]. + ++ If [``\lim_{x\to [$b]} f(x) = [$Lb]``], then the graph [`y=f(x)`] has [_]{$type2} with equation [_]{$eq2}[`=`][_]{$Lb}{2}. + ++ If [``\lim_{x \to [$a]^{[$side]}} f(x)= [$La]``], then the graph [`y=f(x)`] has [_]{$type1} with equation [_]{$eq1}[`=`][_]{$a}{2}. +END_PGML +} +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-4-1-U-C/5-4-1-U-C-asymp-num-dd-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-4-1-U-C/5-4-1-U-C-asymp-num-dd-jms.pg new file mode 100644 index 0000000000..cb08063982 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-4-1-U-C/5-4-1-U-C-asymp-num-dd-jms.pg @@ -0,0 +1,98 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Limits at infinity, horizontal and oblique asymptotes) +## Date(6 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# function +$a = random(2,8,1); +$b = random(2,9,1); +$pow = random(1,3,2); +$f = Formula("$b/($a-x)^($pow)")->reduce(); + +# vertical asymptote +$sign = random(-1,1,2); +if($sign == - 1) +{$La = -inf; +$La_tex = '-\infty'; +$side = '+'; +$ineq = '>';} +else +{$La = inf; +$La_tex = '\infty'; +$side = '-'; +$ineq = '<';} + +$type1 = DropDown( + [ + 'a horizontal asymptote', + 'a vertical asymptote' + ], + 'a vertical asymptote' +); + +$eq1 = DropDown( + [ + 'x', + 'y' + ], + 'x' +); + +# horizontal asymptote +$sign2 = random(-1,1,2); +if($sign2 == - 1) +{$b = '-\infty';} +else +{$b = '\infty';} +$Lb = 0; + +$type2 = DropDown( + [ + 'a horizontal asymptote', + 'a vertical asymptote' + ], + 'a horizontal asymptote' +); + +$eq2 = DropDown( + [ + 'x', + 'y' + ], + 'y' +); + + +BEGIN_PGML +Let [``f(x) = [$f]``]. + +Evaluate the following limits and complete each statement. + ++ Since [``\lim_{x \to [$a]^{[$side]}} f(x) = \,``] [_]{$La}{2}, the graph [`y=f(x)`] has [_]{$type1} with equation [_]{$eq1}[`=`][_]{$a}{2}. + ++ Since [``\lim_{x\to [$b]} f(x) = \,``] [_]{$Lb}{2}, the graph [`y=f(x)`] has [_]{$type2} with equation [_]{$eq2}[`=`][_]{$Lb}{2}. +END_PGML + +BEGIN_PGML_SOLUTION ++ As [`x\to [$a]^{[$side]}`] we have [`x [$ineq] [$a]`], so [`0 [$ineq] [$a]-x`] and [`[$a]-x`] approaches [`0`]. Therefore, [``\lim_{x \to [$a]^{[$side]}} f(x) = \lim_{x \to [$a]^{[$side]}} [$f] = [$La_tex],``] and [`y=f(x)`] has a vertical asmyptote with equation [`x=[$a]`]. + ++ [``\lim_{x\to [$b]} f(x) = \lim_{x\to [$b]} [$f] = [$Lb]``], so [`y=f(x)`] has a horizontal asmyptote with equation [`y=[$Lb]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-horiz-2-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-horiz-2-jms.pg new file mode 100644 index 0000000000..ef0c6425df --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-horiz-2-jms.pg @@ -0,0 +1,43 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Limits at infinity, horizontal and oblique asymptotes) +## Date(6 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# function +$a = non_zero_random(100,2000,10); +$b = non_zero_random(-9,-1,1)/100; +$c = non_zero_random(-9,9,1); +$f = Formula("($a)/(1+$c*e^($b*x))")->reduce(); +$L = Compute("$a"); + +BEGIN_PGML +Let [``f(x) = [$f]``]. + +Complete the following statement about the **horizontal asymptote(s)** of [`f`]. + +Since the limit of [`` \lim_{x\to \infty} f(x) = \,``][_]{$L}{2}, the function [`f`] has a horizontal asymptote with equation [`y = \,`] [_]{$L}{2}. + +END_PGML + +BEGIN_PGML_SOLUTION +First, notice that since the argument of the exponential function is negative [``\lim_{x\to \infty} e^{[$b]x} = \lim_{x\to \infty} \frac{1}{e^{-[$b]x}} = 0``], therefore +[``` \lim_{x\to \infty} f(x) = \lim_{x\to \infty} [$f] = \frac{[$a]}{1+0} = [$a], ```] and [`f`] has a horizontal asymptote with equation [``y = [$a]``]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-horiz-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-horiz-jms.pg new file mode 100644 index 0000000000..e937f28b24 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-horiz-jms.pg @@ -0,0 +1,55 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Limits at infinity, horizontal and oblique asymptotes) +## Date(6 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# function +$a = non_zero_random(-9,9,1); +$b = non_zero_random(-9,9,1); +$c = non_zero_random(-9,9,1); +$ad = non_zero_random(-9,9,1); +$bd = non_zero_random(-9,9,1); +$cd = non_zero_random(-9,9,1); +$pow = random(2,3,1); +$powm1 = $pow-1; +$sign = random(-1,1,2); +if($sign == -1) +{$sym = '-';} +else +{$sym = '+';} +$f = Formula("($c + $b*x + $a*x^($pow))/($cd + $bd*x + $ad*x^($pow))")->reduce(); +$f_fact = Formula("($c/(x^($pow)) + $b/(x^($powm1)) + $a)/($cd/(x^($pow)) + $bd/(x^($powm1)) + $ad)")->reduce(); +$L = Compute("$a/$ad"); + +BEGIN_PGML +Let [``f(x) = [$f]``]. + +Complete the following statement about the **horizontal asymptote(s)** of [`f`]. + +Since the limit of [`f`] as [`x`] approaches [`[$sym]\infty`] is equal to [_]{$L}{2}, [`f`] has a horizontal asymptote with equation [`y = \,`] [_]{$L}{2}. + +END_PGML + +BEGIN_PGML_SOLUTION +[``` \lim_{x\to [$sym]\infty} f(x) = \lim_{x\to [$sym]\infty} [$f] = \lim_{x\to [$sym]\infty} \frac{x^{[$pow]}}{x^{[$pow]}} \left([$f_fact]\right) ```] +[``` = \lim_{x\to [$sym]\infty} [$f_fact] = \frac{0 + 0 + [$a]}{0 + 0 + [$ad]} = \frac{[$a]}{[$ad]}, ```] +so [`f`] has a horizontal asymptote with equation [``y = \frac{[$a]}{[$ad]}``]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-vert-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-vert-jms.pg new file mode 100644 index 0000000000..b783991798 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-4-2-Ap-C/5-4-2-Ap-C-asymp-vert-jms.pg @@ -0,0 +1,72 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Infinite limits and vertical asymptotes) +## Date(6 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# function +$a = non_zero_random(-5,5,1); #location of asymptote +$b = random(2,9,1); #positive coefficient +$c = non_zero_random(-5,5,1); #location of removable +if($a-$c==0) +{$a = $a + 1;} #avoid a = c +$pow = random(1,3,2); #odd power +$pow2 = random(2,3,1); +$f = Formula("($b(x-$c)^($pow2))/((x-$a)^($pow)*(x-$c)^($pow2))")->reduce(); + +# vertical asymptote +$sign = random(-1,1,2); +if($sign == - 1) +{$La = -inf; +$La_tex = '-\infty'; +$side = 'left'; +$side_sym = '-'; +$ineq = '<'; +} +else +{$La = inf; +$La_tex = '\infty'; +$side = 'right'; +$side_sym = '+'; +$ineq = '>';} + +# removable discontinuity +$Lc = Compute("$b/($c-$a)^($pow)"); + +BEGIN_PGML +Let [``f(x) = [$f]``]. + +Complete the following statements related to the **vertical asymptote(s)** of [`f`]. + ++ [`f`] has a vertical asymptote at [`x = \, `] [_]{$a}{2}, because the limit of [`f`] as [`x`] approaches [_]{$a}{2} from the **[$side] **does not exist and is equal to [_]{$La}{2}. + ++ [`f`] is undefined but **does not** have a vertical asymptote at [`x = \, `] [_]{$c}{2}, because the limit of [`f`] as [`x`] approaches [_]{$c}{2} exists and is equal to [_]{$Lc}{2}. + +END_PGML + +$cminusa = $c - $a; +$cminusapow = $cminusa**$pow; + +BEGIN_PGML_SOLUTION ++ [`` \lim_{x\to [$a]^[$side_sym]} f(x) = \lim_{x\to [$a]^{[$side_sym]}} [$f] = \lim_{x\to [$a]^{[$side_sym]}} \frac{[$b]}{(x-[$a])^{[$pow]}} = [$La_tex],``] so [`f`] has a vertical asymptote at [`x=5`] + ++ [`f`] is undefined at [`x=[$c]`]; however [`f`] does not have a vertical asymptote at [`x=[$c]`] because [`` \lim_{x\to [$c]} f(x) = \lim_{x\to [$c]} [$f] = \lim_{x\to [$c]} \frac{[$b]}{(x-[$a])^{[$pow]}} = \frac{[$b]}{([$c]-[$a])^{[$pow]}} = \frac{[$b]}{([$cminusa])^{[$pow]}} = \frac{[$b]}{[$cminusapow]}.``] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-0-R-C/5-5-0-R-C-cont-def-dd-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-0-R-C/5-5-0-R-C-cont-def-dd-jms.pg new file mode 100644 index 0000000000..a5c7afb569 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-0-R-C/5-5-0-R-C-cont-def-dd-jms.pg @@ -0,0 +1,110 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Continuity - concept of) +## Date(7 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = non_zero_random(-9,9,1); # point +$fa = random(-20,20,1); +$b = $a + random(1,5,1); +$fb = $fa + random(1,10,1); +$c = $b + random(1,5,1); +$fc = $fb + random(1,10,1); +$d = $c + random(1,5,1); +$fd = $fc + random(1,10,1); +$am = $a - random(1,5,1); +$fam = $fa - random(1,10,1); +$bm = $am - random(1,5,1); +$fbm = $fam - random(1,10,1); +$cm = $bm - random(1,5,1); +$fcm = $fbm - random(1,10,1); +$dm = $cm - random(1,5,1); +$fdm = $fcm - random(1,10,1); + +$ver=random(1,8,1); +if($ver == 1) +{$point = $a; +$fpoint = $fa;} +elsif($ver == 2) +{$point = $b; +$fpoint = $fb;} +elsif($ver == 3) +{$point = $c; +$fpoint = $fc;} +elsif($ver == 4) +{$point = $d; +$fpoint = $fd;} +elsif($ver == 5) +{$point = $am; +$fpoint = $fam;} +elsif($ver == 6) +{$point = $bm; +$fpoint = $fbm;} +elsif($ver == 7) +{$point = $cm; +$fpoint = $fcm;} +else +{$point = $dm; +$fpoint = $fdm;} + +$limit = DropDown( + [ + 'limit from the left', + 'limit', + 'limit from the right', + ], + 'limit' +); + +$exists = DropDown( + [ + 'exists', + 'does not exist', + 'is defined', + 'is not defined' + ], + 'exists' +); + +# randomize the order in which the questions appear +BEGIN_PGML + +Let [`f`] be a function of one real variable [`x`]. + +Suppose that the following values of [`f`] are known: + +[# + [. [`f([$dm]) = [$fdm]`], .] + [. [`f([$cm]) = [$fcm]`], .] + [. [`f([$bm]) = [$fbm]`], .] + [. [`f([$am]) = [$fam]`], .]* + [. [`f([$a]) = [$fa]`], .] + [. [`f([$b]) = [$fb]`], .] + [. [`f([$c]) = [$fc]`], .] + [. [`f([$d]) = [$fd]`], .]* +#] + + +Complete the following statement to give a precise definition of what it means for [`f`] to be continuous at [`x=[$point]`]. + +"The function [`f`] is continuous at [`x=[$point]`] if and only if the [_]{$limit} of [`f`] as [`x`] approaches [_]{$point}{2} [_]{$exists} and is equal to [_]{$fpoint}{2}." + +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-dicon-graph-2-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-dicon-graph-2-jms.pg new file mode 100644 index 0000000000..c517f6f3b4 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-dicon-graph-2-jms.pg @@ -0,0 +1,85 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Continuity - classifying discontinuities) +## Date(7 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); +$fm4 = non_zero_random(1,5,1); +$fm3l = random(-4,-1,1); #f at -3 from left +$fm3lnode = $fm3l+1/10; +$fm3r = $fm3l+random(2,5,1); #f at -3 from right and f(-3) +$f1l = random(4,1,1); #f at 1 from left +$f1r = $f1l - random(2,3,1); #f at 1 from right and f(1) +$f4 = non_zero_random(-2,4,1); +#two sided +$fm3 = 'DNE'; +$ansm3 = 'has a jump discontinuity'; +$f1 = 'DNE'; +$ans1 = 'has an infinite discontinuity'; +$version = random(-1,1,2); + +$typem3 = DropDown( + [ + 'is continuous', + 'has a removable discontinuity', + 'has a jump discontinuity', + 'has an infinite discontinuity' + ], + $ansm3 +); + +$type1 = DropDown( + [ + 'is continuous', + 'has a removable discontinuity', + 'has a jump discontinuity', + 'has an infinite discontinuity' + ], + $ans1 +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-5) -- (0,5) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-5) grid (5,5); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,very thick,rounded corners=8pt, red] (-4.5,$fm4) .. controls (-3.5,1) .. (-3,$fm3lnode); +\draw[red, very thick] (-3,$fm3l) circle (2.5pt); +\filldraw[red, very thick] (-3,$fm3r) circle (2.5pt); +\draw[very thick,rounded corners=8pt, red] (-3,$fm3r) .. controls (-1,1) .. (0.9,$f1l); +\draw[red, very thick] (1,$f1l) circle (2.5pt); +\filldraw[red, very thick] (1,$f1r) circle (2.5pt); +\draw[<->,very thick,rounded corners=8pt, red] (1.2,-5) .. controls (1.5,5) .. (4.5,$f4); +\draw[<-,very thick, blue, dashed] (1,-1) -- (1, -5); +\draw[red] (2,4.5) node [above right]{\(y=g(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the piecewise defined function [`y=g(x)`]. + +Assume that the dashed line [`x=1`] is a vertical asymptote of the function [`g`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +Complete the following statements about the function [`g`]. + ++ The function [`g`] [_]{$typem3} at [`x=-3`], because [``\lim_{x\to -3^-}g(x) = \, ``] [_]{$fm3l}{2} and [``\lim_{x\to -3^+}g(x) = \, ``] [_]{$fm3r}{2} both exist but are not equal. + ++ The function [`g`] [_]{$type1} at [`x=1`], because [``\lim_{x\to 1^+}g(x) = \, ``] [_]{-inf}{2}. + +END_PGML +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-discon-graph-1-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-discon-graph-1-jms.pg new file mode 100644 index 0000000000..72b2e4e1f4 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-discon-graph-1-jms.pg @@ -0,0 +1,92 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Continuity - classifying discontinuities) +## Date(7 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); +$fm4 = non_zero_random(-5,5,1); +$fm2l = random(-4,4,1); #f at -2 from left +$fm2r = random(-4,4,1); #f at -2 from right and f(-2) +$f2l = random(-4,4,1); #f at 2 from left and f(2) +$f2r = random(-4,4,1); #f at 2 from right +$f4 = non_zero_random(-5,5,1); + +#two sided +if($fm2l == $fm2r) +{$fm2 = $fm2r; +$ansm2 = 'is continuous';} +else +{$fm2 = 'DNE'; +$ansm2 = 'has a jump discontinuity';} + +if($f2l == $f2r) +{$f2 = $f2l; +$ans2 = 'is continuous';} +else +{$f2 = 'DNE'; +$ans2 = 'has a jump discontinuity';} + +$typem2 = DropDown( + [ + 'is continuous', + 'has a removable discontinuity', + 'has a jump discontinuity', + 'has an infinite discontinuity' + ], + $ansm2 +); + +$type2 = DropDown( + [ + 'is continuous', + 'has a removable discontinuity', + 'has a jump discontinuity', + 'has an infinite discontinuity' + ], + $ans2 +); + + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-5) -- (0,5) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-5) grid (5,5); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,very thick,rounded corners=8pt, red] (-4.5,$fm4) -- (-2.1,$fm2l); +\draw[red, very thick] (-2,$fm2l) circle (2.5pt); +\filldraw[red, very thick] (-2,$fm2r) circle (2.5pt); +\draw[very thick,rounded corners=8pt, red] (-2,$fm2r) .. controls (0,1) .. (2,$f2l); +\filldraw[red, very thick] (2,$f2l) circle (2.5pt); +\draw[red, very thick] (2,$f2r) circle (2.5pt); +\draw[->,very thick,rounded corners=8pt, red] (2.1,$f2r) -- (4.5,$f4); +\draw[red] (2,4) node [above right]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the piecewise defined function [`y=f(x)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +Complete the following two statements: + ++ The function [`f`] [_]{$typem2} at [`x=-2`]. + ++ The function [`f`] [_]{$type2} at [`x=2`]. + +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-discon-graph-3-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-discon-graph-3-jms.pg new file mode 100644 index 0000000000..ff093499a7 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-1-U-C/5-5-1-U-C-discon-graph-3-jms.pg @@ -0,0 +1,92 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Continuity - classifying discontinuities) +## Date(3 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); +$fm4 = non_zero_random(-3,4,1); +$fm2_val = random(-4,4,1); #f(-2) +$fm2_hole = non_zero_random(-4,4,1); #f from both sides at -2 +if($fm2_val == $fm2_hole) +{$fm2_hole = abs($fm2_hole)-1;} #keep a removable discontinuity +$ansm2 = 'has a removable discontinuity'; #keep a removable discontinuity at -2 + +$f1l = random(1,4,1); #f at 1 from left +$f1r = random(1,4,1); #f at 1 from right +$f1 = random(1,4,1); +$f4 = non_zero_random(-5,5,1); + +# continuous, removable or jump at 1 +if($f1l == $f1r && $f1l == $f1) +{$ans1 = 'is continuous';} +elsif($f1l == $f1r) +{$ans1 = 'has a removable discontinuity';} +else +{$ans1 = 'has a jump discontinuity';} + +$typem2 = DropDown( + [ + 'is continuous', + 'has a removable discontinuity', + 'has a jump discontinuity', + 'has an infinite discontinuity' + ], + $ansm2 +); + +$type1 = DropDown( + [ + 'is continuous', + 'has a removable discontinuity', + 'has a jump discontinuity', + 'has an infinite discontinuity' + ], + $ans1 +); + + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-5) -- (0,5) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-5) grid (5,5); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,very thick,rounded corners=8pt, red] (-4.5,$fm4) .. controls (-3.5,1) .. (-2.1,$fm2_hole); +\draw[red, very thick] (-2,$fm2_hole) circle (2.5pt); +\filldraw[red, very thick] (-2,$fm2_val) circle (2.5pt); +\draw[very thick,rounded corners=8pt, red] (-1.9,$fm2_hole) .. controls (-1,1) .. (0.9,$f1l); +\draw[red, very thick] (1,$f1l) circle (2.5pt); +\draw[red, very thick] (1,$f1r) circle (2.5pt); +\filldraw[red, very thick] (1,$f1) circle (2.5pt); +\draw[->,very thick,rounded corners=8pt, red] (1.1,$f1r) .. controls (3,1) .. (4.5,$f4); +\draw[red] (2,4.5) node [above right]{\(y=h(x)\)}; +END_TIKZ + +{ +BEGIN_PGML +Consider the following graph of the piecewise defined function [`y=h(x)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +Complete the following statements about the function [`h`]. + ++ The function [`h`] [_]{$typem2} at [`x=-2`]. + ++ The function [`h`] [_]{$type1} at [`x=1`]. + +END_PGML +} +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-2-U-C/5-5-2-U-C-pw-cont-1-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-2-U-C/5-5-2-U-C-pw-cont-1-jms.pg new file mode 100644 index 0000000000..309d459b96 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-2-U-C/5-5-2-U-C-pw-cont-1-jms.pg @@ -0,0 +1,158 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Continuity - classifying discontinuities) +## Date(10 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# interval +$left = random(-3,-1,1); #not important +$a = random(1, 3, 1); #first limit exists only when a=1; so 33% of cases +$b = random(4, 5, 1); + +#function coefficients +$c = $b+$a; +$d = $a*$b-random(1,3,2); #second limit exist wheneer d=1; so 50% of cases +$twicea = 2*$a; + +#functions +$f = Formula("x+$a")->reduce(); +$g = Formula("x^2 + $twicea*x-1")->reduce(); +$h = Formula("$c*x+$d")->reduce(); + +#function values +$fa = Compute("($a)+$a"); +$ga = Compute("($a)**2+$twicea*($a)-1"); +$gb = Compute("($b)**2+$twicea*($b)-1"); +$hb = Compute("$c*($b)+$d"); + +if($fa == $ga && $gb == $hb) +{ +$ans1 = $fa; +$ans2 = $gb; +$ans_typea = 'is continuous'; +$ans_typeb = 'is continuous'; +} +elsif($fa == $ga) +{ +$ans1 = $fa; +$ans2 = 'DNE'; +$ans_typea = 'is continuous'; +$ans_typeb = 'has a jump discontinuity'; +} +elsif($gb == $hb) +{ +$ans1 = 'DNE'; +$ans2 = $gb; +$ans_typea = 'has a jump discontinuity'; +$ans_typeb = 'is continuous'; +} +else +{ +$ans1 = 'DNE'; +$ans2 = 'DNE'; +$ans_typea = 'has a jump discontinuity'; +$ans_typeb = 'has a jump discontinuity'; +} + +$typea = DropDown( + [ + 'is continuous', + 'has a removable discontinuity', + 'has a jump discontinuity', + 'has an infinite discontinuity' + ], + $ans_typea +); + +$typeb = DropDown( + [ + 'is continuous', + 'has a removable discontinuity', + 'has a jump discontinuity', + 'has an infinite discontinuity' + ], + $ans_typeb +); + +BEGIN_PGML +Consider the following piecewise defined function. + +[``` f(x) = \begin{cases} [$f] & [$left] < x \leq [$a] \\ + [$g] & [$a] < x < [$b] \\ + [$h] & x \geq [$b] \end{cases}```] + +Complete the following statements about the function [`f`] + + +a) The function [`f`] [_]{$typea} at [`x=[$a]`]. + +b) The function [`f`] [_]{$typeb} at [`x=[$b]`]. + +END_PGML + +if($fa == $ga && $gb == $hb) +{ +BEGIN_PGML_SOLUTION +a) [``\lim_{x\to [$a]^-} f(x) = \lim_{x\to [$a]^-}[$f] = [$a]+[$a] = [$fa] = f([$a]) ``] and [``\lim_{x\to [$a]^+} f(x) = \lim_{x\to [$a]^-}[$g] = ([$a])^2+[$twicea]([$a])-1 = [$ga] ``] so [``\lim_{x\to [$a]}f(x) = [$ans1] = f([$a])``] and [`f`] is continuous at [`x=[$a]`]. + + +b) [``\lim_{x\to [$b]^-} f(x) = \lim_{x\to [$b]^-}[$g] = ([$b])^2+[$twicea]([$b])-1 =[$gb] ``] and [``\lim_{x\to [$b]^+} f(x) = \lim_{x\to [$b]^+}[$h] = [$c]([$b])+[$d]=[$hb] = f([$b]) ``] so [``\lim_{x\to [$b]}f(x) = [$ans2] = f([$b])``] and [`f`] is continuous at [`x=[$b]`]. + +END_PGML_SOLUTION +} +elsif($fa == $ga) +{ +BEGIN_PGML_SOLUTION + +a) [``\lim_{x\to [$a]^-} f(x) = \lim_{x\to [$a]^-}[$f] = [$a]+[$a] = [$fa] = f([$a]) ``] and [``\lim_{x\to [$a]^+} f(x) = \lim_{x\to [$a]^-}[$g] = ([$a])^2+[$twicea]([$a])-1 = [$ga] ``] so [``\lim_{x\to [$a]}f(x) = [$ans1] = f([$a])``] and [`f`] is continuous at [`x=[$a]`]. + +b) [``\lim_{x\to [$b]^-} f(x) = \lim_{x\to [$b]^-}[$g] = ([$b])^2+[$twicea]([$b])-1 =[$gb] ``] and [``\lim_{x\to [$b]^+} f(x) = \lim_{x\to [$b]^+}[$h] = [$c]([$b])+[$d]=[$hb] ``] so [``\lim_{x\to [$a]}f(x) ``] does not exist and [`f`] is not continuous at [`x=[$b]`]. Since both [``\lim_{x\to [$b]^-} f(x)``] and [``\lim_{x\to [$b]^+} f(x)``] exist but are not equal, [`f`] has a jump discontinuity at [`x=[$b]`]. + +END_PGML_SOLUTION +} +elsif($gb == $hb) +{ +BEGIN_PGML_SOLUTION + +a) [``\lim_{x\to [$a]^-} f(x) = \lim_{x\to [$a]^-}[$f]= [$a]+[$a] = [$fa] ``] and [``\lim_{x\to [$a]^+} f(x) = \lim_{x\to [$a]^-}[$g] = ([$a])^2+[$twicea]([$a])-1 =[$ga] ``] so [``\lim_{x\to [$a]}f(x) ``] does not exist and [`f`] is not continuous at [`x=[$a]`]. Since both [``\lim_{x\to [$a]^-} f(x)``] and [``\lim_{x\to [$a]^+} f(x)``] exist but are not equal, [`f`] has a jump discontinuity at [`x=[$a]`]. + +b) [``\lim_{x\to [$b]^-} f(x) = \lim_{x\to [$b]^-}[$g] = ([$b])^2+[$twicea]([$b])-1 =[$gb] ``] and [``\lim_{x\to [$b]^+} f(x) = \lim_{x\to [$b]^+}[$h] = [$c]([$b])+[$d]=[$hb] = f([$b]) ``] so [``\lim_{x\to [$b]}f(x) = [$ans2] = f([$b])``] and [`f`] is continuous at [`x=[$b]`]. + +END_PGML_SOLUTION +} +else +{ +BEGIN_PGML_SOLUTION + +a) [``\lim_{x\to [$a]^-} f(x) = \lim_{x\to [$a]^-}[$f]= [$a]+[$a] = [$fa] ``] and [``\lim_{x\to [$a]^+} f(x) = \lim_{x\to [$a]^-}[$g] = ([$a])^2+[$twicea]([$a])-1 =[$ga] ``] so [``\lim_{x\to [$a]}f(x) ``] does not exist and [`f`] is not continuous at [`x=[$a]`]. Since both [``\lim_{x\to [$a]^-} f(x)``] and [``\lim_{x\to [$a]^+} f(x)``] exist but are not equal, [`f`] has a jump discontinuity at [`x=[$a]`]. + +b) [``\lim_{x\to [$b]^-} f(x) = \lim_{x\to [$b]^-}[$g] = ([$b])^2+[$twicea]([$b])-1 =[$gb] ``] and [``\lim_{x\to [$b]^+} f(x) = \lim_{x\to [$b]^+}[$h] = [$c]([$b])+[$d]=[$hb] ``] so [``\lim_{x\to [$a]}f(x) ``] does not exist and [`f`] is not continuous at [`x=[$b]`]. Since both [``\lim_{x\to [$b]^-} f(x)``] and [``\lim_{x\to [$b]^+} f(x)``] exist but are not equal, [`f`] has a jump discontinuity at [`x=[$b]`]. + +END_PGML_SOLUTION +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-2-U-C/5-5-2-U-C-pw-cont-2-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-2-U-C/5-5-2-U-C-pw-cont-2-jms.pg new file mode 100644 index 0000000000..d116f6fd04 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-2-U-C/5-5-2-U-C-pw-cont-2-jms.pg @@ -0,0 +1,118 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Continuity - classifying discontinuities) +## Date(7 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl","parserPopUp.pl"); + +$left = random(-1,1,1); +$a = random(2,3,1); +$b = random(5,6,1); +$c = random(10,20,1)*random(-1,1,2); +$d = random(10,20,1)*random(-1,1,2); +$pow = random(2,3,1); +$right = random(7,9,1); +$ver = random(0,1,1); + +if($ver == 0) +{ +$f=Formula("$c/(x-$a)^($pow)")->reduce(); +$g=Formula("(x-$b)^($pow)/($d*(x-$b))")->reduce(); +if($c < 0) +{ +$La = '-inf'; +} +else +{ +$La = 'inf'; +} +$ans_typea = 'has an infinite discontinuity'; +$Lb = 0; +$ans_typeb = 'has a removable discontinuity'; +} +else +{ +$f=Formula("(x-$a)^($pow)/($d*(x-$a))")->reduce(); +$g=Formula("$c/(x-$b)^($pow)")->reduce(); +$La = 0; +$ans_typea = 'has a removable discontinuity'; +if($c < 0) +{ +$Lb = '-inf'; +} +else +{ +$Lb = 'inf'; +} +$ans_typeb = 'has an infinite discontinuity'; +} + +$typea = DropDown( + [ + 'is continuous', + 'has a removable discontinuity', + 'has a jump discontinuity', + 'has an infinite discontinuity' + ], + $ans_typea +); + +$typeb = DropDown( + [ + 'is continuous', + 'has a removable discontinuity', + 'has a jump discontinuity', + 'has an infinite discontinuity' + ], + $ans_typeb +); + +$function = DropDown( + [ + 'is defined', + 'is undefined', + ], + 'is undefined' +); + +if($ver == 0) +{ +BEGIN_PGML +Consider the following piecewise defined function [`y=f(x)`]. + +[```f(x) = \begin{cases} \displaystyle [$f] & [$left] < x \leq 4, x \neq [$a] \\ \displaystyle [$g] & 4 < x < [$right], x \neq [$b] \end{cases}```] + +Complete the following statements about the function [`g`]. + ++ The function [`f`] [_]{$typea} at [`x=[$a]`] because [``\lim_{x\to [$a]^+}f(x) = \,``] [_]{$La}{2}. + ++ The function [`f`] [_]{$typeb} at [`x=[$b]`] because [``\lim_{x\to [$b]}f(x) = \, ``] [_]{$Lb}{2} and [`f([$b])`] [_]{$function}. + +END_PGML +} +else +{ +BEGIN_PGML +Consider the following piecewise defined function [`y=f(x)`]. + +[```f(x) = \begin{cases} \displaystyle [$f] & [$left] < x \leq 4, x \neq [$a] \\ \displaystyle [$g] & 4 < x < [$right], x \neq [$b] \end{cases}```] + +Complete the following statements about the function [`f`]. + ++ The function [`f`] [_]{$typea} at [`x=[$a]`] because [``\lim_{x\to [$a]}f(x) = \, ``] [_]{$La}{2} and [`f([$a])`] [_]{$function}. + ++ The function [`f`] [_]{$typeb} at [`x=[$b]`] because [``\lim_{x\to [$b]^+}f(x) = \,``] [_]{$Lb}{2}. + +END_PGML +} +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-1-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-1-jms.pg new file mode 100644 index 0000000000..2fec1b8fe1 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-1-jms.pg @@ -0,0 +1,68 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + +## KEYWORDS() + +## DBsubject('') +## DBchapter('') +## DBsection('') +## Date('11 March 2025') +## Author('Jerrod Smith') +## Institution('University of Calgary') + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2,4,1)*random(-1,1,2); #first root +$b = $a + random(1,3,1); #second root, distinct +$aplusb = $a+$b; +$ab = $a*$b; +$c = non_zero_random(-5,5,1); +$ablessc = $ab - $c; +$alessc = $a-$c; +$bplusc = $b+$c; +Context()->variables->add(m=>"Real"); +$f1 = Formula("x^2*m*$alessc + x*$ablessc")->reduce(); +$f2 = Formula("x*m*$bplusc+m^2+$c")->reduce(); + +$ans = List($a,$b); + +BEGIN_PGML +Let [`m`] be an unknown constant. + +Consider the piecewise defined function [``f(x) = \begin{cases} [$f1] & x \geq -1 \\ [$f2] & x < -1 \end{cases} ``] + +Find all values of the constant [`m`] that make [`f`] continuous on [`(-\infty,\infty)`]. + +Enter your answer as a list of values of [`m`] separated by commas: [_]{$ans}{10} +END_PGML + +$f1m1 = Formula("(-1)^2*m*$alessc + (-1)*$ablessc")->reduce(); +$f2m1= Formula("(-1)*m*$bplusc+m^2+$c")->reduce(); + +BEGIN_PGML_SOLUTION +Both [`[$f1]`] and [`[$f2]`] are polynomials in [`x`] and are continuous for all values of [`x`]. So, we need to find all values of [`m`] that will guarantee that [`f`] is continuous at [`x=-1`]. That is, we need to ensure that [``\lim_{x\to -1^-}f(x) = \lim_{x\to -1^+}f(x) = f(-1)``]. + +First, [`` \lim_{x\to -1^+}f(x) = \lim_{x\to -1^+}[$f1] = [$f1m1] = f(-1)``], +and [`` \lim_{x\to -1^-}f(x) = \lim_{x\to -1^-}[$f2] = [$f2m1]``]. + +So, to make [`f`] continuous, we need to solve the equation [`` [$f1m1] = [$f2m1] ``] for [`m`]. + +Rearranging, we get [``0 = m^2-[$aplusb]m + [$ab] = (m-[$a])(m-[$b]) ``] which has two solutions [`m=[$a]`] or [`m=[$b]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-2-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-2-jms.pg new file mode 100644 index 0000000000..f924271db7 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-2-jms.pg @@ -0,0 +1,73 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + +## KEYWORDS() + +## DBsubject('') +## DBchapter('') +## DBsection('') +## Date('11 March 2025') +## Author('Jerrod Smith') +## Institution('University of Calgary') + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-5,5,1); #first root +$b = non_zero_random(-5,5,1); #second root +$c = random(2,5,1); +if($a - $b == 0) +{$b = abs($b)-1;} +$aplusb = $a+$b; +$ab = $a*$b; +Context()->variables->add(m=>"Real"); +$f1 = Formula("x^2+x*m*$aplusb")->reduce(); +$f2 = Formula("x^2+x*m^2+$ab*x")->reduce(); + +if($a==$b) +{$ans = $a;} +else +{$ans = List($a,$b);} + +BEGIN_PGML +Let [`m`] be an unknown constant. + +Consider the piecewise defined function [``f(x) = \begin{cases} [$f1] & x < [$c] \\ [$f2] & x \geq [$c] \end{cases} ``] + +Find all value(s) of the constant [`m`] that make [`f`] continuous on [`(-\infty,\infty)`]. + +Enter a number or, if needed, enter your answer as a list of value(s) of [`m`] separated by commas: [_]{$ans}{10} +END_PGML + +$f1c = Formula("($c)^2+($c)*m*$aplusb")->reduce(); +$f2c = Formula("($c)^2+($c)*m^2+$ab*($c)")->reduce(); +$eq = Formula("($c)*(m^2-m*$aplusb + $ab)")->reduce(); + +BEGIN_PGML_SOLUTION +Both [`[$f1]`] and [`[$f2]`] are polynomials in [`x`] and are continuous for all values of [`x`]. So, we need to find all values of [`m`] that will guarantee that [`f`] is continuous at [`x=[$c]`]. That is, we need to ensure that [``\lim_{x\to [$c]^-}f(x) = \lim_{x\to [$c]^+}f(x) = f([$c])``]. + +First, [`` \lim_{x\to [$c]^+}f(x) = \lim_{x\to [$c]^+}[$f2] = [$f2c] = f([$c])``], +and [`` \lim_{x\to [$c]^-}f(x) = \lim_{x\to [$c]^-}[$f1] = [$f1c]``]. + +So, to make [`f`] continuous, we need to solve the equation [`` [$f2c] = [$f1c]``] for [`m`]. + +Rearranging, we get [``0 = [$eq] = [$c](m-[$a])(m-[$b])``] which has solution(s): [`m=[$a]`] or [`m=[$b]`] + +**Note**: Only enter a repeated root once in this problem!. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-3-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-3-jms.pg new file mode 100644 index 0000000000..7a73cb87d5 --- /dev/null +++ b/Contrib/UCalgary/249-5-0-0-C/5-5-5-Ap-I/5-5-5-Ap-I-const-cont-3-jms.pg @@ -0,0 +1,81 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + +## KEYWORDS() + +## DBsubject('') +## DBchapter('') +## DBsection('') +## Date('11 March 2025') +## Author('Jerrod Smith') +## Institution('University of Calgary') + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-3,3,1); #first root +$b = $a + random(1,3,1); #second root, distinct +$c = random(2,3,1); +if($a+$b == 0) #avoid $b = -$a so we only have one solution +{$b = abs($b)-1;} +$aplusb = $a+$b; +$ab = $a*$b; +$abplus1 = $ab+1; +$aaplusab = $a**2 + $ab; +Context()->variables->add(m=>"Real"); +$f0 = Formula("x+$aaplusab")->reduce(); +$f1 = Formula("x^2+x*m^2+$ab*x")->reduce(); +$f2 = Formula("x^2+x*m*$aplusb")->reduce(); + +$ans = $a; + +BEGIN_PGML +Let [`m`] be an unknown constant. + +Consider the piecewise defined function [``f(x) = \begin{cases} [$f0] & x \leq 1 \\ [$f1] & 1 < x \leq [$c] \\ [$f2] & x >[$c] \end{cases} ``] + +Find all value(s) of the constant [`m`] that make [`f`] continuous on [`(-\infty,\infty)`]. + +Enter your answer as a list of value(s) of [`m`] separated by commas: [_]{$ans}{6} +END_PGML + +$f1c = Formula("($c)^2+($c)*m^2+$ab*($c)")->reduce(); +$f2c = Formula("($c)^2+($c)*m*$aplusb")->reduce(); +$eqc = Formula("($c)*(m^2-m*$aplusb + $ab)")->reduce(); + +$f01 = Formula("1+$aaplusab")->reduce(); +$f11 = Formula("m^2+$abplus1")->reduce(); +$eq1const = $abplus1 -1 - $aaplusab; +$eq1 = Formula("m^2+$eq1const")->reduce(); +$eq1pos = Compute("sqrt(abs($eq1const))"); # $a +$eq1neg = Compute("-sqrt(abs($eq1const))"); # -$a + +BEGIN_PGML_SOLUTION +The functions [`[$f0]`], [`[$f1]`] and [`[$f2]`] are polynomials in [`x`] and are continuous for all values of [`x`]. + +We need to find all values of [`m`] that will guarantee that [`f`] is continuous at [`x=1`] and at [`x=[$c]`]. That is, we need to find values of [`m`] that ensure that [```\lim_{x\to 1^-}f(x) = \lim_{x\to 1^+}f(x) = f(1)```] and [```\lim_{x\to [$c]^-}f(x) = \lim_{x\to [$c]^+}f(x) = f([$c]).```] + +We will start with [`x=[$c]`] and compute [`` \lim_{x\to [$c]^+}f(x) = \lim_{x\to [$c]^+}[$f2] = [$f2c] = f([$c])``], +and [`` \lim_{x\to [$c]^-}f(x) = \lim_{x\to [$c]^-}[$f1] = [$f1c]``]. Now, we will solve the equation [`` [$f2c] = [$f1c]``] for [`m`]. Rearranging, we get [``0 = [$eqc] = [$c](m-[$a])(m-[$b])``] which has solutions: [`m=[$a]`] or [`m=[$b]`]. + +Next, we will consider [`x=1`] and compute [`` \lim_{x\to 1^+}f(x) = \lim_{x\to 1^+}[$f1] = [$f11]``], +and [`` \lim_{x\to 1^-}f(x) = \lim_{x\to 1^-}[$f0] = [$f01]``]. Again, we will solve the equation [`` [$f11] = [$f01]``] for [`m`]. Rearranging we get [``0 = [$eq1] = (m-[$a])(m+[$a])``] which has roots [`m=[$eq1pos]`] and [`m=[$eq1neg]`]. + +The only common solution to the two equations is [`m=[$a]`], so this is the only value of [`m`] that makes [`f`] continuous everwhere. +END_PGML_SOLUTION + +ENDDOCUMENT(); From 3b1524464e1d302fbeefef7a6064021418f5cd6f Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 12:22:24 -0600 Subject: [PATCH 05/29] Add files via upload --- .../6-1-0-U-C/6-1-0-U-C-cost-dd-jms.pg | 89 +++++++ .../6-1-0-U-C/6-1-0-U-C-pop-dd-jms.pg | 103 ++++++++ .../6-1-0-U-C/6-1-0-U-C-reaction-dd-jms.pg | 92 +++++++ .../6-1-0-U-C/6-1-0-U-C-vel-acc-dd-jms.pg | 79 ++++++ .../6-1-1-R-C/6-1-1-R-C-defn-pt-1-jms.pg | 79 ++++++ .../6-1-2-R-C/6-1-2-R-C-defn-fcn-1-jms.pg | 71 ++++++ .../6-1-2-R-C/6-1-2-R-C-defn-fcn-2-jms.pg | 71 ++++++ .../6-10-1-Ap-C-inv-der-from-graph-1-jms.pg | 96 +++++++ .../6-10-1-Ap-C-inv-table-1-jms.pg | 127 ++++++++++ .../6-10-1-Ap-C-inv-table-2-jms.pg | 131 ++++++++++ .../6-10-2-Ap-C/6-10-2-Ap-C-inv-trig-1-jms.pg | 82 ++++++ .../6-10-2-Ap-C/6-10-2-Ap-C-inv-trig-2-jms.pg | 71 ++++++ .../6-2-1-Ap-I-trkylmt-deriv-1-cmm.pg | 65 +++++ .../6-2-1-Ap-I-trkylmt-deriv-2-cmm.pg | 64 +++++ .../6-2-1-Ap-I-trkylmt-deriv-3-cmm.pg | 63 +++++ .../6-3-1-Ap-C-fcn-to-line-1-jms.pg | 74 ++++++ .../6-3-1-Ap-C-fcn-to-line-2-jms.pg | 69 +++++ .../6-3-1-Ap-C/6-3-1-Ap-C-slope-1-jms.pg | 69 +++++ .../6-9-1-U-C/6-9-1-U-C-line-to-fcn-1-jms.pg | 55 ++++ .../6-9-1-U-C/6-9-1-U-C-line-to-fcn-2-jms.pg | 56 +++++ .../6-9-2-U-C-der-dne-graph-1-jms.pg | 161 ++++++++++++ .../6-9-2-U-C-der-from-graph-1-jms.pg | 64 +++++ .../6-9-2-U-C-der-zero-graph-1-jms.pg | 59 +++++ .../6-9-2-U-C-der-zero-graph-2-jms.pg | 79 ++++++ .../7-2-1-Ap-C/7-2-1-Ap-C-mark1.pg | 52 ++++ .../7-2-1-Ap-C/7-2-1-Ap-C-prod-mlb.pg | 65 +++++ .../7-2-1-Ap-C/7-2-1-Ap-C-simple-prod1-mlb.pg | 65 +++++ .../7-2-1-Ap-C/7-2-1-Ap-C-simple-prod2-mlb.pg | 56 +++++ .../7-2-2-Ap-C/7-2-2-Ap-C-quo2-mlb.pg | 65 +++++ .../7-2-2-Ap-C/7-2-2-Ap-C-simple-quo-mlb.pg | 57 +++++ .../7-2-2-Ap-C/7-2-2-Ap-C-simple-quo1-mlb.pg | 64 +++++ .../7-2-2-Ap-C/7-2-2-Ap-C-simple-quo2-mlb.pg | 55 ++++ .../7-2-3-Ap-C-simple-chain1-mlb.pg | 59 +++++ .../7-2-3-Ap-C-simple-chain2-mlb.pg | 59 +++++ .../7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-1-cmm.pg | 73 ++++++ .../7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-2-cmm.pg | 72 ++++++ .../7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-3-cmm.pg | 63 +++++ .../7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-1-cmm.pg | 75 ++++++ .../7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-2-cmm.pg | 62 +++++ .../7-2-6-Ap-I/7-2-6-Ap-I-mtpl-chain-1-cmm.pg | 68 +++++ .../7-2-6-Ap-I-mtpl-prod-chain-1-cmm.pg | 77 ++++++ .../7-2-6-Ap-I-mtpl-prod-chain-2-cmm.pg | 76 ++++++ .../7-2-6-Ap-I-mtpl-prod-chain-3-cmm.pg | 61 +++++ .../8-1-0-R-I/8-1-0-R-I-defn-inc-dec-2-jms.pg | 56 +++++ .../8-1-0-R-I/8-1-0-R-I-defn-inc-dec-jms.pg | 59 +++++ .../8-1-1-R-C-state-der-inc-dec-2-jms.pg | 65 +++++ .../8-1-1-R-C-state-der-inc-dec-jms.pg | 65 +++++ .../8-1-2-U-C/8-1-2-U-C-cubic-inc-dec-jms.pg | 80 ++++++ .../8-1-2-U-C/8-1-2-U-C-pw-inc-dec-1-jms.pg | 236 ++++++++++++++++++ .../8-1-2-U-C/8-1-2-U-C-quart-inc-dec-jms.pg | 99 ++++++++ .../8-1-3-U-C-der-cubic-inc-dec-jms.pg | 80 ++++++ .../8-1-3-U-C-der-quart-inc-dec-jms.pg | 97 +++++++ .../8-1-3-U-C-pw-der-inc-dec-1-jms.pg | 209 ++++++++++++++++ .../8-1-3-U-C-pw-der-inc-dec-2-jms.pg | 209 ++++++++++++++++ .../8-1-4-Ap-C/8-1-4-Ap-C-abstract-1-jms.pg | 69 +++++ .../8-1-4-Ap-C/8-1-4-Ap-C-danny-1.pg | 69 +++++ .../8-1-4-Ap-C/8-1-4-Ap-C-log-2-jms.pg | 58 +++++ .../8-1-4-Ap-C/8-1-4-Ap-C-poly-3-jms.pg | 65 +++++ .../8-2-0-R-I/8-2-0-R-I-conc-defn-2-jms.pg | 62 +++++ .../8-2-0-R-I/8-2-0-R-I-defn-conc-jms.pg | 62 +++++ .../8-2-3-U-C-concave-original-1-jms.pg | 82 ++++++ .../8-2-3-U-C-concave-original-2-jms.pg | 99 ++++++++ .../8-2-4-U-I-cubic-first-der-concave-jms.pg | 100 ++++++++ .../8-2-4-U-I-pw-frst-der-concave-jms.pg | 222 ++++++++++++++++ .../8-2-5-U-C-pw-second-der-concave-1-jms.pg | 208 +++++++++++++++ .../8-2-5-U-C-sec-der-quart-conc-jms.pg | 104 ++++++++ .../8-2-6-Ap-C/8-2-6-Ap-C-abstract-3-jms.pg | 69 +++++ .../8-2-6-Ap-C/8-2-6-Ap-C-exp-3-jms.pg | 71 ++++++ .../8-2-6-Ap-C/8-2-6-Ap-C-poly-1-jms.pg | 91 +++++++ .../8-2-6-Ap-C/8-2-6-Ap-C-rational-2-jms.pg | 63 +++++ 70 files changed, 5942 insertions(+) create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-cost-dd-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-pop-dd-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-reaction-dd-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-vel-acc-dd-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-1-1-R-C/6-1-1-R-C-defn-pt-1-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-1-2-R-C/6-1-2-R-C-defn-fcn-1-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-1-2-R-C/6-1-2-R-C-defn-fcn-2-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-der-from-graph-1-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-table-1-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-table-2-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-10-2-Ap-C/6-10-2-Ap-C-inv-trig-1-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-10-2-Ap-C/6-10-2-Ap-C-inv-trig-2-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-1-cmm.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-2-cmm.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-3-cmm.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-fcn-to-line-1-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-fcn-to-line-2-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-slope-1-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-9-1-U-C/6-9-1-U-C-line-to-fcn-1-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-9-1-U-C/6-9-1-U-C-line-to-fcn-2-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-dne-graph-1-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-from-graph-1-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-zero-graph-1-jms.pg create mode 100644 Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-zero-graph-2-jms.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-mark1.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-prod-mlb.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-simple-prod1-mlb.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-simple-prod2-mlb.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-quo2-mlb.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo-mlb.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo1-mlb.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo2-mlb.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-3-Ap-C/7-2-3-Ap-C-simple-chain1-mlb.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-3-Ap-C/7-2-3-Ap-C-simple-chain2-mlb.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-1-cmm.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-2-cmm.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-3-cmm.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-1-cmm.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-2-cmm.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-chain-1-cmm.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-1-cmm.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-2-cmm.pg create mode 100644 Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-3-cmm.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-0-R-I/8-1-0-R-I-defn-inc-dec-2-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-0-R-I/8-1-0-R-I-defn-inc-dec-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-1-R-C/8-1-1-R-C-state-der-inc-dec-2-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-1-R-C/8-1-1-R-C-state-der-inc-dec-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-cubic-inc-dec-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-pw-inc-dec-1-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-quart-inc-dec-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-der-cubic-inc-dec-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-der-quart-inc-dec-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-pw-der-inc-dec-1-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-pw-der-inc-dec-2-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-abstract-1-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-danny-1.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-log-2-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-poly-3-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-0-R-I/8-2-0-R-I-conc-defn-2-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-0-R-I/8-2-0-R-I-defn-conc-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-3-U-C/8-2-3-U-C-concave-original-1-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-3-U-C/8-2-3-U-C-concave-original-2-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-4-U-I/8-2-4-U-I-cubic-first-der-concave-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-4-U-I/8-2-4-U-I-pw-frst-der-concave-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-5-U-C/8-2-5-U-C-pw-second-der-concave-1-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-5-U-C/8-2-5-U-C-sec-der-quart-conc-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-abstract-3-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-exp-3-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-poly-1-jms.pg create mode 100644 Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-rational-2-jms.pg diff --git a/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-cost-dd-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-cost-dd-jms.pg new file mode 100644 index 0000000000..9c4689ac47 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-cost-dd-jms.pg @@ -0,0 +1,89 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Rates of change - business and economics) +## Date(12 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; +$a = random(10,20,1); #coeficient +$twicea = $a*2; +$c = random(100,200,5); +$x1 = random(2,4,1)**2; +$x2 = random(5,7,1)**2; +$x1p1 = $x1+1; + +$f = Formula("$a*sqrt(x)ln(x)+$c")->reduce(); +$fder = Formula("($a*ln(x)+$twicea)/(2*sqrt(x))")->reduce(); + +$change = Compute("$a*sqrt($x2)ln($x2)+$c - ($a*sqrt($x1)ln($x1)+$c)"); + +$onemore = Compute("$a*sqrt($x1p1)ln($x1p1)+$c - ($a*sqrt($x1)ln($x1)+$c)"); + +$marginal = Compute("($a*ln($x1)+$twicea)/(2*sqrt($x1))"); + +$popup1 = DropDown( + [ + 'magnitude', + 'limit', + 'average rate of change', + 'instantaneous rate of change', + ], + 'instantaneous rate of change' +); +$popup2 = DropDown( + [ + 'cost of producing x units', + 'cost of producing x+1 units', + 'cost of producing one more unit than x', + 'average change in cost', + ], + 'cost of producing one more unit than x' +); + +BEGIN_PGML +Let [``C(x) = [$f]``] be the total cost (in dollars) required for a local business to produce [`x`] units of a retail product. + +Fill in the blanks to complete the following statements. + ++ The **change in cost** or the **additional cost** if production is increased from [`[$x1]`] units to [`[$x2]`] units is equal to [_]{$change}{10}. (Enter an exact numerical value). + ++ The **derivative** of [`C(x)`] with respect to [`x`] is called the **marginal cost** and it is equal to the [_]{$popup1} of [`C(x)`] with respect to [`x.`] + ++ Assuming that [`x`] takes integer (whole number) values, the **marginal cost** is approximately equal to the difference of [`C(x+1)`] and [`C(x)`], that is [``C'(x) \approx C(x+1)-C(x).``] We can interpret this last equation by saying that: "The **marginal cost at [`x`]** is approximately equal to the [_]{$popup2}." + +Let's consider this last point in an example. Enter exact numerical values below. + ++ Given that [``C'(x) = [$fder]``], we have [`C'([$x1]) = \,`] [_]{$marginal}{5}. + ++ [`C([$x1p1]) - C([$x1]) = \, `] [_]{$onemore}{10}. + +**Ask yourself**: Are these last two numbers close to each other? + +END_PGML + +Context()->{format}{number} = "%.2f"; +BEGIN_PGML_SOLUTION ++ The **change in cost** or the **additional cost** if production is increased from [`[$x1]`] units to [`[$x2]`] units is equal to [`C([$x2])-C([$x1]) = [$a]\sqrt{[$x2]}\ln([$x2])+[$c] - ([$a]\sqrt{[$x1]}\ln([$x1])+[$c])`]. + ++ The **derivative** of [`C(x)`] with respect to [`x`] is called the **marginal cost** and it is equal to the **instantaneous rate of change** of [`C(x)`] with respect to [`x.`] + ++ Since [``C'(x) \approx C(x+1)-C(x),``] this means that [`C'(x)`] is approximately equal to the difference in cost between producing [`x+1`] units and [`x`] units, that is the cost required to produce the [`(x+1)`]-st unit. + ++ In the example, the marginal cost of [`C'([$x1]) = \$ [$marginal]`] per unit is approximately equal to [`C([$x1p1]) - C([$x1]) = \$ [$onemore]`], which is the cost to produce the [`[$x1p1]`]-th unit. + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-pop-dd-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-pop-dd-jms.pg new file mode 100644 index 0000000000..fd881b18f1 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-pop-dd-jms.pg @@ -0,0 +1,103 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Rates of change - natural and social sciences) +## Date(13 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; +$a = random(1000,2000,10); #coeficient +$c = random(2,9,1); +$r = random(-9,-1,1)/100; +$cr = $c*$r; +$arc = $a*$cr; +Context()->variables->add(t=>"Real"); + +$f = Formula("$a/(1+$c*e^($r*t))")->reduce(); +$fder = Formula("(-$arc*e^($r*t))/((1+$c*e^($r*t))^2)")->reduce(); + +$popup1 = DropDown( + [ + 'magnitude', + 'limit', + 'average rate of change', + 'instantaneous rate of change', + ], + 'instantaneous rate of change' +); + + +$popup2 = DropDown( + [ + 'individuals', + 'weeks', + 'individuals per week', + 'weeks per individual', + ], + 'individuals per week' +); + +$popup3 = DropDown( + [ + 'area', + 'average', + 'limit', + 'slope', + ], + 'slope' +); + + +$popup4 = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'fluctuating up and down', + ], + 'increasing' +); + + +BEGIN_PGML +The population of an animal species (numer of individuals) in Banff National Park is given by [``p(t) = [$f]``], where [`t`] is time measured in weeks from time [`t=0`] when the species was reintroduced to the park. + +Fill in the blanks to complete the following statements. + ++ The **derivative** of [`p(t)`] with respect to [`t`] is the [_]{$popup1} of the population with respect to time. + ++ The correct **units** for the **derivative** of [`p(t)`] are [_]{$popup2}. + ++ If we were to **graph** the population function then the value of the **derivative** [`p'(t_1)`] at time [`t_1`] represents the [_]{$popup3} of the graph [`y=p(t)`] at time [`t_1`]. + ++ Given that [``p'(t) = [$fder]``], which of the following can conclude about the population of this animal in Banff National Park? + + The population is [_]{$popup4} over time. + +END_PGML + +BEGIN_PGML_SOLUTION ++ The **derivative** of [`p(t)`] with respect to [`t`] is the **instantaneous rate of change** of the population with respect to time. + ++ The correct **units** for the **derivative** of [`p(t)`] are **individuals per week**. + ++ If we were to **graph** the population function then the value of the **derivative** [`p'(t_1)`] at time [`t_1`] represents the **slope** of the graph [`y=p(t)`] at time [`t_1`]. + ++ Given that [``p'(t) = [$fder]``], which of the following can conclude about the population of this animal in Banff National Park? + + The population is **increasing** over time. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-reaction-dd-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-reaction-dd-jms.pg new file mode 100644 index 0000000000..0af65c5310 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-reaction-dd-jms.pg @@ -0,0 +1,92 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Rates of change - natural and social sciences) +## Date(12 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context()->variables->add(t=>"Real"); +$a = random(2,7,1); #root +$am1 = $a - 1; +$c = non_zero_random(-3,20,1); + +$f = Formula("te^t-e^t*$am1+$c")->reduce(); +$fder = Formula("t*e^t-$a*e^t")->reduce(); +$fder_fac = Formula("e^t(t-$a)")->reduce(); + +$popup1 = DropDown( + [ + 'magnitude', + 'limit', + 'average rate of change', + 'instantaneous rate of change', + ], + 'instantaneous rate of change' +); + +$popup2 = DropDown( + [ + 'concentration', + 'average reaction rate', + 'instantaneous reaction rate' + ], + 'instantaneous reaction rate' +); + +$popup_pos = DropDown( + [ + 'positive', + 'negative', + ], + 'positive' +); + +$popup_neg = DropDown( + [ + 'positive', + 'negative', + ], + 'negative' +); + +Context(Interval); + +$inc = Compute("([$a],inf)"); +$dec = Compute("(0,[$a])"); + +BEGIN_PGML +Suppose that the concentration of a single chemical product [`A`] in a reversible chemical reaction [``X + Y \rightleftharpoons A``] is given by the function [``[A] = f(t) = [$f]``], where [`t\geq 0`] is time measured in seconds and the concentration of [`A`] is measured in moles per litre. + +Fill in the blanks to complete the following statements. + ++ The **derivative** of [`[A]`] with respect respect to [`t`] is the [_]{$popup1} of [`f`] with respect to [`t`], and this quantity represents the [_]{$popup2} of the reaction [``X + Y \rightleftharpoons A``]. + ++ The concentration of [`A`] is **increasing** when the derivative [``\dfrac{d[A]}{dt} = f'(t)``] is [_]{$popup_pos}, and the concentration of [`A`] is **decreasing** when the derivative [``\dfrac{d[A]}{dt} = f'(t)``] is [_]{$popup_neg}. + ++ Given that [``\dfrac{d[A]}{dt} = f'(t) = [$fder]``], the concentration of [`A`] is **increasing** on the open interval [_]{$inc}{5} and the concentration of [`A`] is **decreasing** on the open interval [_]{$dec}{5}. [@helpLink('intervals')@]* + +END_PGML + +BEGIN_PGML_SOLUTION ++ The derivative of [`[A]`] with respect respect to [`t`] is the **instantantaneous rate of change** of [`f`] with respect to [`t`], and this quantity represents the **instantaneous reaction rate** of the reaction [``X + Y \rightleftharpoons A``]. + ++ The concentration of [`A`] is **increasing** when the derivative [``\dfrac{d[A]}{dt} = f'(t)``] is **positive**, and the concentration of [`A`] is **decreasing** when the derivative [``\dfrac{d[A]}{dt} = f'(t)``] is **negative**. + ++ Given that [``\dfrac{d[A]}{dt} = f'(t) = [$fder] = [$fder_fac]``] and [`t\geq 0`], the concentration of [`A`] is **increasing** on the open interval [`[$inc]`] and the concentration of [`A`] is **decreasing** on the open interval [`[$dec].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-vel-acc-dd-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-vel-acc-dd-jms.pg new file mode 100644 index 0000000000..a077a7b709 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-1-0-U-C/6-1-0-U-C-vel-acc-dd-jms.pg @@ -0,0 +1,79 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Rates of change - general) +## Date(12 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context()->variables->add(t=>"Real"); +$a = random(1,4,1); +$b = $a + random(1,3,1); #distinct roots +$aplusb = $a+$b; +$ab = $a*$b; +$aplusb3 = 3*$aplusb; +$absix = 6*$ab; + +$f = Formula("2t^3 - t^2*$aplusb3 + t*$absix")->reduce(); +$fder = Formula("6*(t^2-t*$aplusb + $ab)")->reduce(); +$fderder = Formula("6*(2*t - $aplusb)")->reduce(); + +$popup1 = DropDown( + [ + 'average', + 'limit', + 'derivative', + 'value' + ], + 'derivative' +); + +$popup2 = DropDown( + [ + 'acceleration', + 'distance travelled', + 'position', + 'velocity' + + ], + 'velocity' +); + +$rest = List($a,$b); + +BEGIN_PGML +Suppose that the position of a spacecraft is given by a function [``s = f(t) = [$f]``], where [`t\geq 0`] is time measured in seconds and the position is measured in kilometers. + +Fill in the blanks to complete the following statements. + ++ The **instantaneous rate of change** of [`s`] with respect to [`t`] is the [_]{$popup1} of [`f`] with respect to [`t`], and this quantity represents the [_]{$popup2} of the spacecraft as a function of [`t`]. + ++ The spacecraft is **at rest** (that is, **not moving**) when the [_]{$popup2} of the spacecraft is equal to [`0\, \mathrm{km/s}`], and this occurs when [`t`] is equal to [_]{$rest}{5} seconds (enter the value(s) of [`t`] as a list separated by commas). + ++ The **acceleration** of the spacecraft as a function of [`t`] is given by [`a(t) = \,`] [_]{$fderder}{10}. + +END_PGML + +BEGIN_PGML_SOLUTION ++ The **instantaneous rate of change** of [`s`] with respect to [`t`] is the derivative of [`f`] with respect to [`t`], and this quantity represents the velocity of the spacecraft as a function of [`t`]. + ++ The spacecraft is **at rest** (that is, **not moving**) when the velocity of the spacecraft is equal to [`0\, \mathrm{km/s}`], so we need to solve the equation [```0 = v(t) = f'(t) = [$fder] = 6(x-[$a])(x-[$b]),```] and so we have that the spacecraft is **at rest** when [`t`] is equal to [`[$rest]`] seconds. + ++ The **acceleration** of the spacecraft as a function of [`t`] is given by [`a(t) = v'(t) = f''(t) = [$fderder].`] +END_PGML_SOLUTION + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-1-1-R-C/6-1-1-R-C-defn-pt-1-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-1-1-R-C/6-1-1-R-C-defn-pt-1-jms.pg new file mode 100644 index 0000000000..d694c6c18d --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-1-1-R-C/6-1-1-R-C-defn-pt-1-jms.pg @@ -0,0 +1,79 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Definition of the derivative) +## Date(13 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1)*random(-1,1,2); +$b = non_zero_random(-2, 2, 1); +$c = non_zero_random(-9,9,1); +$pt = random(2,5,1)**2; #sqaure + +$f = Formula("$a*x^($b)+$c*sqrt(x)")->reduce(); +Context()->variables->add(h=>"Real"); + +$fpt = Compute("$a*$pt^($b)+$c*sqrt($pt)"); + +$fpth= Formula("$a*($pt+h)^($b)+$c*sqrt($pt +h)")->reduce(); + +$fprimepth = Formula("(($a*($pt+h)^($b)+$c*sqrt($pt +h))-($a*$pt^($b)+$c*sqrt($pt)))/h")->reduce(); +$fprimepth->{limits} = [1,3]; + +$fprimeptx = Formula("(($a*(x)^($b)+$c*sqrt(x))-($a*$pt^($b)+$c*sqrt($pt)))/(x-$pt)")->reduce(); +$fprimeptx->{limits} = [1,3]; + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f]``]. + +Evaluate the following expressions where [`h`] is a variable. + ++ [`f([$pt])=\,`][_]{$fpt}{10} + ++ [`f([$pt]+h)=\,`][_]{$fpth}{20} + +Using the explicit function given above, **set up, but do not evaluate**, the following limits that could be used to find the derivative [`f'([$pt])`]. + ++ [``f'([$pt]) = \lim_{h\to 0} ``] [_]{$fprimepth}{30} + ++ [``f'([$pt]) = \lim_{x\to [$pt]} ``] [_]{$fprimeptx}{30} +END_PGML + +BEGIN_PGML_SOLUTION ++ [`f([$pt])=[$a]([$pt]^{[$b]})+[$c]\sqrt{[$pt]}`] + ++ [`f([$pt]+h)= [$a]([$pt]+h)^{[$b]}+[$c]\sqrt{[$pt] +h} = [$fpth]`] + ++ [``f'([$pt]) = \lim_{h\to 0} \frac{f([$pt]+h)-f([$pt])}{h} = \lim_{h\to 0} \frac{[$fpth]-([$a]([$pt]^{[$b]})+[$c]\sqrt{[$pt]})}{h}``] + ++ [``f'([$pt]) = \lim_{x\to [$pt]} \frac{f(x)-f([$pt])}{x-[$pt]} = \lim_{x\to 0} \frac{[$f]-([$a]([$pt]^{[$b]})+[$c]\sqrt{[$pt]})}{x-[$pt]}``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-1-2-R-C/6-1-2-R-C-defn-fcn-1-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-1-2-R-C/6-1-2-R-C-defn-fcn-1-jms.pg new file mode 100644 index 0000000000..2230fef850 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-1-2-R-C/6-1-2-R-C-defn-fcn-1-jms.pg @@ -0,0 +1,71 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Definition of the derivative) +## Date(13 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1); +$b = non_zero_random(2, 4, 1); +$c = non_zero_random(-9,9,1); + +$f = Formula("$a*sin($b*x)+$c*ln(x)")->reduce(); +Context()->variables->add(h=>"Real"); + + +$fxplush= Formula("$a*sin($b*(x+h))+$c*ln(x+h)")->reduce(); +$fxplush->{limits} = [1,3]; + +$fprime = Formula("($fxplush - $f)/h")->reduce(); +$fprime->{limits} = [1,3]; + + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f]``]. + +Evaluate the following expression where [`x`] and [`h`] are variables. + ++ [`f(x+h)=\,`][_]{$fxplush}{25} + +Using the explicit function given above, **set up, but do not evaluate**, the following limit that could be used to find the derivative [`f'(x)`]. + ++ [``f'(x) = \lim_{h\to 0} ``] [_]{$fprime}{40} + +END_PGML + +BEGIN_PGML_SOLUTION + ++ [`f(x+h)=[$fxplush]`] + ++ [``f'(x) = \lim_{h\to 0} \frac{f(x+h)-f(x)}{h} = \lim_{h\to 0} \frac{[$fxplush]-[$f]}{h}``] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-1-2-R-C/6-1-2-R-C-defn-fcn-2-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-1-2-R-C/6-1-2-R-C-defn-fcn-2-jms.pg new file mode 100644 index 0000000000..c63897204a --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-1-2-R-C/6-1-2-R-C-defn-fcn-2-jms.pg @@ -0,0 +1,71 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Definition of the derivative) +## Date(13 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-9, -2, 1); +$b = non_zero_random(2, 5, 1); +$c = random(2,9,1); + +$f = Formula("$a*cos(x)+$c*ln($b*x)")->reduce(); +Context()->variables->add(h=>"Real"); + + +$fxplush= Formula("$a*cos(x+h)+$c*ln($b*(x+h))")->reduce(); +$fxplush->{limits} = [1,3]; + +$fprime = Formula("($fxplush - $f)/h")->reduce(); +$fprime->{limits} = [1,3]; + + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f]``]. + +Evaluate the following expression where [`x`] and [`h`] are variables. + ++ [`f(x+h)=\,`][_]{$fxplush}{25} + +Using the explicit function given above, **set up, but do not evaluate**, the following limit that could be used to find the derivative [`f'(x)`]. + ++ [``f'(x) = \lim_{h\to 0} ``] [_]{$fprime}{40} + +END_PGML + +BEGIN_PGML_SOLUTION + ++ [`f(x+h)=[$fxplush]`] + ++ [``f'(x) = \lim_{h\to 0} \frac{f(x+h)-f(x)}{h} = \lim_{h\to 0} \frac{[$fxplush]-[$f]}{h}``] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-der-from-graph-1-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-der-from-graph-1-jms.pg new file mode 100644 index 0000000000..26257b9bdb --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-der-from-graph-1-jms.pg @@ -0,0 +1,96 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives of inverse functions) +## Date(17 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +$fm5 = random(3,5,1); #f at -5 +$fm2 = random(-2,1,1); #f at -2 +$f5 = random(-5,-4,1); #f at 5 + +# right line +$slope2 = Compute("($f5-$fm2)/(5+2)"); +$slope2_rec = Compute("(5+2)/($f5-$fm2)"); +$Lr = Formula("$slope2(x-5)+$f5")->reduce(); +$Lr_inv = Formula("$slope2_rec(x-$f5)+5")->reduce(); +$finvm3 = Compute("$slope2_rec(-3-$f5)+5"); + +#left line +$slopem3 = Compute("($fm2-$fm5)/(-2+5)"); +$slopem3_rec = Compute("(-2+5)/($fm2-$fm5)"); +$Ll = Formula("$slopem3(x+5)+$fm5")->reduce(); +$Ll_inv = Formula("$slopem3_rec(x-$fm5)-5")->reduce(); +$finv2 = Compute("$slopem3_rec(2-$fm5)-5"); + +$ver=random(0,1,1); +if($ver == 0) +{$pt = -3; +$slopept = $slopem3; +$slopeinvpt = $slope2_rec; +} +else +{$pt = 2; +$slopept = $slope2; +$slopeinvpt = $slopem3_rec; +} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-5) -- (0,5) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-5) grid (5,5); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[very thick,rounded corners=8pt, red] (-5,$fm5) -- (-2,$fm2); +\draw[very thick,rounded corners=8pt, red] (-2,$fm2) -- (5,$f5); +\filldraw[red, very thick] (-2,$fm2) circle (2.5pt) node [above right]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the invertible piecewise defined function [`y=f(x)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +Find the following values of the derivatives of [`f`] and [`f^{-1}`]. + +[`f'([$pt]) = \, `][_]{$slopept}{2} + +[`(f^{-1})'([$pt]) = \, `][_]{$slopeinvpt}{2} + +END_PGML + +BEGIN_PGML_HINT +Use that [``(f^{-1})'([$pt]) = \frac{1}{f'(f^{-1}([$pt]))}``] +END_PGML_HINT + +if($ver == 0) +{ +Context()->{format}{number} = "%.1f"; +BEGIN_PGML_SOLUTION +When [`x=[$pt]`] we can use the line the line segment joining [`(-5,[$fm5])`] to [`(-2,[$fm2])`] to find that [``f'([$pt]) = \frac{[$fm2]-[$fm5]}{-2+5}.``] + +On the other hand, since [``(f^{-1})'([$pt]) = \frac{1}{f'(f^{-1}([$pt]))}``] and [`f^{-1}([$pt]) \approx [$finvm3]`], we have that [``(f^{-1})'([$pt])``] is the reciprocal of the slope of the line segment joining [`(-2,[$fm2])`] to [`(5,[$f5])`]. That is, [``(f^{-1})'([$pt]) = \frac{5+2}{[$f5]-[$fm2]}.``] +END_PGML_SOLUTION +} +else +{ +Context()->{format}{number} = "%.1f"; +BEGIN_PGML_SOLUTION +When [`x=[$pt]`] we can use the line the line segment joining [`(-2,[$fm2])`] to [`(5,[$f5])`] to find that [``f'([$pt]) = \frac{[$f5]-[$fm2]}{5+2}.``] + +On the other hand, since [``(f^{-1})'([$pt]) = \frac{1}{f'(f^{-1}([$pt]))}``] and [`f^{-1}([$pt]) \approx [$finv2]`], we have that [``(f^{-1})'([$pt])``] is the reciprocal of the slope of the line segment joining [`(-5,[$fm5])`] to [`(-2,[$fm2])`]. That is, [``(f^{-1})'([$pt]) = \frac{-2+5}{[$fm2]-[$fm5]}.``] +END_PGML_SOLUTION +} +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-table-1-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-table-1-jms.pg new file mode 100644 index 0000000000..c659ac03bb --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-table-1-jms.pg @@ -0,0 +1,127 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives of inverse functions) +## Date(17 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +#6-10-1-Ap-C calculate values and derivatives of the inverse of a function (abstractly) + +$a = non_zero_random(-9,9,1); # input_1 +$b = $a + random(1,9,1); # input_2 +$c = $b + random(1,9,1); # input_3 +$d = $c + random(1,9,1); # output_4 + +$fa = non_zero_random(-9,9,1); # output_1 +$fb = $fa + random(1,9,1); # output_2 +$fc = $fb + random(1,9,1); # output_3 +$fd = $fc + random(1,9,1); # output_4 + +$fdera = non_zero_random(-9,9,1); # der_output_1 +$fderb = $fdera + random(1,9,1); # der_output_2 +$fderc = $fderb + random(1,9,1); # der_output_3 +$fderd = $fderc + random(1,9,1); # der_output_4 + +#avoid derivatives that are 0 +if($fderb == 0) +{ +$fderb = random(1,9,1); # der_output_2 +$fderc = $fderb + random(1,9,1); # der_output_3 +$fderd = $fderc + random(1,9,1); # der_output_4 +} + +if($fderc == 0) +{ +$fderc = random(1,9,1); # der_output_3 +$fderd = $fderc + random(1,9,1); # der_output_4 +} + +if($fderd == 0) +{ +$fderd = random(1,9,1); # der_output_4 +} + +# version question to pick one of the four points for the given data +$ver=random(0,3,1); +if($ver == 0) +{ +$pt = $a; +$fpt = $fa; +$fderpt = $fdera; +} +elsif($ver == 1) +{ +$pt = $b; +$fpt = $fb; +$fderpt = $fderb; +} +elsif($ver == 2) +{ +$pt = $c; +$fpt = $fc; +$fderpt = $fderc; +} +else +{ +$pt = $d; +$fpt = $fd; +$fderpt = $fderd; +} + +$finv = $pt; +$finvder = Compute("1/$fderpt"); + +BEGIN_PGML +Let [`f`] be an invertible function and suppose that the following information is known about [`f`]. + +[# + [. [`f([$a]) = [$fa],`] .] + [. [`f([$b]) = [$fb],`] .] + [. [`f([$c]) = [$fc],`] .] + [. [`f([$d]) = [$fd],`] .]* + [. [`f'([$a]) = [$fdera],`] .] + [. [`f'([$b]) = [$fderb],`] .] + [. [`f'([$c]) = [$fderc],`] .] + [. [`f'([$d]) = [$fderd],`] .]* +#] + + +If possible, find the values of [`f^{-1}([$fpt])`] and [`(f^{-1})'([$fpt])`]. If it is not possible to find one of the values enter [|DNE|]*. + +[`f^{-1}([$fpt]) = \,`] [_]{$finv}{5} + +[`(f^{-1})'([$fpt]) = \,`][_]{$finvder}{5} + +END_PGML + +BEGIN_PGML_SOLUTION +Since [``f([$pt]) = [$fpt]``] it must be that [``f^{-1}([$fpt]) = [$pt].``] + +Now, we will use the formula [``(f^{-1})'(x) = \frac{1}{f'(f^{-1}(x))}.``] + +[``(f^{-1})'([$fpt]) = \frac{1}{f'(f^{-1}([$fpt]))} = \frac{1}{f'([$pt])} = \frac{1}{[$fderpt]}.``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-table-2-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-table-2-jms.pg new file mode 100644 index 0000000000..46393e63e2 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-10-1-Ap-C/6-10-1-Ap-C-inv-table-2-jms.pg @@ -0,0 +1,131 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives of inverse functions) +## Date(17 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +#6-10-1-Ap-C calculate values and derivatives of the inverse of a function (abstractly) + +$a = non_zero_random(-9,-1,1); # input_1 -9 < a < -1 +$b = $a + random(1,5,1); # input_2 -8 < b < 4 +$c = $b + random(1,5,1); # input_3 -7 < c < 9 +$d = $c + random(1,5,1); # output_4 -6 < d < 14 + +$fa = random(15,20,1); # output_1 15 < fa < 20 +$fb = $fa + random(1,5,1); # output_2 16 < fb < 25 +$fc = $fb + random(1,5,1); # output_3 26 < fc < 30 +$fd = $fc + random(1,5,1); # output_4 27 < fd < 35 + +$ffa = random(-20,-10,1); # output_1 -20 < f(fa) < -10 +$ffb = $ffa + random(1,5,1); # output_2 -15 < f(fb) < -5 + +$fdera = non_zero_random(-9,9,1); # der_output_1 +$fderb = $fdera + random(1,9,1); # der_output_2 +$fderc = $fderb + random(1,9,1); # der_output_3 +$fderd = $fderc + random(1,9,1); # der_output_4 + +$finvderfb = Compute("1/$fderb"); +$finvderfc = Compute("1/$fderc"); + +$finvderd = non_zero_random(-9,9,1); +$fderfc = Compute("1/$finvderd"); + +#values that are not needed for filling out the table +$fderfa = non_zero_random(-9,9,1); +$fderfb = non_zero_random(-9,9,1); +$finvderb = non_zero_random(-9,9,1); + +#avoid derivatives that are 0 +if($fderb == 0) +{ +$fderb = random(1,9,1); # der_output_2 +$fderc = $fderb + random(1,9,1); # der_output_3 +$fderd = $fderc + random(1,9,1); # der_output_4 +} + +if($fderc == 0) +{ +$fderc = random(1,9,1); # der_output_3 +$fderd = $fderc + random(1,9,1); # der_output_4 +} + +if($fderd == 0) +{ +$fderd = random(1,9,1); # der_output_4 +} + + +BEGIN_PGML +Let [`f`] be an invertible function. Fill in the following table of values where it is possible. If it is not possible to find one of the values enter [|DNE|]*. + +[# + [. [`x`] .] + [. [`f(x)`] .] + [. [`f^{-1}(x)`] .] + [. [`f'(x)`] .] + [. [`(f^{-1})'(x)`] .]* {headerrow => 1} + [. [`[$b]`] .] + [. [`[$fb]`] .] + [. [`[$a]`] .] + [. [_]{$fderb}{2} .] + [. [`[$finvderb]`] .]* + [. [`[$c]`] .] + [. [`[$fc]`] .] + [. [_]{'DNE'}{2} .] + [. [`[$fderc]`] .] + [. [`[$fdera]`] .]* + [. [`[$d]`] .] + [. [`[$fd]`] .] + [. [`[$fc]`] .] + [. [`[$fderd]`] .] + [. [`[$finvderd]`] .]* + [. [`[$fa]`] .] + [. [`[$ffa]`] .] + [. [_]{'DNE'}{2} .] + [. [`[$fderfa]`] .] + [. [_]{'DNE'}{2} .]* + [. [`[$fb]`] .] + [. [`[$ffb]`] .] + [. [_]{$b}{2} .] + [. [`[$fderfb]`] .] + [. [`\frac{1}{[$fderb]}`] .]* + [. [`[$fc]`] .] + [. [_]{$d}{2} .] + [. [_]{$c}{2} .] + [. [_]{$fderfc}{2} .] + [. [_]{$finvderfc}{2} .]* +#] + + +END_PGML + +BEGIN_PGML_SOLUTION +Recall that if [``f(a) = b``] it must be that [``f^{-1}(b) = a.``] + +You can also use the formula [``(f^{-1})'(x) = \frac{1}{f'(f^{-1}(x))}``] which also gives [``f'(x) = \frac{1}{(f^{-1})'(f(x))},``] if we interchange the roles of [`f`] and [`f^{-1}`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-10-2-Ap-C/6-10-2-Ap-C-inv-trig-1-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-10-2-Ap-C/6-10-2-Ap-C-inv-trig-1-jms.pg new file mode 100644 index 0000000000..842115c5a5 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-10-2-Ap-C/6-10-2-Ap-C-inv-trig-1-jms.pg @@ -0,0 +1,82 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives of inverse trigonometric functions) +## Date(17 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "specialTrigValues.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +#disable trig and inverse trig functions +Context()->functions->disable('All'); +Context()->functions->enable('sqrt'); + + + +#arcsin +$x = list_random(sqrt(3)/2, sqrt(2)/2, 1/2); + +if($x == sqrt(3)/2) +{$x_print = '\frac{\sqrt{3}}{2}'; +$ans1 = specialAngle(pi/3); +} +elsif($x == sqrt(2)/2) +{$x_print = '\frac{\sqrt{2}}{2}'; +$ans1 = specialAngle(pi/4);} +else +{$x_print = '\frac{1}{2}'; +$ans1 = specialAngle(pi/6);} + +$xx = $x**2; +$ans2 = Compute("1/sqrt(1-($xx))"); + +#arccos +$d = random(3,11,4); +$ans3 = specialAngle(pi); + +BEGIN_PGML +Find the exact value of the following inverse trigonometric functions and their derivatives. + +You will **not** be able to use trigonometric nor inverse trigonometric functions in your answers. + ++ [``\sin^{-1}\left([$x_print]\right) = \,``] [_]{$ans1}{5} + + ++ If [``f(x) = \sin^{-1}(x)``], then [``f'\left([$x_print]\right) = \, ``] [_]{$ans2}{10} + ++ [``\cos^{-1}\left(\sin\left(\frac{[$d]\pi}{2}\right)\right) = \,``][_]{$ans3}{5} + +END_PGML + +BEGIN_PGML_SOLUTION +Recall that the range of [``\sin^{-1}``] is [``\left[-\frac{\pi}{2}, \frac{\pi}{2}\right]``] and the range of [``\cos^{-1}``] is [``\left[0, {\pi}\right]``]. + ++ [``\sin\left([$ans1]\right) = [$x_print]``] so [``\sin^{-1}\left([$x_print]\right) = [$ans1]``]. + ++ [``\frac{d}{dx} \sin^{-1}(x) = \frac{1}{\sqrt{1-x^2}}``] so [``f'\left([$x_print]\right) = \frac{1}{\sqrt{1-([$x_print])^2}}``] + ++ [``\cos^{-1}\left(\sin\left(\frac{[$d]\pi}{2}\right)\right) = \cos^{-1}(-1)=\pi``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-10-2-Ap-C/6-10-2-Ap-C-inv-trig-2-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-10-2-Ap-C/6-10-2-Ap-C-inv-trig-2-jms.pg new file mode 100644 index 0000000000..39096abebd --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-10-2-Ap-C/6-10-2-Ap-C-inv-trig-2-jms.pg @@ -0,0 +1,71 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives of inverse trigonometric functions) +## Date(17 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "specialTrigValues.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +#disable trig and inverse trig functions +Context()->functions->disable('All'); +Context()->functions->enable('sqrt'); + + + +#arcsin +$x = list_random(sqrt(3)/2, sqrt(2)/2, 1/2); + +if($x == sqrt(3)/2) +{$x_print = '\frac{\sqrt{3}}{2}';} +elsif($x == sqrt(2)/2) +{$x_print = '\frac{\sqrt{2}}{2}';} +else +{$x_print = '\frac{1}{2}';} + +$xx = $x**2; +$ans1 = Compute("-1/sqrt(1-($xx))"); +$ans2 = Compute("1/(1+($xx))"); + + +BEGIN_PGML +Find the exact value of the following derivatives of inverse trigonometric functions. + +You will **not** be able to use trigonometric nor inverse trigonometric functions in your answers. + +If [``f(x) = \cos^{-1}(x)``], then [``f'\left([$x_print]\right) = \, ``] [_]{$ans1}{10} + + +If [``g(x) = \tan^{-1}(x)``], then [``g'\left([$x_print]\right) = \, ``] [_]{$ans2}{10} + +END_PGML + +BEGIN_PGML_SOLUTION + ++ [``\frac{d}{dx} \cos^{-1}(x) = \frac{-1}{\sqrt{1-x^2}}``] so [``f'\left([$x_print]\right) = \frac{-1}{\sqrt{1-([$x_print])^2}}``] + ++ [``\frac{d}{dx} \tan^{-1}(x) = \frac{1}{1+x^2}``] so [``g'\left([$x_print]\right) = \frac{1}{1+([$x_print])^2}``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-1-cmm.pg b/Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-1-cmm.pg new file mode 100644 index 0000000000..e31a51948d --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-1-cmm.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Definition of the derivative) +## Date(23 April 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 6, 1); + +$ans = Compute("($a*cos($a*sqrt(x)))/(2*sqrt(x))"); + + +BEGIN_PGML +Evaluate the following limit. + +[``\lim_{h\to 0}\frac{\sin{([$a]\sqrt{x+h})-\sin{([$a]\sqrt{x})}}}{h}=\,``][_]{$ans}{10} + +If the limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +BEGIN_PGML_SOLUTION +One way to approach this limit calculation is to note that the limit has the structure of the limit definition of the derivative. Specifically, + +[``f'(x)=\lim_{h\to 0} \frac{f(x+h)-f(x)}{h}\,``] + +Recognizing this structure, we can identify the function [``f(x)=\sin([$a]\sqrt{x})``] as the function of interest in this limit. Thus, we can compute + +[``\lim_{h\to 0}\frac{\sin{([$a]\sqrt{x+h})-\sin{([$a]\sqrt{x})}}}{h}\,``] + +by finding [``f'(x)``], where [``f(x)=\sin([$a]\sqrt{x})``]. + +Using derivative rules: + +[``f'(x)=(\sin([$a]\sqrt{x}))' = (\sin([$a]x^{\frac{1}{2}}))' = \cos([$a]x^{\frac{1}{2}})\frac{[$a]}{2}x^{-\frac{1}{2}} = \frac{[$a]\cos([$a]\sqrt{x})}{2\sqrt{x}}``] + + + + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-2-cmm.pg b/Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-2-cmm.pg new file mode 100644 index 0000000000..73a6f2fca1 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-2-cmm.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Definition of the derivative) +## Date(23 April 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# first limit +$a = random(2, 5, 1); +$amin = $a-1; + +$ans = Compute("($a*x**($a-1))*(e**(x**$a))"); + + +BEGIN_PGML +Evaluate the following limit. + +[``\lim_{h\to 0}\frac{e^{(x+h)^[$a]}-e^{x^[$a]}}{h}=\,``][_]{$ans}{10} + +If the limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +BEGIN_PGML_SOLUTION +One way to approach this limit calculation is to note that the limit has the structure of the limit definition of the derivative. Specifically, + +[``f'(x)=\lim_{h\to 0} \frac{f(x+h)-f(x)}{h}\,``] + +Recognizing this structure, we can identify the function [``f(x)=e^{x^[$a]}``] as the function of interest in this limit. Thus, we can compute + +[``\lim_{h\to 0}\frac{e^{(x+h)^[$a]}-e^{x^[$a]}}{h}\,``] + +by finding [``f'(x)``], where [``f(x)=e^{x^[$a]}``]. + +Using derivative rules: + +[``f'(x)=(e^{x^[$a]})' = e^{x^[$a]}(x^[$a])' = e^{x^[$a]}[$a]x^[$amin]``] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-3-cmm.pg b/Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-3-cmm.pg new file mode 100644 index 0000000000..1c5dfc0358 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-3-cmm.pg @@ -0,0 +1,63 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Definition of the derivative) +## Date(27 April 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# first limit +$a = random(2, 8, 1); + +$ans = Compute("$a/x"); + + +BEGIN_PGML +Evaluate the following limit. + +[``\lim_{h\to 0}\frac{[$a]\ln(x+h)-[$a]\ln(x)}{h}=\,``][_]{$ans}{10} + +If the limit does not exist and does not equal [`\pm\infty`], then enter [|DNE|]*. + +**Remark:** Note that saying that a limit is "equal to" [|Does not exist|]* or [|DNE|]* does not make sense and we would not normally do this when communicating mathematics; however, this is more convenient in WeBWork. +END_PGML + +BEGIN_PGML_SOLUTION +One way to approach this limit calculation is to note that the limit has the structure of the limit definition of the derivative. Specifically, + +[``f'(x)=\lim_{h\to 0} \frac{f(x+h)-f(x)}{h}\,``] + +Recognizing this structure, we can identify the function [``f(x)=[$a]\ln(x)``] as the function of interest in this limit. Thus, we can compute + +[``\lim_{h\to 0}\frac{[$a]\ln(x+h)-[$a]\ln(x)}{h}\,``] + +by finding [``f'(x)``], where [``f(x)=[$a]\ln(x)``]. + +Using derivative rules: + +[``f'(x)=([$a]\ln(x))' = [$a](\ln(x))' = [$a]\frac{1}{x} = \frac{[$a]}{x} ``] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-fcn-to-line-1-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-fcn-to-line-1-jms.pg new file mode 100644 index 0000000000..51f976f3e3 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-fcn-to-line-1-jms.pg @@ -0,0 +1,74 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Applications - tangent lines and slopes) +## Date(13 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# 6-3-1-Ap-C compute the equation of the tangent line to the graph of a function at a given point + +$a = random(-5,5,1); # point +$pow = random(3,4,1); #power +$powm1 = $pow-1; +$c = non_zero_random(-9,9,1); +$d = non_zero_random(-9,9,1); +$f = Formula("x^($pow)+$c*x+$d")->reduce(); +$fa = Compute("($a)^($pow)+$c*($a)+$d"); +$fder = Formula("($pow)*x^($powm1) + $c")->reduce(); +$fdera = Compute("($pow)*($a)^($powm1) + $c"); +$L = Formula("$fdera*(x-$a) + $fa"); + +BEGIN_PGML +Let [`f(x) = [$f]`]. + +a) Find the derivative of [`f`]. + + [`f'(x) = \,`][_]{$fder}{20} + +b) Find the **slope** [`m`] of the tangent line to [`y=f(x)`] at [`x=[$a]`]. + + [`m = \,`][_]{$fdera}{5} + +c) Find the **equation** of the tangent line to [`y=f(x)`] at [`x=[$a]`]. + + [`y = \,`][_]{$L}{20} + +d) Find the **point** on the graph of [`y=f(x)`] at which the line you found is tangent. + + [`(x,y) = \left(\right.`] [_]{$a}{2}, [_]{$fa}{2}[`\left.\right)`]. +END_PGML + +BEGIN_PGML_SOLUTION +a) Using the power rule [`f'(x) = [$fder].`] + +b) The slope of the tangent line to [`y=f(x)`] at [`x=[$a]`] is [`m = f'([$a]) = [$fdera].`] + +c) The equation of the tangent line to [`y=f(x)`] at [`x=[$a]`] is [`y = f'([$a])(x-[$a])+f([$a]) = [$L].`] + +d) The point on the graph [`y=f(x)`] at which the above line is tangent is [`([$a],f([$a])) = ([$a],[$fa])`]. + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-fcn-to-line-2-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-fcn-to-line-2-jms.pg new file mode 100644 index 0000000000..99d2f0ce33 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-fcn-to-line-2-jms.pg @@ -0,0 +1,69 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Applications - tangent lines and slopes) +## Date(14 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# 6-3-1-Ap-C compute the equation of the tangent line to the graph of a function at a given point + +$a = random(-5,5,1); # point +$c = non_zero_random(-9,9,1); +$d = non_zero_random(-9,9,1); +$f = Formula("$c*sin(pi*x) + $d*cos(pi*x)")->reduce(); +$fa = Compute("$c*sin(pi*$a) + $d*cos(pi*$a)"); +$fder = Formula("pi*$c*cos(pi*x) - pi*$d*sin(pi*x)")->reduce(); +$fdera = Compute("pi*$c*cos(pi*$a) - pi*$d*sin(pi*$a)"); +$fdera_overpi = Compute("$c*cos(pi*$a) - $d*sin(pi*$a)"); +$m = Compute("pi*$fdera_overpi"); +$L = Formula("$m*(x-$a) + $fa"); + +BEGIN_PGML +Let [`f(x) = [$f]`]. Then [`f'(x) = [$fder]`]. + +a) Find the **point** on the graph of [`y=f(x)`] corresponding to [`x=[$a]`]. + + [`(x,y) = \left(\right.`] [_]{$a}{2}, [_]{$fa}{2}[`\left.\right)`]. + +b) Find the **slope** [`m`] of the tangent line to [`y=f(x)`] at [`x=[$a]`]. + + [`m = \,`][_]{$fdera}{5} + +c) Find the **equation** of the tangent line to [`y=f(x)`] at [`x=[$a]`]. + + [`y = \,`][_]{$L}{20} + +END_PGML + +BEGIN_PGML_SOLUTION +a) The point on the graph [`y=f(x)`] corresponding to [`x=[$a]`] is [`([$a],f([$a])) = ([$a],[$fa])`]. + +b) The slope of the tangent line to [`y=f(x)`] at [`x=[$a]`] is [`m = f'([$a]) = \pi([$c])\cos([$a]\pi) - \pi([$d])\sin([$a]\pi).`] + +c) The equation of the tangent line to [`y=f(x)`] at [`x=[$a]`] is [`y = f'([$a])(x-[$a])+f([$a]) = [$fdera_overpi]\pi(x-[$a]) + ([$fa]).`] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-slope-1-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-slope-1-jms.pg new file mode 100644 index 0000000000..8147be9270 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-3-1-Ap-C/6-3-1-Ap-C-slope-1-jms.pg @@ -0,0 +1,69 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Applications - tangent lines and slopes) +## Date(13 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# 6-3-1-Ap-C compute the equation of the tangent line to the graph of a function at a given point + +$a = random(-5,5,1); # point_1 +$b = $a + random(1,5,1); #point_2 +$pow = random(2,3,1); #power +$powm1 = $pow-1; +$c = non_zero_random(-9,9,1); +$f = Formula("x^($pow)+$c*x")->reduce(); +$fa = Compute("($a)^($pow)+$c*($a)"); +$fb = Compute("($b)^($pow)+$c*($b)"); +$fder = Formula("($pow)*x^($powm1) + $c")->reduce(); +$fdera = Compute("($pow)*($a)^($powm1) + $c"); +$m_sec = Compute("($fb-$fa)/($b-$a)"); +$secant = Formula("$m_sec*(x-$a) + $fa"); +$tangent = Formula("$fdera*(x-$a) + $fa"); + +BEGIN_PGML +Let [`f(x) = [$f]`]. + ++ The slope of the **secant line** joining the points on the graph of [`y=f(x)`] corresponding to [`x=[$a]`] and [`x = [$b]`] is equal to [_]{$m_sec}{10}. + ++ The equation of the **secant line** joining the points on the graph of [`y=f(x)`] corresponding to [`x=[$a]`] and [`x = [$b]`] is [`y = \, `][_]{$secant}{20}. + ++ The slope of the **tangent line** to the graph of [`y=f(x)`] at [`x=[$a]`] is equal to [_]{$fdera}{10}. + ++ The equation of the **tangent line** to the graph of [`y=f(x)`] at [`x=[$a]`] is equal to [`y = \,`][_]{$tangent}{20}. + +END_PGML + +BEGIN_PGML_SOLUTION ++ The slope of the secant line joining [`([$a],f([$a])) = ([$a],[$fa])`] and [`([$b],f([$b])) = ([$b],[$fb])`] is equal to [``\frac{[$fb] - ([$fa])}{[$b]-([$a])} = [$m_sec].``] + ++ The equation of the secant line joining [`([$a],f([$a])) = ([$a],[$fa])`] and [`([$b],f([$b])) = ([$b],[$fb])`] is equal to [`y = [$m_sec](x-[$a]) + [$fa]`] or [`y = [$m_sec](x-[$b])+[$fb]`]. + ++ The slope of the tangent line to the graph of [`y=f(x)`] at [`x=[$a]`] is equal to [`f'([$a]) = [$fdera].`] + ++ The equation of the tangent line to the graph of [`y=f(x)`] at [`x=[$a]`] is equal to [`y = [$tangent].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-9-1-U-C/6-9-1-U-C-line-to-fcn-1-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-9-1-U-C/6-9-1-U-C-line-to-fcn-1-jms.pg new file mode 100644 index 0000000000..217e5e8f0a --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-9-1-U-C/6-9-1-U-C-line-to-fcn-1-jms.pg @@ -0,0 +1,55 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Applications - tangent lines and slopes) +## Date(13 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-9,9,1); #point +$m = non_zero_random(-20,20,1); #slope +$b = non_zero_random(-20,20,1); #int +$L = Formula("$m*x+$b")->reduce(); +$La = Compute("$m*$a+$b"); + +BEGIN_PGML +Let [`f`] be a differentiable function of one variable [`x`]. + +Suppose that the equation of the tangent line to [`y=f(x)`] at [`x=[$a]`] has equation [`y = [$L].`] + +Then + ++ [`f([$a]) = \,`][_]{$La}{5} + ++ [`f'([$a]) = \,`][_]{$m}{5} + +END_PGML + +BEGIN_PGML_SOLUTION ++ Since the line [`L(x) = [$L]`] is tangent to [`y=f(x)`] at [`x=[$a]`], the point [`([$a],L([$a]))`] on the line must also be on the graph of the function [`y=f(x)`]. Therefore, [`f([$a]) = L([$a]) = [$La].`] + ++ The derivative of a function at a point is the slope of the tangent line, so [`f'([$a]) = [$m]`], which is the slope of the line [`y = [$L].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-9-1-U-C/6-9-1-U-C-line-to-fcn-2-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-9-1-U-C/6-9-1-U-C-line-to-fcn-2-jms.pg new file mode 100644 index 0000000000..56f63aea0c --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-9-1-U-C/6-9-1-U-C-line-to-fcn-2-jms.pg @@ -0,0 +1,56 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Applications - tangent lines and slopes) +## Date(14 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-9,9,1); #point +$m = non_zero_random(-20,20,1); #slope integer +$slope = Compute("$m*pi"); +$b = non_zero_random(-20,20,1); #int +$L = Formula("$m*pi*x+$b")->reduce(); +$La = Compute("$m*pi*$a+$b"); + +BEGIN_PGML +Let [`g`] be a differentiable function of one variable [`x`]. + +Suppose that the equation of the tangent line to [`y=g(x)`] at [`x=[$a]`] has equation [`y = [$L].`] + +Then + ++ [`g([$a]) = \,`][_]{$La}{5} + ++ [`g'([$a]) = \,`][_]{$slope}{5} + +END_PGML + +BEGIN_PGML_SOLUTION ++ Since the line [`L(x) = [$L]`] is tangent to [`y=g(x)`] at [`x=[$a]`], the point [`([$a],L([$a]))`] on the line must also be on the graph of the function [`y=g(x).`] Therefore, [`g([$a]) = L([$a]) = [$m]\pi([$a])+[$b].`] + ++ The derivative of a function at a point is the slope of the tangent line, so [`g'([$a]) = [$m]\pi`], which is the slope of the line [`y = [$L].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-dne-graph-1-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-dne-graph-1-jms.pg new file mode 100644 index 0000000000..620c893c85 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-dne-graph-1-jms.pg @@ -0,0 +1,161 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Applications - tangent lines and slopes) +## Date(14 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#points and function values +$b = random(-3,0,1); +$c = $b + random(1,3,1); +$fm5 = non_zero_random(-5,5,1); #f at -5 +$fb = random(-4,4,1); #f at b +$fc = random(-4,4,1); #f at c +$f5 = non_zero_random(-5,5,1); #f at 5 +#slopes and lines +$m1 = ($fb-$fm5)/($b+5); +$m2 = ($fc - $fb)/($c-$b); +$m3 = ($f5 - $fc)/(5-$c); +$L1 = Formula("$m1*(x-$b)+$fb")->reduce(); +$L2 = Formula("$m2*(x-$b)+$fb")->reduce(); +$L3 = Formula("$m3*(x-$c)+$fc")->reduce(); +#additional points to plot +# on L1 +$fm4 = $m1*(-4-$b)+$fb; +$bm2 = $b-2; +$fbm2 = $m1*(-2)+$fb; +$bm1 = $b-1; +$fbm1 = $m1*(-1)+$fb; +# on L2 +$bp1 = $b+1; +$fbp1 = $m2*(1)+$fb; +$cm1 = $c-1; +$fcm1 = $m2*(-1)+$fc; +# on L3 +$cp1 = $c+1; +$fcp1 = $m3*(1)+$fc; +$cp2 = $c+2; +$fcp2 = $m3*(2)+$fc; +$f4 = $m3*(4-$c)+$fc; + +if($m1 == $m2 && $m2 == $m3) +{$ans = 'None';} +elsif($m1 == $m2) +{$ans = $c;} +elsif($m2 == $m3) +{$ans = $b;} +else +{$ans = List($b,$c);} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-5) -- (0,5) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-5) grid (5,5); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[very thick, red] (-5,$fm5) -- ($b,$fb); +\draw[very thick, red] ($b,$fb) -- ($c,$fc); +\draw[very thick, red] ($c,$fc) -- (5,$f5); +\filldraw[red, very thick] (-5,$fm5) circle (2.5pt); +\filldraw[red, very thick] (-4,$fm4) circle (2.5pt); +\filldraw[red, very thick] ($bm2,$fbm2) circle (2.5pt); +\filldraw[red, very thick] ($bm1,$fbm1) circle (2.5pt); +\filldraw[red, very thick] ($b,$fb) circle (2.5pt); +\filldraw[red, very thick] ($bp1,$fbp1) circle (2.5pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5pt); +\filldraw[red, very thick] ($cp1,$fcp1) circle (2.5pt); +\filldraw[red, very thick] ($cp2,$fcp2) circle (2.5pt); +\filldraw[red, very thick] (4,$f4) circle (2.5pt); +\filldraw[red, very thick] (5,$f5) circle (2.5pt) node [right]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the piecewise defined function [`y=f(x)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +At which value(s) of [`x`] in the open interval [`(-5,5)`] does the derivative [`y=f'(x)`] **not exist**? + +The derivative [`f'(x)`] does not exist for [`x=\,`][_]{$ans}{10} + +Enter the values you find as a list separated by commas, if there are no such values enter [|None|]*. +END_PGML + +BEGIN_PGML_HINT +The derivative of [`f`] at [`x=a`] does not exist if the limit [``f'(a) = \lim_{x\to a}\frac{f(x) - f(a)}{x-a}``] does not exist. Try considering one-sided limits and thinking about the slopes of each line segment. + +Depending on the graph that you have, you will need to **very carefully** consider the slopes of the line segments that you see, so look for integer points that you can analyze! + +Remember [`-5`] and [`5`] are not valid answers because they are not the in open interval [`(-5,5)`]. +END_PGML_HINT + +if($m1 == $m2 && $m2 == $m3) +{ +BEGIN_PGML_SOLUTION +We will consider the three line segments joining the points [`(-5,[$fm5])`] to [`([$b],[$fb])`], [`([$b],[$fb])`] to [`([$c],[$fc])`], and [`([$c],[$fc])`] to [`(5,[$f5])`]. + ++ The segment joining [`(-5,[$fm5])`] to [`([$b],[$fb])`] has slope [``\frac{[$fb]-[$fm5]}{[$b]+5} = [$m1]``] + ++ The segment joining [`([$b],[$fb])`] to [`([$c],[$fc])`] has slope [``\frac{[$fc]-[$fb]}{[$c]-[$b]} = [$m2]``] + ++ The segment joining [`([$c],[$fc])`] to [`(5,[$f5])`] has slope [``\frac{[$f5]-[$fc]}{5-[$c]} = [$m3]``] + +Therefore, by considering one-sided limits, we can conclude that the derivative of [`f`] exists at all points in the interval [`(-5,5)`]. +END_PGML_SOLUTION +} +elsif($m1 == $m2) +{ +BEGIN_PGML_SOLUTION +We will consider the three line segments joining the points [`(-5,[$fm5])`] to [`([$b],[$fb])`], [`([$b],[$fb])`] to [`([$c],[$fc])`], and [`([$c],[$fc])`] to [`(5,[$f5])`]. + ++ The segment joining [`(-5,[$fm5])`] to [`([$b],[$fb])`] has slope [``\frac{[$fb]-[$fm5]}{[$b]+5} = [$m1]``] + ++ The segment joining [`([$b],[$fb])`] to [`([$c],[$fc])`] has slope [``\frac{[$fc]-[$fb]}{[$c][$b]} = [$m2]``] + ++ The segment joining [`([$c],[$fc])`] to [`(5,[$f5])`] has slope [``\frac{[$f5]-[$fc]}{5-[$c]} = [$m3]``] + +Therefore, by considering one-sided limits, we can conclude that the derivative of [`f`] does not exist at [`x=[$c]`], but [`f'(x)`] exists at all other points in the interval [`(-5,5)`]. +END_PGML_SOLUTION +} +elsif($m2 == $m3) +{ +BEGIN_PGML_SOLUTION +We will consider the three line segments joining the points [`(-5,[$fm5])`] to [`([$b],[$fb])`], [`([$b],[$fb])`] to [`([$c],[$fc])`], and [`([$c],[$fc])`] to [`(5,[$f5])`]. + ++ The segment joining [`(-5,[$fm5])`] to [`([$b],[$fb])`] has slope [``\frac{[$fb]-[$fm5]}{[$b]+5} = [$m1]``] + ++ The segment joining [`([$b],[$fb])`] to [`([$c],[$fc])`] has slope [``\frac{[$fc]-[$fb]}{[$c][$b]} = [$m2]``] + ++ The segment joining [`([$c],[$fc])`] to [`(5,[$f5])`] has slope [``\frac{[$f5]-[$fc]}{5-[$c]} = [$m3]``] + +Therefore, by considering one-sided limits, we can conclude that the derivative of [`f`] does not exist at [`x=[$b]`], but [`f'(x)`] exists at all other points in the interval [`(-5,5)`]. +END_PGML_SOLUTION +} +else +{ +BEGIN_PGML_SOLUTION +We will consider the three line segments joining the points [`(-5,[$fm5])`] to [`([$b],[$fb])`], [`([$b],[$fb])`] to [`([$c],[$fc])`], and [`([$c],[$fc])`] to [`(5,[$f5])`]. + ++ The segment joining [`(-5,[$fm5])`] to [`([$b],[$fb])`] has slope [``\frac{[$fb]-[$fm5]}{[$b]+5} = [$m1]``] + ++ The segment joining [`([$b],[$fb])`] to [`([$c],[$fc])`] has slope [``\frac{[$fc]-[$fb]}{[$c][$b]} = [$m2]``] + ++ The segment joining [`([$c],[$fc])`] to [`(5,[$f5])`] has slope [``\frac{[$f5]-[$fc]}{5-[$c]} = [$m3]``] + +Therefore, by considering one-sided limits, we can conclude that the derivative of [`f`] does not exist at [`x=[$b]`] and [`x=[$c]`], but [`f'(x)`] exists at all other points in the interval [`(-5,5)`]. +END_PGML_SOLUTION +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-from-graph-1-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-from-graph-1-jms.pg new file mode 100644 index 0000000000..f9c190deec --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-from-graph-1-jms.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Applications - tangent lines and slopes) +## Date(14 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +$fm5 = non_zero_random(-5,5,1); #f at -5 +$fm2 = random(-4,4,1); #f at -2 +$f2 = random(-4,4,1); #f at 2 +$f5 = non_zero_random(-5,5,1); #f at 5 + +$pt = random(-3,3,2); +if($pt == -3) +{$m = Compute("($fm2-$fm5)/(-2-(-5))"); +$L = Formula("$m(x-(-2))+$fm2")->reduce();} +elsif($pt == -1 || $pt == 1) +{$m = Compute("($f2-$fm2)/(2-(-2))"); +$L = Formula("$m(x-2)+$f2")->reduce();} +elsif($pt == 3) +{$m = Compute("($f5 - $f2)/(5-2)"); +$L = Formula("$m(x-2)+$f2")->reduce();} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-5) -- (0,5) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-5) grid (5,5); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[very thick,rounded corners=8pt, red] (-5,$fm5) -- (-2,$fm2); +\draw[very thick,rounded corners=8pt, red] (-2,$fm2) -- (2,$f2); +\draw[very thick,rounded corners=8pt, red] (2,$f2) -- (5,$f5); +\filldraw[red, very thick] (-2,$fm2) circle (2.5pt); +\filldraw[red, very thick] (2,$f2) circle (2.5pt); +\draw[red] (2,4.5) node [above]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the piecewise defined function [`y=f(x)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +The slope of the tangent line to [`y=f(x)`] at [`x=[$pt]`] is equal to [_]{$m}{5}. + +The equation of the tangent line to [`y=f(x)`] at [`x=[$pt]`] is [`y = \,`][_]{$L}{10}. +END_PGML + +BEGIN_PGML_SOLUTION +Each of the pieces of the function [`f`] is a line segment, so we need to find the slope and the equation of the line segment on which the point [`([$pt],f([$pt]))`] lies. To find the slope [`m = [$m]`] we can compute the "rise/run" using the endpoints of the corresponding segment, and then to find the equation of the line we can use the point slope formula for the tangent line: [`y = [$m](x-a) + f(a)`], where we can take [`a = [$pt]`] or either of the endpoints of the corresponding segment if the exact value of [`f([$pt])`] is not easily read from the graph. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-zero-graph-1-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-zero-graph-1-jms.pg new file mode 100644 index 0000000000..01d95a54e6 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-zero-graph-1-jms.pg @@ -0,0 +1,59 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Applications - tangent lines and slopes) +## Date(14 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-3,-2,1); +$b = $a + random(3,4,1); +$ab = $a*$b; +$k = random(-1,1,2); +if($a == -3 && $k==1) +{$c = random(-6,-4,1);} +elsif($a == -3 && $k== -1) +{$c = random(4,6,1);} +else +{$c = random(1,2,1);} +$ans = List($a,$b); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-7) grid (5,7); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-4.5}:{4.5}] (\x,{$k*((\x*\x*\x)/18 - ($a/12)*(\x*\x) - ($b/12)*(\x*\x) + ($ab/6)*\x)+$c}); +\draw[red] (2,{$k*((8)/18 - ($a/12)*(4) - ($b/12)*(4) + ($ab/6)*2)+$c}) node [above right]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the function [`y=f(x)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +At which value(s) of [`x`] in the open interval [`(-5,5)`] is the derivative of [`f`] equal to [`0`]? + ++ [`f'(x)=0`] for [`x=\,`][_]{$ans}{10} + +Enter the value(s) you find as a list separated by commas, if there are no such values enter [|None|]*. +END_PGML + +BEGIN_PGML_SOLUTION +[`f'(x)=0`] where the tangent line to graph of [`y=f(x)`] is horizontal (that is, has slope equal to [`0`]). For the graph shown above this occurs for [`x=[$a]`] and [`x=[$b]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-zero-graph-2-jms.pg b/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-zero-graph-2-jms.pg new file mode 100644 index 0000000000..bd67cd91e1 --- /dev/null +++ b/Contrib/UCalgary/249-6-0-0-C/6-9-2-U-C/6-9-2-U-C-der-zero-graph-2-jms.pg @@ -0,0 +1,79 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Limits and continuity) +## DBsection(Applications - tangent lines and slopes) +## Date(14 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-2,2,1); +$k = random(-1,1,2); +# coefficients to ensure the graph appears reasonable +if(abs($a)==2) +{ +$d = 30; +if ($k == 1 && $a == 2) +{$c = random(2,5,1);} +elsif ($k == -1 && $a == -2) +{$c = random(2,5,1);} +else +{$c = random(-5,-2,1);} +} +elsif(abs($a)==1) +{ +$d = 20; +if ($a==1 && $k == -1) +{$c = random(-3,-2,1);} +elsif ($a==-1 && $k == -1) +{$c = random(2,3,1);} +elsif ($a==-1 && $k == 1) +{$c = random(-3,-2,1);} +else +{$c = random(2,3,1);} +} +else +{ +$d = 20; +$c = non_zero_random(-3,3,2)/2; +} +$ans = $a; + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-7) grid (5,7); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick] plot[domain={-4.5}:{4.5}] (\x,{$k*pow(\x-$a,3)/$d + $c}); +\draw[red] (4.5,{$k*pow(4.5-$a,3)/$d + $c}) node [above right]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the function [`y=f(x)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +At which value(s) of [`x`] in the open interval [`(-5,5)`] is the derivative of [`f`] equal to [`0`]? + ++ [`f'(x)=0`] for [`x=\,`][_]{$ans}{10} + +Enter the value(s) you find as a list separated by commas, if there are no such values enter [|None|]*. +END_PGML + +BEGIN_PGML_SOLUTION +[`f'(x)=0`] where the tangent line to graph of [`y=f(x)`] is horizontal (that is, has slope equal to [`0`]). For the graph shown above this occurs for [`x=[$a]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-mark1.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-mark1.pg new file mode 100644 index 0000000000..4337c78396 --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-mark1.pg @@ -0,0 +1,52 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives of polynomials and power functions) +## Institution(University of Calgary) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1)*random(-1,1,2); +$b = random(3, 8, 1); +$c = non_zero_random(-9,9,1); +$ab = $a*$b; +$bm1 = $b-1; + +$f = Formula("$a*x^($b)+$c")->reduce(); + +$ans = Compute("$ab*x^($bm1)"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f]``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +[``f'(x)=[$a]\left([$b]x^{[$bm1]}\right)+0=[$ans]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-prod-mlb.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-prod-mlb.pg new file mode 100644 index 0000000000..b734c74d9f --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-prod-mlb.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Product rule (with trigonometric functions)) +## Institution(University of Calgary) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$af = random(2, 9, 1); +$bf = random(3, 8, 1); +$cf = non_zero_random(-9,9,1); +$abf = $af*$bf; +$bfm1 = $bf-1; + +$ag = random(2, 9, 1); +$bg = random(3, 8, 1); +$cg = non_zero_random(-9,9,1); +$abg = $ag*$bg; +$bgm1 = $bg-1; + +$f = Formula("$af*x^($bf)+$cf*e^x")->reduce(); +$fp = Formula("$af*$bf*x^($bfm1)+$cf*e^x")->reduce(); + +$g = Formula("$cg*sin(x)+$ag*x^($bg)")->reduce(); +$gp = Formula("$cg*cos(x)+$ag*$bg*x^($bgm1)")->reduce(); + +$ans = Formula("[$f]*([$gp])+[$fp]*([$g])")->reduce(); + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f*$g]``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +[``\begin{aligned}f'(x)&=([$f])'*[$g] + ([$f])*([$g])' \\ +&=([$a]\left([$b]x^{[$bm1]}\right)+0)*[$g] +([$f])*[$gp]\\ +&=[$ans] \end{aligned}``] +END_PGML_SOLUTION + +ENDDOCUMENT(); \ No newline at end of file diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-simple-prod1-mlb.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-simple-prod1-mlb.pg new file mode 100644 index 0000000000..ac99471c3e --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-simple-prod1-mlb.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Product rule (without trigonometric functions)) +## Institution(University of Calgary) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1); +$b = random(3, 8, 1); +$c = non_zero_random(-9,9,1); +$ab = $a*$b; +$bm1 = $b-1; + +$d = random(2, 9, 1); +$e = random(3, 7, 1); +$h = non_zero_random(-9,9,1); +$i = $e+random(1, 3, 1); +$de = $d*$e; +$hi = $h*$i; +$em1 = $e-1; +$im1 = $i-1; + +$f = Formula("$a*x^($b)+$c")->reduce(); +$fp = Formula("$ab*x^($bm1)")->reduce(); +$g = Formula("$d*x^($e)+$h*x^($i)")->reduce(); +$gp = Formula("$de*x^($em1)+$hi*x^($im1)")->reduce(); + +$ans = Compute("[$fp]*[$g]+[$f]*[$gp]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f*$g]``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +[``\begin{aligned}f'(x) &=([$f])'*([$g]) + ([$f])*([$g])' \\ +&=[$ans]\end{aligned}``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-simple-prod2-mlb.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-simple-prod2-mlb.pg new file mode 100644 index 0000000000..05d54a4f4f --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-1-Ap-C/7-2-1-Ap-C-simple-prod2-mlb.pg @@ -0,0 +1,56 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Product rule (with trigonometric functions)) +## Institution(University of Calgary) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1); +$b = random(3, 8, 1); +$c = non_zero_random(-9,9,1); +$ab = $a*$b; +$bm1 = $b-1; + +$f = Formula("$a*x^($b)+$c")->reduce(); +$g = Formula("cos(x)")->reduce(); +$gp = Formula("-sin(x)")->reduce(); + +$ans = Compute("$ab*x^($bm1)*$g-($f)*sin(x)"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f*$g]``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +[``\begin{aligned}f'(x) &=([$f])'*[$g] + ([$f])*([$g])' \\ &=([$a]\left([$b]x^{[$bm1]}\right)+0)*[$g] +([$f])*[$gp] \\ +&=[$ans] +\end{aligned}``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-quo2-mlb.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-quo2-mlb.pg new file mode 100644 index 0000000000..47af430b4e --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-quo2-mlb.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + +## KEYWORDS() + +## DBsubject('') +## DBchapter('') +## DBsection('') +## Date('') +## Author('') +## Institution('University of Calgary') + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$af = random(2, 9, 1); +$bf = random(3, 8, 1); +$cf = non_zero_random(-9,9,1); +$abf = $af*$bf; +$bfm1 = $bf-1; + +$ag = random(2, 9, 1); +$bg = random(3, 8, 1); +$cg = non_zero_random(-9,9,1); +$abg = $ag*$bg; +$bgm1 = $bg-1; + +$f = Formula("$af*x^($bf)+$cf*e^x")->reduce(); +$fp = Formula("$af*$bf*x^($bfm1)+$cf*e^x")->reduce(); + +$g = Formula("$cg*sin(x)+$ag*x^($bg)")->reduce(); +$gp = Formula("$cg*cos(x)+$ag*$bg*x^($bgm1)")->reduce(); + +$ans = Formula("([$fp]*([$g])-[$f]*([$gp]))/([$g])^2")->reduce(); + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f/$g]``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +[``f'(x)=(( [$f])'*[$g]- ([$f])*([$g])')/([$g])^2 =(([$fp])*[$g] -([$f])*[$gp])/([$g])^2``] [``=[$ans]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); \ No newline at end of file diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo-mlb.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo-mlb.pg new file mode 100644 index 0000000000..8d2fbb7ce3 --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo-mlb.pg @@ -0,0 +1,57 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + +## KEYWORDS() + +## DBsubject('') +## DBchapter('') +## DBsection('') +## Date('') +## Author('') +## Institution('University of Calgary') + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1); +$b = random(3, 8, 1); +$c = non_zero_random(-9,9,1); +$ab = $a*$b; +$bm1 = $b-1; + +$f = Formula("$a*x^($b)+$c")->reduce(); +$fp = Formula("$ab*x^($bm1)")->reduce(); +$g = Formula("cos(x)")->reduce(); +$gp = Formula("-sin(x)")->reduce(); + +$ans = Compute("([$fp]*[$g]-[$f]*[$gp])/(([$g])^2)"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f/$g]``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +[``f'(x)=\frac{(([$f])'*[$g] - ([$f])*([$g])')}{([$g])^2} =[$ans]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); \ No newline at end of file diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo1-mlb.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo1-mlb.pg new file mode 100644 index 0000000000..cbaa7ac6ae --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo1-mlb.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Quotient rule (without trigonometric functions)) +## Institution(University of Calgary) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1); +$b = random(3, 8, 1); +$c = non_zero_random(-9,9,1); +$ab = $a*$b; +$bm1 = $b-1; + +$d = random(2, 9, 1); +$e = random(3, 7, 1); +$h = non_zero_random(-9,9,1); +$i = $e+random(1, 3, 1); +$de = $d*$e; +$hi = $h*$i; +$em1 = $e-1; +$im1 = $i-1; + +$f = Formula("$a*x^($b)+$c")->reduce(); +$fp = Formula("$ab*x^($bm1)")->reduce(); +$g = Formula("$d*x^($e)+$h*x^($i)")->reduce(); +$gp = Formula("$de*x^($em1)+$hi*x^($im1)")->reduce(); + +$ans = Compute("([$fp]*[$g]-[$f]*[$gp])/(([$g])^2)"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f/$g]``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +[``f'(x)=\frac{(([$f])'*([$g]) - ([$f])*([$g])')}{([$g])^2} =[$ans]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); \ No newline at end of file diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo2-mlb.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo2-mlb.pg new file mode 100644 index 0000000000..dc7e7b6bf3 --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-2-Ap-C/7-2-2-Ap-C-simple-quo2-mlb.pg @@ -0,0 +1,55 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Quotient rule (with trigonometric functions)) +## Institution(University of Calgary) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1); +$b = random(3, 8, 1); +$c = non_zero_random(-9,9,1); +$ab = $a*$b; +$bm1 = $b-1; + +$f = Formula("$a*x^($b)+$c")->reduce(); +$fp = Formula("$ab*x^($bm1)")->reduce(); +$g = Formula("cos(x)")->reduce(); +$gp = Formula("-sin(x)")->reduce(); + +$ans = Compute("([$fp]*[$g]-[$f]*[$gp])/(([$g])^2)"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$f/$g]``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +[``f'(x)=\frac{(([$f])'*[$g] - ([$f])*([$g])')}{([$g])^2} =[$ans]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); \ No newline at end of file diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-3-Ap-C/7-2-3-Ap-C-simple-chain1-mlb.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-3-Ap-C/7-2-3-Ap-C-simple-chain1-mlb.pg new file mode 100644 index 0000000000..27674edb7a --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-3-Ap-C/7-2-3-Ap-C-simple-chain1-mlb.pg @@ -0,0 +1,59 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Chain rule (without trigonometric functions)) +## Institution(University of Calgary) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1); +$b = random(3, 8, 1); +$c = non_zero_random(-9,9,1); +$d = $b+random(1,3,1); +$cd = $c*$d; +$ab = $a*$b; +$bm1 = $b-1; +$dm1 = $d-1; +$e = random(2,9,1); +$em1 = $e-1; + +$f = Formula("$a*x^($b)+$c*x^($d)")->reduce(); +$fp = Formula("$ab*x^($bm1)+$cd*x^($dm1)")->reduce(); + + +$ans = Compute("$e*(([$f])^$em1) * [$fp]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=([$f])^[$e]``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +[``f'(x)=[$e]*([$f])^{[$e]-1} *([$f])' =[$ans]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-3-Ap-C/7-2-3-Ap-C-simple-chain2-mlb.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-3-Ap-C/7-2-3-Ap-C-simple-chain2-mlb.pg new file mode 100644 index 0000000000..27674edb7a --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-3-Ap-C/7-2-3-Ap-C-simple-chain2-mlb.pg @@ -0,0 +1,59 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Chain rule (without trigonometric functions)) +## Institution(University of Calgary) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1); +$b = random(3, 8, 1); +$c = non_zero_random(-9,9,1); +$d = $b+random(1,3,1); +$cd = $c*$d; +$ab = $a*$b; +$bm1 = $b-1; +$dm1 = $d-1; +$e = random(2,9,1); +$em1 = $e-1; + +$f = Formula("$a*x^($b)+$c*x^($d)")->reduce(); +$fp = Formula("$ab*x^($bm1)+$cd*x^($dm1)")->reduce(); + + +$ans = Compute("$e*(([$f])^$em1) * [$fp]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=([$f])^[$e]``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +[``f'(x)=[$e]*([$f])^{[$e]-1} *([$f])' =[$ans]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-1-cmm.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-1-cmm.pg new file mode 100644 index 0000000000..9c8167728b --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-1-cmm.pg @@ -0,0 +1,73 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Product rule (with trigonometric functions)) +## Date(30 April 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$A = random(2, 6, 1); +$B = random(2, 6, 1); +$C = random(2, 5, 1); +$D = $C+2; +$F = random(2, 6, 1); + +$Cplus = $C+1; +$Dplus = $D+1; +$AB = $A*$B; +$ABC = $A*$B*$Cplus; +$AD = $A*$Dplus; + + +$firstsum = Formula("((($A)*($B)*x^($Cplus))-(($A)*x^($Dplus)))*((-1)*($F)*sin(x))")->reduce(); + +$secondsum = Formula("((($Cplus)*($A)*($B)*x^($C))-(($Dplus)*($A)*x^($D)))*(($F)*cos(x))")->reduce(); + + +$ans = Compute("[$firstsum] + [$secondsum]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$A]x([$B]x^[$C]-x^[$D])([$F]\cos(x))``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + + +BEGIN_PGML_SOLUTION +This is a product of three functions. To make computing the derivative easier, multiply the [``[$A]x``] through the second function: + +[``f(x)=[$A]x([$B]x^[$C]-x^[$D])([$F]\cos(x)) = ([$AB]x^[$Cplus]-[$A]x^[$Dplus])([$F]\cos(x))``] + +Now we can more easily use the product rule, which states [``(g(x)h(x))'=g(x)h'(x)+ g'(x)h(x)``]. + + +[``f'(x)=(([$AB]x^[$Cplus]-[$A]x^[$Dplus])([$F]\cos(x)))' = ([$AB]x^[$Cplus]-[$A]x^[$Dplus])(-[$F]\sin(x)) + ([$ABC]x^[$C]-[$AD]x^[$D])([$F]\cos(x)))``] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-2-cmm.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-2-cmm.pg new file mode 100644 index 0000000000..1175339ee4 --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-2-cmm.pg @@ -0,0 +1,72 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Product rule (without trigonometric functions)) +## Date(30 April 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$A = random(2, 5, 1); +$B = random(3, 10, 1); +$C = random(2, 5, 1); +$D = random(2, 5, 1); +$F = random(3, 10, 1); + +$Dplus = $D+1; +$Dmin = $D-1; +$AC = $A*$C; +$AF= $A*$F; +$ACD = $A*$C*$D; +$CDplus = $C*$Dplus; + +$firstsum = Formula("((($A)*($C)*x^($D))+(($A)*($F))-(($C)*x^($Dplus))-(($F)*x))*(e^x)")->reduce(); + +$secondsum = Formula("((($A)*($C)*($D)*x^($Dmin))-(($C)*($Dplus)*x^($D))-($F))*((e^x)+($B))")->reduce(); + + +$ans = Compute("[$firstsum] + [$secondsum]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=([$A]-x)(e^x+[$B])([$C]x^[$D]+[$F])``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +This is a product of three functions. To make computing the derivative easier, multiply [``([$A]-x)``] and [``([$C]x^[$D]+[$F])``]: + +[``f(x)=([$A]-x)(e^x+[$B])([$C]x^[$D]+[$F]) = ([$AC]x^[$D] + [$AF] - [$C]x^[$Dplus]-[$F]x)(e^x+[$B])``] + +Now we can more easily use the product rule, which states [``(g(x)h(x))'=g(x)h'(x)+ g'(x)h(x)``]. + + +[``\begin{aligned}f'(x)&=(([$AC]x^[$D] + [$AF] - [$C]x^[$Dplus]-[$F]x)(e^x+[$B]))' \\ &= ([$AC]x^[$D] + [$AF] - [$C]x^[$Dplus]-[$F]x)(e^x) + ([$ACD]x^[$Dmin]-[$CDplus]x^[$D]-[$F])(e^x+[$B])\end{aligned}``] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-3-cmm.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-3-cmm.pg new file mode 100644 index 0000000000..a449a54464 --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-3-cmm.pg @@ -0,0 +1,63 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Product rule (without trigonometric functions)) +## Date(2 May 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$A = random(2, 5, 1); +$B = random(3, 7, 1); +$C = $B+1; +$D = random(2, 5, 1); + +$xval = random(1, 5, 1); +$Amin = $A-1; +$Aplus = $A+1; +$Aplusplus = $A+2; +$BC = $B*$C; +$CD = $C*$D; +$BD = $B*$D; +$BCD = $B*$C*$D; +$BBDD = 2*$B*$D; + +$firstsum = Formula("(($xval^$A)+$B)*((2*$D*$xval)-($C*$D))")->reduce(); + +$secondsum = Formula("($A*($xval^$Amin))*(($D*($xval^2))-($C*$D*$xval))")->reduce(); + +$ans = Compute("[$firstsum] + [$secondsum]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=(x^[$A]+[$B])(x-[$C])([$D]x)``]. Find [`f'([$xval])`]. + +[`f'([$xval])=`][_]{$ans}{20} +END_PGML + + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-1-cmm.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-1-cmm.pg new file mode 100644 index 0000000000..bb7713db47 --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-1-cmm.pg @@ -0,0 +1,75 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives involving multiple rules (all rules)) +## Date(27 April 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$A = random(3, 6, 1); +$B = random(1, 10, 1); +$C = random(3, 6, 1); +$D = random(2, 9, 1); +$F = random(3, 5, 1); + +$Amin = $A-1; +$Cmin = $C-1; +$Fmin = $F-1; +$DF = $D*$F; + + +$ab = $a*$b; +$bm1 = $b-1; +$dm1 = $d-1; +$e = random(2,9,1); +$em1 = $e-1; + +$firstsum = Formula("$C*$A*x^($Amin)*(((x^($A)-$B))**$Cmin)")->reduce(); +$secondsum = Formula("($D*$F*x^($Fmin))*exp($D*x^($F))")->reduce(); + + +$ans = Compute("[$firstsum] + [$secondsum]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=(x^[$A]-[$B])^[$C] + e^{[$D]*x^[$F]}``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +Each piece of this sum involves the use of the chain rule to find [``f'(x)``]. + +[``\begin{aligned}f'(x) &=((x^[$A]-[$B])^[$C])' + (e^{[$D]*x^[$F]})' \\ +&= [$C] (x^[$A]-[$B])^{[$C]-1} \cdot [$A] \cdot x^{[$A]-1} + e^{[$D]x^[$F]} \cdot [$F] \cdot [$D] \cdot x^{[$F]-1} \\ +&= [$C*$A] x^[$Amin] (x^[$A]-[$B])^[$Cmin] + [$F*$D] x^[$Fmin] e^{[$D]x^[$F]} \end{aligned} ``]. + + + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-2-cmm.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-2-cmm.pg new file mode 100644 index 0000000000..26047f7ca3 --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-2-cmm.pg @@ -0,0 +1,62 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Chain rule (without trigonometric functions)) +## Date(2 May 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$A = random(2, 4, 1); +$B = random(2, 3, 1); +$C = 2; +$D = random(2, 3, 1); + +$Bmin = $B-1; +$Dmin = $D-1; + +$valx = random(0, 3, 1); +$funcx = random(1, 3, 1); +$funcxderiv = $funcx+1; + + +$firstsum = Formula("($B*(($funcx+($A*$valx))^$Bmin))*($funcxderiv+$A)")->reduce(); + +$secondsum = Formula("($D*(($C*$funcx)^$Dmin))*($C*$funcxderiv)")->reduce(); + + +$ans = Compute("[$firstsum] - [$secondsum]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Find [`g'(x)`] at [`x=[$valx]`] if [`g(x)=(f(x)+[$A]x)^[$B]-([$C]f(x))^[$D]`], [`f([$valx])=[$funcx]`], and [`f'([$valx])=[$funcxderiv]`]. + +[`g'([$valx])=`][_]{$ans}{20} +END_PGML + + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-chain-1-cmm.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-chain-1-cmm.pg new file mode 100644 index 0000000000..f3be24374f --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-chain-1-cmm.pg @@ -0,0 +1,68 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + +## KEYWORDS() + +## DBsubject('') +## DBchapter('') +## DBsection('') +## Date('27 April 2025') +## Author('Claudia Mahler') +## Institution('University of Calgary') + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$A = random(2, 6, 1); +$B = random(1, 10, 1); +$C = random(2, 6, 1); +$D = random(2, 9, 1); +$F = random(2, 5, 1); + +$Amin = $A-1; +$Cmin = $C-1; +$Fmin = $F-1; +$DF = $D*$F; + + +$ab = $a*$b; +$bm1 = $b-1; +$dm1 = $d-1; +$e = random(2,9,1); +$em1 = $e-1; + +$firstsum = Formula("$C*$A*x^($Amin)*(((x^($A)-$B))**$Cmin)")->reduce(); +$secondsum = Formula("($D*$F*x^($Fmin))*exp($D*x^($F))")->reduce(); + + +$ans = Compute("[$firstsum] + [$secondsum]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=(x^[$A]-[$B])^[$C] + e^{[$D]*x^[$F]}``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +NOT DONE YET +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-1-cmm.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-1-cmm.pg new file mode 100644 index 0000000000..53ece0744c --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-1-cmm.pg @@ -0,0 +1,77 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives involving multiple rules (all rules)) +## Date(27 April 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$A = random(1, 6, 1); +$B = random(2, 9, 1); +$C = random(3, 6, 1); +$D = random(3, 6, 1); +$F = random(2, 5, 1); + +$Cmin = $C-1; +$Dmin = $D-1; +$Fmin = $F-1; + +$firstnum = Formula("$B*$C*(($C+x^($D))^($F))*(($A+($B*x))^($Cmin))")->reduce(); +$secondnum = Formula("$F*$D*(x^($Dmin))*(($A+($B*x))^($C))*(($C+(x^($D)))^($Fmin))")->reduce(); +$denom = Formula("($C+x^($D))^(2*$F)")->reduce(); + + +$ans = Compute("([$firstnum] - [$secondnum])/[$denom]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=\frac{([$A]+[$B]*x)^[$C]}{([$C]+x^[$D])^[$F]}``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +To find this derivative, we need to use a combination of the quotient rule and a few applications of the chain rule. Recall that the quotient rule tells us that if we have a function + +[``j(x)=\frac{g(x)}{h(x)}``] + +then + +[``j'(x)=\frac{h(x)g'(x) - g(x)h'(x)}{(h(x))^2}``] + +So: + +[``f'(x)=\frac{(([$C]+x^[$D])^[$F]) \cdot (([$A]+[$B]*x)^[$C])'-(([$A]+[$B]*x)^[$C]) \cdot (([$C]+x^[$D])^[$F])'}{(([$C]+x^[$D])^[$F])^2}``] + +[``= \frac{(([$C]+x^[$D])^[$F])([$C*$B]([$A]+[$B]*x)^{[$C]-1})-(([$A]+[$B]*x)^[$C])([$F*$D]x^{[$D]-1}([$C]+x^[$D])^{[$F]-1})}{([$C]+x^[$D])^[$F*2]} ``] + +[``= \frac{(([$C]+x^[$D])^[$F])([$C*$B]([$A]+[$B]*x)^[$Cmin])-(([$A]+[$B]*x)^[$C])([$F*$D]x^{[$Dmin]}([$C]+x^[$D])^[$Fmin])}{([$C]+x^[$D])^[$F*2]}``] + + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-2-cmm.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-2-cmm.pg new file mode 100644 index 0000000000..91b8f4768f --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-2-cmm.pg @@ -0,0 +1,76 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Chain rule (with trigonometric functions)) +## Date(30 April 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$A = random(2, 4, 1); +$B = random(2, 4, 1); +$C = random(3, 10, 1); +$D = random(3, 10, 1); +$F = random(2, 4, 1); + +$Bmin = $B-1; + + +$firstsum = Formula("((e^($A*x))-cos(x^$B))*($C+(1/x)-(4*$F*x^3))")->reduce(); +$secondsum = Formula("(($A*e^($A*x))+(($B*x^$Bmin)*sin(x^$B)))*(($C*x)+(ln($D*x))-($F*x^4))")->reduce(); + + +$ans = Compute("[$firstsum] + [$secondsum]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=(e^{[$A]x}-\cos(x^[$B]))([$C]x+\ln([$D]x)-[$F]x^4)``]. Find [`f'(x)`]. + +[`f'(x)=`][_]{$ans}{20} +END_PGML + +BEGIN_PGML_SOLUTION +To find this derivative, we need to use a combination of the product rule and a few applications of the chain rule. Recall that the product rule tells us that if we have a function + +[``j(x)=g(x) \cdot h(x)``] + +then + +[``j'(x)=g(x) \cdot h'(x) + g'(x) \cdot h(x)``] + +So: + +[``f'(x)=(e^{[$A]x}-\cos(x^[$B]))([$C]x+\ln([$D]x)-[$F]x^4)' + (e^{[$A]x}-\cos(x^[$B]))'([$C]x+\ln([$D]x)-[$F]x^4)``] + +[`` = (e^{[$A]x}-\cos(x^[$B]))([$C]+[$D]\frac{1}{[$D]x}-[$F*4]x^{4-1}) + ([$A]e^{[$A]x}+[$B]x^{[$B]-1}\sin(x^[$B]))([$C]x+\ln([$D]x)-[$F]x^4)``] + +[`` = (e^{[$A]x}-\cos(x^[$B]))([$C]+\frac{1}{x}-[$F*4]x^3) + ([$A]e^{[$A]x}+[$B]x^[$Bmin]\sin(x^[$B]))([$C]x+\ln([$D]x)-[$F]x^4)``] + + + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-3-cmm.pg b/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-3-cmm.pg new file mode 100644 index 0000000000..64046fb11e --- /dev/null +++ b/Contrib/UCalgary/249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-3-cmm.pg @@ -0,0 +1,61 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Derivatives involving multiple rules (all rules)) +## Date(2 May 2025) +## Institution(University of Calgary) +## Author(Claudia Mahler) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$A = random(2, 4, 1); +$B = random(3, 4, 1); +$C = $A+1; +$D = random(3, 4, 1); +$F = random(3, 4, 1); + +$xval = random(1, 3, 1); +$Bmin = $B-1; +$Dmin = $D-1; +$Fmin = $F-1; + + +$firstsum = Formula("($xval^$F)*$D*((($A*($xval^$B))-($C*$xval))^$Dmin)*(($B*$A*($xval^$Bmin))-$C)")->reduce(); +$secondsum = Formula("((($A*($xval^$B))-($C*$xval))^$D)*$F*($xval^$Fmin)")->reduce(); +$denom = Formula("$xval^($F*2)")->reduce(); + + +$ans = Compute("([$firstsum] - [$secondsum])/[$denom]"); +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=\frac{([$A]x^[$B]-[$C]x)^[$D]}{x^[$F]}``]. Find [`f'([$xval])`]. + +[`f'([$xval])=`][_]{$ans}{20} +END_PGML + + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-0-R-I/8-1-0-R-I-defn-inc-dec-2-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-0-R-I/8-1-0-R-I-defn-inc-dec-2-jms.pg new file mode 100644 index 0000000000..def78dce29 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-0-R-I/8-1-0-R-I-defn-inc-dec-2-jms.pg @@ -0,0 +1,56 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(20 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl","parserPopUp.pl"); + + +$increasing = DropDown( + [ + 'constant', + 'increasing', + 'decreasing', + 'concave upward', + 'concave downward' + ], + 'increasing' +); + +$decreasing = DropDown( + [ + 'constant', + 'increasing', + 'decreasing', + 'concave upward', + 'concave downward' + ], + 'decreasing' +); + + + +BEGIN_PGML + +Fill in the blanks to identify the following concepts + +Let [`f`] be a function defined on an interval [`I`]. + ++ [`f`] is [_]{$decreasing} on the interval [`I`] if for all [`a,b\in I`], if [`a f(b)`]. + ++ [`f`] is [_]{$increasing} on the interval [`I`] if for all [`a,b\in I`], if [`a', + '<', + '=' + ], + '<' +); + +$more = DropDown( + [ + '>', + '<', + '=' + ], + '>' +); + + +BEGIN_PGML + +Fill in the blanks to complete the following definitions of **increasing** and **decreasing** functions, respectively. + +Let [`f`] be a function defined on an interval [`I`]. + ++ [`f`] is **increasing** on the interval [`I`] if [_]{$quant} [`a,b\in I`], if [`a0`] [_]{$popup_quant} [`x\in I`], then [`g`] is [_]{$popup_inc} on the interval [`I`]. + +END_PGML + +BEGIN_PGML_SOLUTION ++ if [`g'(x)<0`] for all [`x\in I`], then [`g`] is decreasing on the interval [`I`]. + ++ if [`g'(x)>0`] for all [`x\in I`], then [`g`] is increasing on the interval [`I`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-1-R-C/8-1-1-R-C-state-der-inc-dec-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-1-R-C/8-1-1-R-C-state-der-inc-dec-jms.pg new file mode 100644 index 0000000000..8b531edf1e --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-1-R-C/8-1-1-R-C-state-der-inc-dec-jms.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(20 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl", "parserPopUp.pl"); + + +$popup_pos = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + 'positive' +); + +$popup_neg = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + 'negative' +); + +$popup_quant = DropDown( + [ + 'for all', + 'for some' + ], + 'for all' +); + + +BEGIN_PGML +Let [`f`] be a differentiable function defined on an open interval [`I`]. + +Complete the following statements to make them **true** for any such function [`f`]. + ++ if [`f'(x)`] is [_]{$popup_pos} [_]{$popup_quant} [`x\in I`], then [`f`] is increasing on the interval [`I`]. + ++ if [`f'(x)`] is [_]{$popup_neg} [_]{$popup_quant} [`x\in I`], then [`f`] is decreasing on the interval [`I`]. + +END_PGML + +BEGIN_PGML_SOLUTION ++ if [`f'(x)>0`] for all [`x\in I`], then [`f`] is increasing on the interval [`I`]. + ++ if [`f'(x)<0`] for all [`x\in I`], then [`f`] is decreasing on the interval [`I`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-cubic-inc-dec-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-cubic-inc-dec-jms.pg new file mode 100644 index 0000000000..9039e98d38 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-cubic-inc-dec-jms.pg @@ -0,0 +1,80 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(19 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-3,-2,1); +$b = $a + random(3,4,1); +$ab = $a*$b; +$k = random(-1,1,2); +# fix some problematic cases for the graph overflowing the grid +if($a == -3 && $k==1) +{$c = -6;} +elsif($a == -3 && $k== -1) +{$c = 6;} +elsif($a == -2 && $k== 1) +{$c = random(-3,-2,1);} +elsif($a == -2 && $k== -1) +{$c = random(2,3,1);} +else +{$c = random(1,2,1);} + +Context("Interval"); + +if($k < 0) +{ +$inc = "($a,$b)"; +$dec = List("(-5,$a)","($b,5)"); +} +else +{ +$dec = "($a,$b)"; +$inc = List("(-5,$a)","($b,5)"); +} + + + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-7) grid (5,7); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-5}:{5}] (\x,{$k*((\x*\x*\x)/18 - ($a/12)*(\x*\x) - ($b/12)*(\x*\x) + ($ab/6)*\x)+$c}); +\draw[red] (2,{$k*((8)/18 - ($a/12)*(4) - ($b/12)*(4) + ($ab/6)*2)+$c}) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the function [`y=f(x)`] on the interval [`(-5,5)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +Determine the open subintervals of [`(-5,5)`] on which [`f`] is increasing or decreasing. + +Enter the intervals that you find as a **list separated by commas**, if there are no such values enter [|None|]*. + +[`f`] is increasing on the interval(s): [_]{$inc}{20} + +[`f`] is decreasing on the interval(s): [_]{$dec}{20} + +[@helpLink('intervals')@]* + +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-pw-inc-dec-1-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-pw-inc-dec-1-jms.pg new file mode 100644 index 0000000000..303e59b184 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-pw-inc-dec-1-jms.pg @@ -0,0 +1,236 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(19 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +$a = random(-8,-4,1); +$b = $a + random(2,4,1); +$c = $b + random(2,4,1); +$d = $c + random(2,4,1); + +$fm10 = random(-7,7,1); +$fa = random(-6,6,1); +$fb = random(-6,6,1); +$fc = random(-6,6,1); +$fd = random(-6,6,1); +$f10 = random(-7,7,1); + +# determine behaviour on small intervals; always inc/dec/constant +if($fm10 > $fa) +{$tentoa = 'decreasing';} +elsif($fm10 < $fa) +{$tentoa = 'increasing';} +else +{$tentoa = 'constant';} + +if($fa > $fb) +{$atob = 'decreasing';} +elsif($fa < $fb) +{$atob = 'increasing';} +else +{$atob = 'constant';} + +if($fb > $fc) +{$btoc = 'decreasing';} +elsif($fb < $fc) +{$btoc = 'increasing';} +else +{$btoc = 'constant';} + +if($fc > $fd) +{$ctod = 'decreasing';} +elsif($fc < $fd) +{$ctod = 'increasing';} +else +{$ctod = 'constant';} + +if($fd > $f10) +{$dtoten = 'decreasing';} +elsif($fd < $f10) +{$dtoten = 'increasing';} +else +{$dtoten = 'constant';} + +# determine behavior on some concatenated intervals sometimes "neither" bevahiour +# use eq for string comparison == does not behave correctly for this comparison +if($tentoa eq $atob) +{$tentob = $tentoa;} +else +{$tentob = 'nonconstant and neither increasing nor decreasing';} + +if($atob eq $btoc) +{$atoc = $atob;} +else +{$atoc = 'nonconstant and neither increasing nor decreasing';} + +if($btoc eq $ctod) +{$btod = $btoc;} +else +{$btod = 'nonconstant and neither increasing nor decreasing';} + +#produce popups for each of the eight intervals above +$popup_tentoa = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'nonconstant and neither increasing nor decreasing' + ], + $tentoa +); + +$popup_tentob = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'nonconstant and neither increasing nor decreasing' + ], + $tentob +); + +$popup_atob = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'nonconstant and neither increasing nor decreasing' + ], + $atob +); + +$popup_atoc = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'nonconstant and neither increasing nor decreasing' + ], + $atoc +); + +$popup_btoc = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'nonconstant and neither increasing nor decreasing' + ], + $btoc +); + +$popup_ctod = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'nonconstant and neither increasing nor decreasing' + ], + $ctod +); + +$popup_btod = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'nonconstant and neither increasing nor decreasing' + ], + $btod +); + +$popup_dtoten = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'nonconstant and neither increasing nor decreasing' + ], + $dtoten +); + +# choose random subsets of intervals, paired with popup, to ask below +# use eq for string comparison == does not behave correctly for this comparison + +# one end -10 to a or d to 10 +$I1 = list_random("(-10,$a)","($d,10)"); + +if($I1 eq "(-10,$a)") +{$popup1 = $popup_tentoa;} +else +{$popup1 = $popup_dtoten;} + +# one interior a to b, b to c, or c to d +$I2 = list_random("($a,$b)","($b,$c)", "($c,$d)"); + +if($I2 eq "($a,$b)") +{$popup2 = $popup_atob;} +elsif($I2 eq "($b,$c)") +{$popup2 = $popup_btoc;} +else +{$popup2 = $popup_ctod;} + +# one concatenated -10 to b, a to c, or b to d +$I3 = list_random("(-10,$b)","($a,$c)", "($b,$d)"); + +if($I3 eq "(-10,$b)") +{$popup3 = $popup_tentob;} +elsif($I3 eq "($a,$c)") +{$popup3 = $popup_atoc;} +else +{$popup3 = $popup_btod;} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) -- ($d,$fd); +\draw[->,red, very thick] ($d,$fd) -- (10,$f10); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +\Context("Interval"); + +BEGIN_PGML +Recall the following definitions: + ++ a function [`f`] is **increasing** on an interval [`I`] if for all [`a,b\in I`], if [`a f(b)`]. ++ a function [`f`] is **constant** on an interval [`I`] if for all [`a,b\in I`], [`f(a) = f(b)`]. + +Note, our definition of **increasing** may be called **strictly increasing** elsewhere; similarly for our definition of **decreasing**. + +Consider the graph of the piecewise function [`y=f(x)`] given below. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +a) On the interval [`[$I1]`] the function [`f`] is [_]{$popup1} + +a) On the interval [`[$I2]`] the function [`f`] is [_]{$popup2} + +a) On the interval [`[$I3]`] the function [`f`] is [_]{$popup3} + +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-quart-inc-dec-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-quart-inc-dec-jms.pg new file mode 100644 index 0000000000..5c1be0b9d9 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-2-U-C/8-1-2-U-C-quart-inc-dec-jms.pg @@ -0,0 +1,99 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(19 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-5,-4,1); +$b = $a + random(5,6,1); +$c = $b + random(3,4,1); +$ab = $a*$b; +$ac = $a*$c; +$bc = $b*$c; +$abc = $a*$b*$c; +$sum = $a+$b+$c; +$quad = $ab/2 + $ac/2 + $bc/2; +$k = random(-2,-1,1); + +# fix graph in "bad cases" +if($k > 0 && $c < 4) +{$d = random(-3,-2,1); +$c=4; +$ac = $a*$c; +$bc = $b*$c; +$abc = $a*$b*$c; +$sum = $a+$b+$c; +$quad = $ab/2 + $ac/2 + $bc/2;} +elsif($k < 0 && $c < 4) +{$d = random(2,3,1); +$c=4; +$ac = $a*$c; +$bc = $b*$c; +$abc = $a*$b*$c; +$sum = $a+$b+$c; +$quad = $ab/2 + $ac/2 + $bc/2;} +elsif($k > 0 && abs($b) < 2) +{$d = 0;} +elsif($k < 0 && abs($b) < 2) +{$d = 0;} +elsif($k > 0) +{$d = random(2,3,1);} +elsif($k < 0) +{$d = random(-3,-2,1);} + +Context("Interval"); + +if($k < 0) +{ +$inc = List("(-7,$a)","($b,$c)"); +$dec = List("($a,$b)","($c,7)"); +} +else +{ +$dec = List("(-7,$a)","($b,$c)"); +$inc = List("($a,$b)","($c,7)"); +} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-7,0) -- (7,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-10) -- (0,10) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-7,-10) grid (7,10); +\foreach \x in {-6,-4,-2,2,4,6} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-8, -6,-4,-2,2,4,6,8} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-7}:{7}] (\x,{$k*((-$abc/50)*\x + ($quad/50)*(\x*\x) - ($sum/150)*(\x*\x*\x) + (\x*\x*\x*\x)/200)+$d}); +\draw[red] ($b,1) node[above right, outer sep=2pt]{\(y=g(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the function [`y=g(x)`] on the interval [`(-7,7)`]. + +[@ image($graph_image, width => 600, tex_size => 600) @]* + +Determine the open subintervals of [`(-7,7)`] on which [`g`] is increasing or decreasing. + +Enter the intervals that you find as a **list separated by commas**, if there are no such values enter [|None|]*. + +[`g`] is increasing on the interval(s): [_]{$inc}{20} + +[`g`] is decreasing on the interval(s): [_]{$dec}{20} + +[@helpLink('intervals')@]* + +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-der-cubic-inc-dec-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-der-cubic-inc-dec-jms.pg new file mode 100644 index 0000000000..2ea68a6e3c --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-der-cubic-inc-dec-jms.pg @@ -0,0 +1,80 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(20 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-4,-3,1); +$b = $a + random(3,4,1); +$c = $b + random(2,3,1); +$k = random(-1,1,2); + +Context("Interval"); + +if($k < 0) +{ +$inc = List("(-5,$a)","($b,$c)"); +$dec = List("($a,$b)","($c,5)"); +} +else +{ +$dec = List("(-5,$a)","($b,$c)"); +$inc = List("($a,$b)","($c,5)"); +} + +$critical = List("$a","$b","$c"); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-7) grid (5,7); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-5}:{5}] (\x,{$k*(\x-$a)*(\x-$b)*(\x-$c)/20}); +\draw[red] ($b,1) node[above right, outer sep=2pt]{\(y=f^\prime(x)\)}; +END_TIKZ + +BEGIN_PGML +Suppose that [`f`] is a differentiable function. + +Consider the following **graph of the derivative** [`y=f'(x)`] on the interval [`(-5,5)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +Determine the open subintervals of [`(-5,5)`] on which the function [`f`] is increasing or decreasing. + + Enter the intervals that you find as a **list separated by commas**, if there are no such intervals enter [|None|]*. + + [`f`] is increasing on the interval(s): [_]{$inc}{20} + + [`f`] is decreasing on the interval(s): [_]{$dec}{20} + +[@helpLink('intervals')@]* + +END_PGML + +BEGIN_PGML_SOLUTION +[`f`] is increasing on intervals where [`f'(x)>0`] and [`f`] is decreasing on intervals where [`f'(x)<0`]. + +[`f`] is increasing on the intervals [`[$inc]`] + +[`f`] is decreasing on the intervals [`[$dec]`] + +[`f`] has critical points at [`x = [$critical]`] because [`f'([$a])=0, f'([$b])=0`] and [`f'([$c])=0`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-der-quart-inc-dec-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-der-quart-inc-dec-jms.pg new file mode 100644 index 0000000000..91b22e7a9a --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-der-quart-inc-dec-jms.pg @@ -0,0 +1,97 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(20 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-6,-5,1); +$b = $a + random(4,5,1); +$c = $b + random(4,5,1); + +# fix scale by additional spacing to roots if needed +if( ($b-$a) == ($c-$b) && ($c<6) && ($c-$b)<5 ) +{$c = $c+1;} + + +$k = random(-1,1,2); + +if($k > 0) +{$low = -3; +$lowp1 = -2; +$high = 9; +$highm1=8;} +else +{$high = 3; +$highm1 = 2; +$low = -9; +$lowp1=-8;} + +Context("Interval"); + +if($k > 0) +{ +$inc = List("(-7,$a)","($b,$c)","($c,7)"); +$dec = List("($a,$b)"); +} +else +{ +$dec = List("(-7,$a)","($b,$c)","($c,7)"); +$inc = List("($a,$b)"); +} + +$critical = List("$a", "$b", "$c"); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-7,0) -- (7,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,$low) -- (0,$high) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-7,$low) grid (7,$high); +\foreach \x in {-6,-4,-2,2,4,6} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {$lowp1,...,$highm1} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-6.8}:{6.8}] (\x,{$k*(\x-$a)*(\x-$b)*(\x-$c)*(\x-$c)/200)}); +\draw[red] ($c,1) node[above right, outer sep=2pt]{\(y=g^\prime(x)\)}; +END_TIKZ + +BEGIN_PGML +Let [`g`] be a differentiable function. + +Consider the following **graph of the derivative** [`y=g'(x)`] on the interval [`(-7,7)`]. + +[@ image($graph_image, width => 600, tex_size => 600) @]* + +Determine the open subintervals of [`(-7,7)`] on which the function [`g`] is increasing or decreasing. + + Enter the intervals that you find as a **list separated by commas**, if there are no such intervals enter [|None|]*. + + [`g`] is increasing on the interval(s): [_]{$inc}{20} + + [`g`] is decreasing on the interval(s): [_]{$dec}{20} + +[@helpLink('intervals')@]* + +END_PGML + +BEGIN_PGML_SOLUTION +[`g`] is increasing on intervals where [`g'(x)>0`] and [`g`] is decreasing on intervals where [`g'(x)<0`]. + +[`g`] is increasing on the intervals [`[$inc]`] + +[`g`] is decreasing on the intervals [`[$dec]`] + +[`g`] has critical points at [`x = [$critical]`] because [`g'([$a])=0, g'([$b])=0`] and [`g'([$c])=0`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-pw-der-inc-dec-1-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-pw-der-inc-dec-1-jms.pg new file mode 100644 index 0000000000..632dd54a97 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-pw-der-inc-dec-1-jms.pg @@ -0,0 +1,209 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(19 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +#intervals +# (-10,$a), ($a,$c), ($c,$e), and ($e,10) + +$a = random(-8,-4,1); +$b = $a + random(2,3,1); +$c = $b + random(2,3,1); +$d = $c + random(2,3,1); +$e = $d + random(2,3,1); + +#funciton values + +$fm10 = random(2,7,1)*random(-1,1,2); +$fa = 0; +$fb = non_zero_random(-6,6,1); +$fc = 0; +$fd = non_zero_random(-6,6,1); +$fe = 0; +$f10 = random(2,7,1)*random(-1,1,2); + +#determine intervals of increase/decrease + +if($fm10 < 0) +{$tentoa = 'decreasing'; +$tentoa_sign = 'negative';} +else +{$tentoa = 'increasing'; +$tentoa_sign = 'positive';} + +if($fb < 0) +{$atoc = 'decreasing'; +$atoc_sign = 'negative';} +else +{$atoc = 'increasing'; +$atoc_sign = 'positive';} + +if($fd < 0) +{$ctoe = 'decreasing'; +$ctoe_sign = 'negative';} +else +{$ctoe = 'increasing'; +$ctoe_sign = 'positive';} + +if($f10 < 0) +{$etoten = 'decreasing'; +$etoten_sign = 'negative';} +else +{$etoten = 'increasing'; +$etoten_sign = 'positive';} + +#produce popups +#produce increasing/decreasing popups for each of the four intervals above +$popup_tentoa = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'neither increasing nor decreasing' + ], + $tentoa +); + +$popup_atoc = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'neither increasing nor decreasing' + ], + $atoc +); + +$popup_ctoe = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'neither increasing nor decreasing' + ], + $ctoe +); + +$popup_etoten = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'neither increasing nor decreasing' + ], + $etoten +); + +#produce popups +#produce positive/negative popups for each of the four intervals above +$popup_tentoa_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $tentoa_sign +); + +$popup_atoc_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $atoc_sign +); + +$popup_ctoe_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $ctoe_sign +); + +$popup_etoten_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $etoten_sign +); + + + +# select random two intervals +# one of left two intervals +$I1 = list_random("(-10,$a)","($a,$c)"); + +if($I1 eq "(-10,$a)") +{$popup1 = $popup_tentoa; +$posneg1 = $popup_tentoa_sign;} +else +{$popup1 = $popup_atoc; +$posneg1 = $popup_atoc_sign;} + +# one of right two intervals +$I2 = list_random("($c,$e)","($e,10)"); + +if($I2 eq "($c,$e)") +{$popup2 = $popup_ctoe; +$posneg2 = $popup_ctoe_sign;} +else +{$popup2 = $popup_etoten; +$posneg2 = $popup_etoten_sign;} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) -- ($d,$fd); +\draw[red, very thick] ($d,$fd) -- ($e,$fe); +\draw[->,red, very thick] ($e,$fe) -- (10,$f10); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f^\prime(x)\)}; +END_TIKZ + +BEGIN_PGML +Let [`f`] be a differentiable function. + +Consider the following **graph of the derivative** [`y=f'(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +a) The function [`f`] is [_]{$popup1} on the interval [`[$I1]`] because [`f'(x)`] is [_]{$posneg1} for all [`x\in[$I1].`] + +a) The function [`f`] is [_]{$popup2} on the interval [`[$I2]`] because [`f'(x)`] is [_]{$posneg2} for all [`x\in[$I2].`] + +END_PGML + +BEGIN_PGML_SOLUTION +[`f`] is increasing on intervals where [`f'(x)>0`] and [`f`] is decreasing on intervals where [`f'(x)<0`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-pw-der-inc-dec-2-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-pw-der-inc-dec-2-jms.pg new file mode 100644 index 0000000000..1afefb89f2 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-3-U-C/8-1-3-U-C-pw-der-inc-dec-2-jms.pg @@ -0,0 +1,209 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(19 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +#intervals +# (-10,$a), ($a,$c), ($c,$e), and ($e,10) + +$a = random(-8,-6,1); +$b = $a + random(2,3,1); +$c = $b + random(2,4,1); +$d = $c + random(2,3,1); +$e = $d + random(2,4,1); + +#funciton values + +$fm10 = random(2,7,1)*random(-1,1,2); +$fa = 0; +$fb = random(2,7,1)*random(-1,1,2); +$fc = 0; +$fd = random(2,7,1)*random(-1,1,2); +$fe = 0; +$f10 = random(2,7,1)*random(-1,1,2); + +#determine intervals of increase/decrease + +if($fm10 < 0) +{$tentoa = 'decreasing'; +$tentoa_sign = 'negative';} +else +{$tentoa = 'increasing'; +$tentoa_sign = 'positive';} + +if($fb < 0) +{$atoc = 'decreasing'; +$atoc_sign = 'negative';} +else +{$atoc = 'increasing'; +$atoc_sign = 'positive';} + +if($fd < 0) +{$ctoe = 'decreasing'; +$ctoe_sign = 'negative';} +else +{$ctoe = 'increasing'; +$ctoe_sign = 'positive';} + +if($f10 < 0) +{$etoten = 'decreasing'; +$etoten_sign = 'negative';} +else +{$etoten = 'increasing'; +$etoten_sign = 'positive';} + +#produce popups +#produce increasing/decreasing popups for each of the four intervals above +$popup_tentoa = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'neither increasing nor decreasing' + ], + $tentoa +); + +$popup_atoc = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'neither increasing nor decreasing' + ], + $atoc +); + +$popup_ctoe = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'neither increasing nor decreasing' + ], + $ctoe +); + +$popup_etoten = DropDown( + [ + 'increasing', + 'decreasing', + 'constant', + 'neither increasing nor decreasing' + ], + $etoten +); + +#produce popups +#produce positive/negative popups for each of the four intervals above +$popup_tentoa_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $tentoa_sign +); + +$popup_atoc_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $atoc_sign +); + +$popup_ctoe_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $ctoe_sign +); + +$popup_etoten_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $etoten_sign +); + + + +# select random two intervals +# one of two end intervals +$I1 = list_random("(-10,$a)","($e,10)"); + +if($I1 eq "(-10,$a)") +{$popup1 = $popup_tentoa; +$posneg1 = $popup_tentoa_sign;} +else +{$popup1 = $popup_etoten; +$posneg1 = $popup_etoten_sign;} + + +# one of right two intervals +$I2 = list_random("($a,$c)","($c,$e)"); + +if($I2 eq "($a,$c)") +{$popup2 = $popup_atoc; +$posneg2 = $popup_atoc_sign;} +else +{$popup2 = $popup_ctoe; +$posneg2 = $popup_ctoe_sign;} + + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) .. controls ($b,$fb) .. ($c,$fc); +\draw[red, very thick] ($c,$fc) .. controls ($d,$fd) .. ($e,$fe); +\draw[->,red, very thick] ($e,$fe) -- (10,$f10); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=h^\prime(x)\)}; +END_TIKZ + +BEGIN_PGML +Let [`h`] be a differentiable function. + +Consider the following **graph of the derivative** [`y=h'(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +a) The function [`h`] is [_]{$popup1} on the interval [`[$I1]`] becasue [`h'(x)`] is [_]{$posneg1} for all [`x\in[$I1].`] + +a) The function [`h`] is [_]{$popup2} on the interval [`[$I2]`] becasue [`h'(x)`] is [_]{$posneg2} for all [`x\in[$I2].`] + +END_PGML + +BEGIN_PGML_SOLUTION +[`h`] is increasing on intervals where [`h'(x)>0`] and [`h`] is decreasing on intervals where [`h'(x)<0`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-abstract-1-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-abstract-1-jms.pg new file mode 100644 index 0000000000..5dd67dedf0 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-abstract-1-jms.pg @@ -0,0 +1,69 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(24 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = random(2, 9, 1); +$gsign = random(-1,1,2); +if($gsign == -1) +{$gsymb = '<'; +$finc = List("(0,$a)"); +$fdec = List("(-inf,0)", "($a,inf)"); +} +else +{$gsymb = '>'; +$finc = List("(-inf,0)", "($a,inf)"); +$fdec = List("(0,$a)"); +} + + +BEGIN_PGML + +Suppose that [`f`] is a differentiable function, defined for all [`x \in \mathbb{R}`]. + +Further suppose that [``f'(x)=x^2 g(x) - [$a] x g(x),``] where [`g`] is a continuous function with the property that [`g(x) [$gsymb] 0,`] for all [`x \in \mathbb{R}.`] + +Determine the maximal open intervals on which the function [`f`] is increasing and decreasing. + +Enter your answer as a **list of intervals separated by commas.** If there are no such intervals, type [|None|]*. + +a) [`f`] is increasing on the interval(s) [_]{$finc}{20} + +b) [`f`] is decreasing on the interval(s) [_]{$fdec}{20} +END_PGML + +BEGIN_PGML_SOLUTION +First factor [``f'(x)=x^2 g(x) - [$a] x g(x) = x(x-[$a])g(x)``], and we can see that [`f`] has critical points [`x=0`] and [`x=[$a]`]. + +We know that [`g(x) [$gsymb] 0,`] for all [`x \in \mathbb{R}.`] + +Now can make a table of values to determine that: + +a) [`f'(x) > 0`] on [`[$finc]`], so [`f`] is increasing on [`[$finc].`] + +b) [`f'(x) < 0`] on [`[$fdec]`], so [`f`] is decreasing on [`[$fdec].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-danny-1.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-danny-1.pg new file mode 100644 index 0000000000..ab10bee98f --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-danny-1.pg @@ -0,0 +1,69 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(January 2025) +## Institution(University of Calgary) +## Author(Danny Glin) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = random(2, 5, 1)*random(-1,1,2); +$sgn = random(-1,1,2); +$g = Formula("($sgn*1)/(x-$a)")->reduce(); +$gder = Formula("(-$sgn*1)/((x-$a)^2)")->reduce(); +if($sgn == 1) +{ +$ginc = List("None"); +$gdec = List("(-inf,$a)", "($a,inf)"); +} +else +{ +$ginc = List("(-inf,$a)", "($a,inf)"); +$gdec = List("None"); +} + +BEGIN_PGML + +Suppose that [``g(x)=[$g]``], which is defined for all [`x\in\mathbb{R}, x\neq [$a].`] + +Determine the maximal open intervals on which [`g`] is increasing and decreasing. + +Enter your answer as a list of **intervals separated by commas.** If there are no such intervals, type [|None|]*. + +a. [`g`] is increasing on the interval(s) [_]{$ginc}{20} + +b. [`g`] is decreasing on the interval(s) [_]{$gdec}{20} +END_PGML + +if($sgn == 1) +{ +BEGIN_PGML_SOLUTION +[``g'(x)=\frac{-1}{(x-[$a])^2}``], which is negative for all [`x`] except [`[$a]`], so the function is decreasing on the intervals [`(-\infty,[$a])`] and [`([$a],\infty)`], and it is never increasing. +END_PGML_SOLUTION +} +else +{ +BEGIN_PGML_SOLUTION +[``g'(x)=\frac{1}{(x-[$a])^2}``], which is positive for all [`x`] except [`[$a]`], so the function is increasing on the intervals [`(-\infty,[$a])`] and [`([$a],\infty)`], and it is never decreasing. +END_PGML_SOLUTION +} + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-log-2-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-log-2-jms.pg new file mode 100644 index 0000000000..449854784f --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-log-2-jms.pg @@ -0,0 +1,58 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(24 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = random(2, 5, 1); +$am1 = $a-1; +$g = Formula("x^$a ln(x)")->reduce(); +$gder = Formula("$a x^$am1 ln(x) + x^$am1")->reduce(); +$ginc = "(e**(-1/$a),inf)"; +$gdec = "(0,e**(-1/$a))"; + + + +BEGIN_PGML + +Suppose that [`g(x) = [$g]`], where [`x>0`]. Note that [`g'(x) = [$gder]`]. + +Determine the maximal open intervals on which the function [`g`] is increasing and decreasing. + +Enter your answer as a **list of intervals separated by commas.** If there are no such intervals, type [|None|]*. + +a) [`g`] is increasing on the interval(s) [_]{$ginc}{20} + +b) [`g`] is decreasing on the interval(s) [_]{$gdec}{20} +END_PGML + +BEGIN_PGML_SOLUTION +Factor [``g'(x) = [$gder] = x^{[$am1]}([$a]\ln(x) + 1) ``]. Since [`x>0`] the only root of [`g'(x)=0`] must come from solving [`[$a]\ln(x) + 1 = 0`], so [`g`] has a critical point at [`x = e^{-1/[$a]}`]. + +a) [`g'(x) > 0`] on [`(e^{-1/[$a]},\infty)`], so [`g`] is increasing on [`(e^{-1/[$a]},\infty).`] + +b) [`g'(x) < 0`] on [`(0,e^{-1/[$a]})`], so [`g`] is decreasing on [`(0,e^{-1/[$a]}).`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-poly-3-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-poly-3-jms.pg new file mode 100644 index 0000000000..16671840ba --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-1-4-Ap-C/8-1-4-Ap-C-poly-3-jms.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(24 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = non_zero_random(-2,1,1); +$b = $a + 3; #difference of three between roots ensures integer coefficients +$c = non_zero_random(-9,9,1); +$cubic = 4/3*(-$a-2*$b); +$quad = 2*(2*$a*$b+$b**2); +$lin = -4*$a*($b**2); + +$h = Formula("x^4 + $cubic*x^3 + $quad*x^2 + $lin*x + $c")->reduce(); +$hder = Formula("4*x^3 + 3*$cubic*x^2 + 2*$quad*x + $lin")->reduce(); +$hinc = List("($a,$b)", "($b,inf)"); +$hdec = List("(-inf,$a)"); + + + +BEGIN_PGML + +Suppose that [``h(x) = [$h]``]. + +Determine the maximal open intervals on which the function [`h`] is increasing and decreasing. + +Enter your answer as a **list of intervals separated by commas.** If there are no such intervals, type [|None|]*. + +a) [`h`] is increasing on the interval(s) [_]{$hinc}{20} + +b) [`h`] is decreasing on the interval(s) [_]{$hdec}{20} +END_PGML + +BEGIN_PGML_SOLUTION +First compute and factor the derivative +[``h'(x) = [$hder] = 4(x-[$a])(x-[$b])^2``]. Now make a sign-chart to determine that: + +a) [`h'(x) > 0`] on [`[$hinc]`], so [`h`] is increasing on [`[$hinc].`] + +b) [`h'(x) < 0`] on [`[$hdec]`], so [`h`] is decreasing on [`[$hdec].`] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-0-R-I/8-2-0-R-I-conc-defn-2-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-0-R-I/8-2-0-R-I-conc-defn-2-jms.pg new file mode 100644 index 0000000000..75fc4c3970 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-0-R-I/8-2-0-R-I-conc-defn-2-jms.pg @@ -0,0 +1,62 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(20 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl","parserPopUp.pl"); + + +$upward = DropDown( + [ + 'constant', + 'increasing', + 'decreasing', + 'concave upward', + 'concave downward' + ], + 'concave upward' +); + +$downward = DropDown( + [ + 'constant', + 'increasing', + 'decreasing', + 'concave upward', + 'concave downward' + ], + 'concave downward' +); + +$quant = DropDown( + [ + 'for all', + 'for some', + ], + 'for all' +); + +BEGIN_PGML + +Fill in the blanks to identify the following concepts. + +Let [`f`] be a function that is twice-differentiable on an interval [`I`]. + ++ [`f`] is [_]{$downward} on the interval [`I`] if [_]{$quant} [`x \in I`], [`f''(x)<0.`] + ++ [`f`] is [_]{$upward} on the interval [`I`] if [_]{$quant} [`x \in I`], if [`f''(x)>0.`] + +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-0-R-I/8-2-0-R-I-defn-conc-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-0-R-I/8-2-0-R-I-defn-conc-jms.pg new file mode 100644 index 0000000000..cc93739f34 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-0-R-I/8-2-0-R-I-defn-conc-jms.pg @@ -0,0 +1,62 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(20 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl","parserPopUp.pl"); + + +$quant = DropDown( + [ + 'for all', + 'for some', + ], + 'for all' +); + +$upward = DropDown( + [ + 'above', + 'below', + 'equal to' + ], + 'below' +); + +$downward = DropDown( + [ + 'above', + 'below', + 'equal to' + ], + 'above' +); + + + +BEGIN_PGML + +Fill in the blanks to complete the following definitions of **concave upward** and **concave downward** functions, respectively. + +Let [`f`] be a differentiable function that is defined on an interval [`I`]. + +For any [`a \in I`], let [`L(x)=f'(a)(x-a) + f(a)`] be the tangent line to [`y=f(x)`] at [`x=a`]. + ++ [`f`] is **concave upward** on the interval [`I`] if [_]{$quant} [`a\in I`], the graph [`y=L(x)`] of the tangent line to [`f`] at [`x=a`] is [_]{$upward} the graph of [`y=f(x).`] + ++ [`f`] is **concave downward** on the interval [`I`] if [_]{$quant} [`a\in I`], tthe graph [`y=L(x)`] of the tangent line to [`f`] at [`x=a`] is [_]{$downward} the graph of [`y=f(x).`] + +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-3-U-C/8-2-3-U-C-concave-original-1-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-3-U-C/8-2-3-U-C-concave-original-1-jms.pg new file mode 100644 index 0000000000..8414770953 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-3-U-C/8-2-3-U-C-concave-original-1-jms.pg @@ -0,0 +1,82 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(20 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = non_zero_random(-2,2,1); +$b = random(-2,-1,1); +$k = random(-1,1,2); +if($a == -2) +{$c = -6;} +elsif($a == -1) +{$c = -4;} +elsif($a == 1) +{$c = 4;} +elsif($a == 2) +{$c = 6;} + +Context("Interval"); + +if($k < 0) +{ +$upward= "(-5,$a)"; +$downward = "($a,5)"; +} +else +{ +$downward = "(-5,$a)"; +$upward = "($a,5)"; +} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-7) grid (5,7); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-4.9}:{4.9}] (\x,{$k*(pow(\x,3)/18-pow(\x,2)*($a/6) + ($b/3)*\x + $c)}); +\draw[red] (5,5) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +#Print coefficients to test the graph: [`a = [$a], b = [$b], c=[$c], k=[$k]`] + +BEGIN_PGML + +Consider the following graph of the function [`y=f(x)`] on the interval [`(-5,5)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +Determine the open subintervals of [`(-5,5)`] on which the function [`f`] is concave upward or concave downward. + +Enter the intervals that you find as a **list separated by commas**, if there are no such intervals enter [|None|]*. + +[`f`] is concave upward on the interval(s): [_]{$upward}{20} + +[`f`] is concave downward on the interval(s): [_]{$downward}{20} + +[@helpLink('intervals')@]* + +END_PGML + +BEGIN_PGML_SOLUTION +[`f`] is concave upward on the intervals [`[$upward]`] + +[`f`] is concave downward on the intervals [`[$downward]`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-3-U-C/8-2-3-U-C-concave-original-2-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-3-U-C/8-2-3-U-C-concave-original-2-jms.pg new file mode 100644 index 0000000000..293e92dcc4 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-3-U-C/8-2-3-U-C-concave-original-2-jms.pg @@ -0,0 +1,99 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(20 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-3,-2,1); +$b = random(2,3,1); +$aplusb = $a + $b; +$ab = $a*$b; +$c = non_zero_random(-2,2,1); +$d = random(-1,1,2); +$k = random(-1,1,2); + +# adjust $d to fix graph in certain cases +if($a == -2 && $b == 2 && $k ==1) +{$d = -3;} + +if($a == -2 && $b == 2 && $k == -1) +{$d = -3;} + +if($a == -2 && $b == 3 && $k == 1) +{$d = -2;} + +if($a == -2 && $b == 3 && $k == -1) +{$d = -2;} + +if($a == -3 && $b == 2 && $k == -1) +{$d = -2;} + +if($a == -3 && $b == 2 && $k == 1) +{$d = -2;} + + +Context("Interval"); + +if($k > 0) +{ +$upward = List("(-7,$a)","($b,7)"); +$downward = List("($a,$b)"); +} +else +{ +$downward = List("(-7,$a)","($b,7)"); +$upward = List("($a,$b)"); +} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-7,0) -- (7,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-9) -- (0,9) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-7,-9) grid (7,9); +\foreach \x in {-6,-4,-2,2,4,6} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-6.8}:{6.8}] (\x,{$k*((\x*\x*\x*\x)/120-($aplusb/60)*(\x*\x*\x)+($ab/20)*(\x*\x)+($c/10)*\x+$d)}); +\draw[red] (3,7) node[above, outer sep=2pt]{\(y=g(x)\)}; +END_TIKZ + +# Print coefficients to test the graph: [`a = [$a], b = [$b], c=[$c], d=[$d], k=[$k]`] + +BEGIN_PGML +Consider the following graph of the function [`y=g(x)`] on the interval [`(-7,7)`]. + +[@ image($graph_image, width => 600, tex_size => 600) @]* + +Determine the open subintervals of [`(-7,7)`] on which the function [`g`] is concave upward or concave downward. + +Enter the intervals that you find as a **list separated by commas**, if there are no such intervals enter [|None|]*. + +[`g`] is concave upward on the interval(s): [_]{$upward}{20} + +[`g`] is concave downward on the interval(s): [_]{$downward}{20} + +[@helpLink('intervals')@]* + +END_PGML + +BEGIN_PGML_SOLUTION + +[`g`] is concave upward on the interval(s): [`[$upward]`] + +[`g`] is concave downward on the interval(s): [`[$downward]`] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-4-U-I/8-2-4-U-I-cubic-first-der-concave-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-4-U-I/8-2-4-U-I-cubic-first-der-concave-jms.pg new file mode 100644 index 0000000000..7599947d78 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-4-U-I/8-2-4-U-I-cubic-first-der-concave-jms.pg @@ -0,0 +1,100 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(20 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-3,-2,1); +$b = $a + random(3,4,1); +$ab = $a*$b; +$k = random(-1,1,2); +# fix some problematic cases for the graph overflowing the grid +if($a == -3 && $k==1) +{$c = -6;} +elsif($a == -3 && $k== -1) +{$c = 6;} +elsif($a == -2 && $k== 1) +{$c = random(-3,-2,1);} +elsif($a == -2 && $k== -1) +{$c = random(2,3,1);} +else +{$c = random(1,2,1);} + +Context("Interval"); + +if($k < 0) +{ +$upward = "($a,$b)"; +$downward = List("(-5,$a)","($b,5)"); +} +else +{ +$downward= "($a,$b)"; +$upward = List("(-5,$a)","($b,5)"); +} + +$inflection = List("$a", "$b"); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-7) grid (5,7); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-5}:{5}] (\x,{$k*((\x*\x*\x)/18 - ($a/12)*(\x*\x) - ($b/12)*(\x*\x) + ($ab/6)*\x)+$c}); +\draw[red] (5,6) node [above right]{\(y=h^\prime(x)\)}; +END_TIKZ + +BEGIN_PGML +Let [`h`] be a twice-differentiable function. + +Consider the following **graph of the first derivative** [`y=h'(x)`] on the interval [`(-5,5)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +a) Determine the open subintervals of [`(-5,5)`] on which [`h`] is concave upward or concave downward. + + Enter the intervals that you find as a **list separated by commas**, if there are no such values enter [|None|]*. + + [`h`] is concave upward on the interval(s): [_]{$upward}{20} + + [`h`] is concave downward on the interval(s): [_]{$downward}{20} + + [@helpLink('intervals')@]* + +b) List the [`x`]-coordinates of the inflection points of [`h`] in the interval [`(-5,5)`], if any. + + Enter the [`x`]-values that you find as a **list separated by commas**, if there are no such values enter [|None|]*. + + [`h`] has inflection point(s) at [`x = \,`] [_]{$inflection}{15} + +END_PGML + +BEGIN_PGML_SOLUTION ++ [`h`] is concave upward on intervals where [`h''(x)>0`] and this is equivalent to saying that [`h'`] is increasing. + ++ [`h`] is concave downward on intervals where [`h''(x)<0`] and this is equivalent to saying that [`h'`] is decreasing. + +a) [`h'`] is increasing on the interval(s): [`[$upward]`], so [`h`] is concave upward on the interval(s): [`[$upward]`] + + [`h'`] is decreasing on the interval(s): [`[$downward]`], so [`h`] is concave downard on the interval(s): [`[$downward]`] + +b) The function [`h`] has inflection points where the function is continuous and the concavity of [`h`] changes. The function [`h`] is continuous on [`(-5,5)`] because it is a differentiable function, and the concavity of [`h`] changes at [`x = [$inflection]`] so [`h`] has inflection points at [`x = [$inflection]`]. + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-4-U-I/8-2-4-U-I-pw-frst-der-concave-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-4-U-I/8-2-4-U-I-pw-frst-der-concave-jms.pg new file mode 100644 index 0000000000..6b384dfd10 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-4-U-I/8-2-4-U-I-pw-frst-der-concave-jms.pg @@ -0,0 +1,222 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(20 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +$a = random(-8,-4,1); +$b = $a + random(2,4,1); +$c = $b + random(2,4,1); +$d = $c + random(2,4,1); + +# ensure that consecutive values of the function are different to avoid a constant first derivative +$fm10 = non_zero_random(-3,3,1); +$fa = $fm10 + non_zero_random(-3,3,1); +$fb = $fa + non_zero_random(-3,3,1); +$fc = $fb + non_zero_random(-3,3,1); +$fd = $fc + non_zero_random(-3,3,1); +$f10 = $fd + non_zero_random(-3,3,1); + +$upper = max(max($fm10, $fa, $fb, $fc, $fd, $f10) + 1,2); +$lower = min(min($fm10, $fa, $fb, $fc, $fd, $f10) - 1,-2); + +# determine behaviour on small intervals; always inc/dec/constant +if($fm10 > $fa) +{$tentoa = 'is concave downward';} +elsif($fm10 < $fa) +{$tentoa = 'is concave upward';} + +if($fa > $fb) +{$atob = 'is concave downward';} +elsif($fa < $fb) +{$atob = 'is concave upward';} + +if($fb > $fc) +{$btoc = 'is concave downward';} +elsif($fb < $fc) +{$btoc = 'is concave upward';} + +if($fc > $fd) +{$ctod = 'is concave downward';} +elsif($fc < $fd) +{$ctod = 'is concave upward';} + +if($fd > $f10) +{$dtoten = 'is concave downward';} +elsif($fd < $f10) +{$dtoten = 'is concave upward';} + +# determine behavior on some concatenated intervals sometimes "neither" bevahiour +# use eq for string comparison == does not behave correctly for this comparison +if($tentoa eq $atob) +{$tentob = $tentoa;} +else +{$tentob = 'changes concavity at a point inside the interval';} + +if($atob eq $btoc) +{$atoc = $atob;} +else +{$atoc = 'changes concavity at a point inside the interval';} + +if($btoc eq $ctod) +{$btod = $btoc;} +else +{$btod = 'changes concavity at a point inside the interval';} + +#produce popups for each of the eight intervals above +$popup_tentoa = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity on a point inside the interval' + ], + $tentoa +); + +$popup_tentob = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $tentob +); + +$popup_atob = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $atob +); + +$popup_atoc = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $atoc +); + +$popup_btoc = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $btoc +); + +$popup_ctod = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $ctod +); + +$popup_btod = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $btod +); + +$popup_dtoten = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $dtoten +); + +# choose random subsets of intervals, paired with popup, to ask below +# use eq for string comparison == does not behave correctly for this comparison + +# one end -10 to a or d to 10 +$I1 = list_random("(-10,$a)","($d,10)"); + +if($I1 eq "(-10,$a)") +{$popup1 = $popup_tentoa;} +else +{$popup1 = $popup_dtoten;} + +# one interior a to b, b to c, or c to d +$I2 = list_random("($a,$b)","($b,$c)", "($c,$d)"); + +if($I2 eq "($a,$b)") +{$popup2 = $popup_atob;} +elsif($I2 eq "($b,$c)") +{$popup2 = $popup_btoc;} +else +{$popup2 = $popup_ctod;} + +# one concatenated -10 to b, a to c, or b to d +$I3 = list_random("(-10,$b)","($a,$c)", "($b,$d)"); + +if($I3 eq "(-10,$b)") +{$popup3 = $popup_tentob;} +elsif($I3 eq "($a,$c)") +{$popup3 = $popup_atoc;} +else +{$popup3 = $popup_btod;} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,$lower) -- (0,$upper) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,$lower) grid (10,$upper); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {$lower,...,-1,1,...,$upper} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) -- ($d,$fd); +\draw[->,red, very thick] ($d,$fd) -- (10,$f10); +\draw[red] (10,$f10) node [above right]{\(y=f^\prime(x)\)}; +END_TIKZ + +BEGIN_PGML +Suppose that [`f`] is a twice-differentiable function. + +Consider the **graph of the first derivative** [`y=f'(x)`] given below. + +[@ image($graph_image, width => 700, tex_size => 800) @]* + +Determine if the function [`f`] is concave upward, concave downward, or if the concavity of [`f`] changes at a point inside the following intervals. + +a) On the interval [`[$I1]`] the function [`f`] [_]{$popup1} + +a) On the interval [`[$I2]`] the function [`f`] [_]{$popup2} + +a) On the interval [`[$I3]`] the function [`f`] [_]{$popup3} + +END_PGML + +BEGIN_PGML_SOLUTION ++ [`f`] is concave upward on intervals where [`f''(x)>0`] and this is equivalent to saying that [`f'`] is increasing. + ++ [`f`] is concave downward on intervals where [`f''(x)<0`] and this is equivalent to saying that [`f'`] is decreasing. +END_PGML_SOLUTION + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-5-U-C/8-2-5-U-C-pw-second-der-concave-1-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-5-U-C/8-2-5-U-C-pw-second-der-concave-1-jms.pg new file mode 100644 index 0000000000..04cd234a1c --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-5-U-C/8-2-5-U-C-pw-second-der-concave-1-jms.pg @@ -0,0 +1,208 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(20 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +#intervals +# (-10,$a), ($a,$c), ($c,$e), and ($e,10) + +$a = random(-8,-6,1); +$b = $a + random(2,4,1); +$c = $b + random(2,4,1); +$d = $c + random(2,4,1); +$e = $d + random(2,3,1); + +#funciton values + +$fm10 = random(2,7,1)*random(-1,1,2); +$fa = 0; +$fb = random(2,7,1)*random(-1,1,2); +$fc = 0; +$fd = random(2,7,1)*random(-1,1,2); +$fe = 0; +$f10 = random(2,7,1)*random(-1,1,2); + +#determine intervals of increase/decrease + +if($fm10 < 0) +{$tentoa = 'concave downward'; +$tentoa_sign = 'negative';} +else +{$tentoa = 'concave upward'; +$tentoa_sign = 'positive';} + +if($fb < 0) +{$atoc = 'concave downward'; +$atoc_sign = 'negative';} +else +{$atoc = 'concave upward'; +$atoc_sign = 'positive';} + +if($fd < 0) +{$ctoe = 'concave downward'; +$ctoe_sign = 'negative';} +else +{$ctoe = 'concave upward'; +$ctoe_sign = 'positive';} + +if($f10 < 0) +{$etoten = 'concave downward'; +$etoten_sign = 'negative';} +else +{$etoten = 'concave upward'; +$etoten_sign = 'positive';} + +#produce popups +#produce increasing/decreasing popups for each of the four intervals above +$popup_tentoa = DropDown( + [ + 'increasing', + 'decreasing', + 'concave upward', + 'concave downward' + ], + $tentoa +); + +$popup_atoc = DropDown( + [ + 'increasing', + 'decreasing', + 'concave upward', + 'concave downward' + ], + $atoc +); + +$popup_ctoe = DropDown( + [ + 'increasing', + 'decreasing', + 'concave upward', + 'concave downward' + ], + $ctoe +); + +$popup_etoten = DropDown( + [ + 'increasing', + 'decreasing', + 'concave upward', + 'concave downward' + ], + $etoten +); + +#produce popups +#produce positive/negative popups for each of the four intervals above +$popup_tentoa_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $tentoa_sign +); + +$popup_atoc_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $atoc_sign +); + +$popup_ctoe_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $ctoe_sign +); + +$popup_etoten_sign = DropDown( + [ + 'increasing', + 'decreasing', + 'positive', + 'negative' + ], + $etoten_sign +); + + + +# select random two intervals +# one of two end intervals +$I1 = list_random("(-10,$a)","($e,10)"); + +if($I1 eq "(-10,$a)") +{$popup1 = $popup_tentoa; +$posneg1 = $popup_tentoa_sign;} +else +{$popup1 = $popup_etoten; +$posneg1 = $popup_etoten_sign;} + + +# one of two middle intervals +$I2 = list_random("($a,$c)","($c,$e)"); + +if($I2 eq "($c,$e)") +{$popup2 = $popup_ctoe; +$posneg2 = $popup_ctoe_sign;} +else +{$popup2 = $popup_atoc; +$posneg2 = $popup_atoc_sign;} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) .. controls ($b,$fb) .. ($c,$fc); +\draw[red, very thick] ($c,$fc) .. controls ($d,$fd) .. ($e,$fe); +\draw[->,red, very thick] ($e,$fe) -- (10,$f10); +\draw[red] ($d,$fd) node[below] {\(y=h^{\prime\prime}(x)\)}; +END_TIKZ + +BEGIN_PGML +Let [`h`] be a twice-differentiable function. + +Consider the following **graph of the second derivative** [`y=h''(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +a) The function [`h`] is [_]{$popup1} on the interval [`[$I1]`] becasue [`h''(x)`] is [_]{$posneg1} for all [`x\in[$I1].`] + +a) The function [`h`] is [_]{$popup2} on the interval [`[$I2]`] becasue [`h''(x)`] is [_]{$posneg2} for all [`x\in[$I2].`] + +END_PGML + +BEGIN_PGML_SOLUTION +[`h`] is concave upward on intervals where [`h''(x)>0`] and [`h`] is concave downward on intervals where [`h''(x)<0`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-5-U-C/8-2-5-U-C-sec-der-quart-conc-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-5-U-C/8-2-5-U-C-sec-der-quart-conc-jms.pg new file mode 100644 index 0000000000..0c3e4389f9 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-5-U-C/8-2-5-U-C-sec-der-quart-conc-jms.pg @@ -0,0 +1,104 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(20 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-6,-5,1); +$b = $a + random(4,5,1); +$c = $b + random(4,5,1); + +# fix scale by additional spacing to roots if needed +if( ($b-$a) == ($c-$b) && ($c<6) && ($c-$b)<5 ) +{$c = $c+1;} + +$k = random(-1,1,2); + +if($k > 0) +{$low = -3; +$lowp1 = -2; +$high = 9; +$highm1=8;} +else +{$high = 3; +$highm1 = 2; +$low = -9; +$lowp1=-8;} + +Context("Interval"); + +if($k > 0) +{ +$upward = List("(-7,$a)","($b,$c)","($c,7)"); +$downward = List("($a,$b)"); +} +else +{ +$downward = List("(-7,$a)","($b,$c)","($c,7)"); +$upward = List("($a,$b)"); +} + +$inflection = List("$a", "$b"); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-7,0) -- (7,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,$low) -- (0,$high) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-7,$low) grid (7,$high); +\foreach \x in {-6,-4,-2,2,4,6} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {$lowp1,...,$highm1} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-6.8}:{6.8}] (\x,{$k*(\x-$a)*(\x-$b)*(\x-$c)*(\x-$c)/200)}); +\draw[red] (7,$high-) node [below left]{\(y=f^{\prime\prime}(x)\)}; +END_TIKZ + +BEGIN_PGML +Let [`f`] be a twice-differentiable function. + +Consider the following **graph of the second derivative** [`y=f''(x)`] on the interval [`(-7,7)`]. + +[@ image($graph_image, width => 600, tex_size => 600) @]* + +a) Determine the open subintervals of [`(-7,7)`] on which the function [`f`] is concave upward or concave downward. + + Enter the intervals that you find as a list separated by commas, if there are no such intervals enter [|None|]*. + + [`f`] is concave upward on the interval(s): [_]{$upward}{20} + + [`f`] is concave downward on the interval(s): [_]{$downward}{20} + + [@helpLink('intervals')@]* + +b) List the [`x`]-coordinates of the inflection points of [`f`] in the interval [`(-7,7)`], if any. + + Enter the [`x`]-values that you find as a **list separated by commas**, if there are no such values enter [|None|]*. + + [`f`] has inflection point(s) at [`x = \,`] [_]{$inflection}{15} + +END_PGML + +BEGIN_PGML_SOLUTION +a) [`f`] is concave upward on intervals where [`f''(x)>0`] and [`f`] is concave downward on intervals where [`f''(x)<0`]. + + [`f`] is concave upward on the intervals [`[$upward]`] + + [`f`] is concave downard on the intervals [`[$downward]`] + +b) The function [`f`] has inflection points where the function is continuous and the concavity of [`f`] changes. The function [`f`] is continuous on [`(-7,7)`] because it is a differentiable function, and the concavity of [`f`] changes at [`x = [$inflection]`] so [`f`] has inflection points at [`x = [$inflection]`]. + + Note that [`f`] does **not** have an inflection point at [`x=[$c]`] because the concavity of [`f`] does not change at [`x=[$c]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-abstract-3-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-abstract-3-jms.pg new file mode 100644 index 0000000000..1e8fd2aa82 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-abstract-3-jms.pg @@ -0,0 +1,69 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(25 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = random(2, 9, 1); +$gsign = random(-1,1,2); +if($gsign == -1) +{$gsymb = '<'; +$fup = List("(0,$a)"); +$fdown = List("(-inf,0)", "($a,inf)"); +} +else +{$gsymb = '>'; +$fup = List("(-inf,0)", "($a,inf)"); +$fdown = List("(0,$a)"); +} + + +BEGIN_PGML + +Suppose that [`f`] is a twice-differentiable function, defined for all [`x \in \mathbb{R}`]. + +Further suppose that [``f''(x)=x^2 g(x) - [$a] x g(x),``] where [`g`] is a continuous function with the property that [`g(x) [$gsymb] 0,`] for all [`x \in \mathbb{R}.`] + +Determine the maximal open intervals on which the function [`f`] is concave upward and concave downward. + +Enter your answer as a **list of intervals separated by commas.** If there are no such intervals, type [|None|]*. + +a) [`f`] is concave upward on the interval(s) [_]{$fup}{20} + +b) [`f`] is concave downward on the interval(s) [_]{$fdown}{20} +END_PGML + +BEGIN_PGML_SOLUTION +First factor [``f''(x)=x^2 g(x) - [$a] x g(x) = x(x-[$a])g(x)``], and we can see that [`0=f''(x)`] has solutions [`x=0`] and [`x=[$a]`]. + +We know that [`g(x) [$gsymb] 0,`] for all [`x \in \mathbb{R}.`] + +Now can make a table of values to determine that: + +a) [`f'(x) > 0`] on [`[$fup]`], so [`f`] is concave upward on [`[$fup].`] + +b) [`f'(x) < 0`] on [`[$fdown]`], so [`f`] is concave downward on [`[$fdown].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-exp-3-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-exp-3-jms.pg new file mode 100644 index 0000000000..d8abfc78ad --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-exp-3-jms.pg @@ -0,0 +1,71 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(25 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = non_zero_random(-5, 5, 1); +$ap2 = $a + 2; +$ap4 = $a + 4; +$twiceap6 = 2*$a+6; +$c = random(-9,9,1); +$f = Formula("e^x(x^2-$ap4*x + $twiceap6)")->reduce(); +$fder = Formula("e^x(x^2-$ap2*x + $ap2)")->reduce(); +$fderder = Formula("e^x(x^2-$a*x)")->reduce(); +$fderder_fac = Formula("e^x*x(x-$a)")->reduce(); +if($a < 0) +{ +$fup = List("(-inf,$a), (0,inf)"); +$fdown = List("($a,0)"); +} +else +{ +$fup = List("(-inf,0), ($a,inf)"); +$fdown = List("(0,$a)"); +} + +BEGIN_PGML + +Suppose that [`f(x)=[$f]`] function, which is defined for all [`x \in \mathbb{R}`]. + +Determine the maximal open intervals on which the function [`f`] is concave upward and concave downward. + +Enter your answer as a **list of intervals separated by commas.** If there are no such intervals, type [|None|]*. + +a) [`f`] is concave upward on the interval(s) [_]{$fup}{20} + +b) [`f`] is concave downward on the interval(s) [_]{$fdown}{20} +END_PGML + +BEGIN_PGML_SOLUTION +First compute [`f'(x) = [$fder]`] and [`f''(x) = [$fderder] = [$fderder_fac]`]. Notice that [`0=f''(x)`] has roots [`x=0`] and [`x=[$a].`] + +Now, using that [`e^x > 0`] for all [`x`], we can make a table of values to determine that: + +a) [`f''(x) > 0`] on [`[$fup]`], so [`f`] is concave upward on [`[$fup].`] + +b) [`f''(x) < 0`] on [`[$fdown]`], so [`f`] is concave downward on [`[$fdown].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-poly-1-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-poly-1-jms.pg new file mode 100644 index 0000000000..1858e16bf3 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-poly-1-jms.pg @@ -0,0 +1,91 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(25 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = random(-4,2,1); +$b = $a + random(0,4,1); +$c = non_zero_random(-9,9,1); +$d = non_zero_random(-9,9,1); +$sign = random(-1,1,2); +$aplusb = $a + $b; +$ab = $a*$b; + +$f = Formula("($sign*x^4/2 -$sign*($a+$b)*x^3 + $sign*3*$ab*x^2 + $c*x + $d)")->reduce(); +$fder = Formula("($sign*2*x^3 -$sign*3*($a+$b)*x^2 + $sign*6*$ab*x + $c)")->reduce(); +$fderder = Formula("($sign*6*x^2 -$sign*6*($a+$b)*x + $sign*6*$ab)")->reduce(); +$fderder_fac = Formula("$sign*6*(x-$a)*(x-$b)")->reduce(); + +if($sign == -1 && $a == $b) +{ +$fup = List("None"); +$fdown = List("(-inf,$a),($b,inf)"); +} +elsif($sign == 1 && $a == $b) +{ +$fup = List("(-inf,$a),($b,inf)"); +$fdown = List("None"); +} +elsif($sign == -1) +{ +$fup = List("($a,$b)"); +$fdown = List("(-inf,$a),($b,inf)"); +} +else +{ +$fup = List("(-inf,$a),($b,inf)"); +$fdown = List("($a,$b)"); +} + + + +BEGIN_PGML + +Suppose that [``f(x) = [$f]``], which is defined for all [`x\in\mathbb{R}.`] + +Determine the maximal open intervals on which the function [`f`] is concave upward and concave downward. + +Enter your answer as a **list of intervals separated by commas**. If there are no such intervals, type [|None|]*. + +a) [`f`] is concave upward on the interval(s) [_]{$fup}{20} + +b) [`f`] is concave downward on the interval(s) [_]{$fdown}{20} +END_PGML + +BEGIN_PGML_SOLUTION +First compute and factor the second derivative: +[```f'(x) = [$fder],```] +and +[``` f''(x) = [$fderder] = [$fderder_fac].```] + +Now make a sign-chart for the second derivative to determine that: + +a) [`f''(x) > 0`] on [`[$fup]`], so [`f`] is concave upward on [`[$fup].`] + +b) [`f''(x) < 0`] on [`[$fdown]`], so [`f`] is concave downward on [`[$fdown].`] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-rational-2-jms.pg b/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-rational-2-jms.pg new file mode 100644 index 0000000000..dbdd0ae348 --- /dev/null +++ b/Contrib/UCalgary/249-8-0-0-C/8-2-6-Ap-C/8-2-6-Ap-C-rational-2-jms.pg @@ -0,0 +1,63 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Concavity and points of inflection) +## Date(25 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context("Interval"); + +$a = random(2, 5, 1)*random(-1,1,2); +$sgn = random(-1,1,2); +$g = Formula("($sgn*1)/(x-$a)")->reduce(); +$gder = Formula("(-$sgn*1)/((x-$a)^2)")->reduce(); +$gderder = Formula("($sgn*2)/((x-$a)^3)")->reduce(); +if($sgn == 1) +{ +$gup = List("($a,inf)"); +$gdown = List("(-inf,$a)"); +} +else +{ +$gup = List("(-inf,$a)"); +$gdown = List("($a,inf)"); +} + +BEGIN_PGML + +Suppose that [``g(x)=[$g]``], which is defined for all [`x\in \mathbb{R}, x\neq [$a]`]. + +Determine the maximal open intervals on which [`g`] is concave upward and concave downward. + +Enter your answer as a **list of intervals separated by commas**. If there are no such intervals, type [|None|]*. + +a. [`g`] is concave upward on the interval(s) [_]{$gup}{20} + +b. [`g`] is concave downward on the interval(s) [_]{$gdown}{20} +END_PGML + +BEGIN_PGML_SOLUTION +[``g'(x)=[$gder]``] and [``g''(x)=[$gderder]``], so we can make a sign chart to determine that [`g''(x) > 0`] on [`[$gup]`] and [`g''(x) < 0 `] on [`[$gdown]`]. + +Therefore, [`g`] is concave upward on the interval [`[$gup]`] and [`g`] is concave downward on the interval [`[$gdown].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); From fcfa54d2e74676d0fb8c52182f0f4e47826b76d7 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 12:24:05 -0600 Subject: [PATCH 06/29] Add files via upload --- .../10-0-1-R-I/10-0-1-R-I-state-mvt-jms.pg | 62 ++++ .../10-0-1-R-I-state-mvt-spec-jms.pg | 74 +++++ .../10-0-2-U-C-mvt-meaning-1-jms.pg | 76 +++++ .../10-0-2-U-C-mvt-meaning-2-jms.pg | 86 ++++++ .../10-0-2-U-C-mvt-meaning-3-jms.pg | 88 ++++++ .../10-0-2-U-C-mvt-meaning-4-jms.pg | 78 +++++ .../10-1-1-Ap-C-mvt-big-small-1-jms.pg | 79 +++++ .../10-1-1-Ap-C-mvt-big-small-2-jms.pg | 80 +++++ .../10-1-1-Ap-C-mvt-upper-lower-1-jms.pg | 69 +++++ .../10-1-1-Ap-C-mvt-upper-lower-2-jms.pg | 70 +++++ .../10-1-2-Ap-C/10-1-2-Ap-C-mvt-solar-jms.pg | 94 ++++++ .../10-1-2-Ap-C/10-1-2-Ap-C-mvt-sound-jms.pg | 96 ++++++ .../10-1-2-Ap-C-mvt-speeding-tickets-jms.pg | 101 +++++++ .../11-1-0-R-C-anti-der-defn-jms.pg | 60 ++++ .../11-1-1-An-C-anti-der-ms-1-jms.pg | 65 ++++ .../11-1-1-An-C-anti-der-ms-2-jms.pg | 67 ++++ .../11-1-1-An-C/11-1-1-An-C-anti-mc-1-jms.pg | 54 ++++ .../11-1-2-Ap-C-fcn-anti-der-1-jms.pg | 61 ++++ .../11-1-2-Ap-C-fcn-anti-der-2-jms.pg | 61 ++++ .../11-1-2-Ap-C-fcn-anti-der-3-jms.pg | 61 ++++ .../11-2-1-R-C-two-anti-der-1-jms.pg | 75 +++++ .../11-2-2-U-C-two-anti-der-gph-jms.pg | 75 +++++ .../11-2-3-U-C-two-anti-der-mc-jms.pg | 45 +++ .../11-3-1-Ap-I/11-3-1-Ap-I-ivp-1-jms.pg | 68 +++++ .../11-3-1-Ap-I/11-3-1-Ap-I-ivp-2-jms.pg | 68 +++++ .../11-3-1-Ap-I/11-3-1-Ap-I-ivp-3-jms.pg | 66 ++++ .../11-5-1-Ap-C-sub-anti-der-1-jms.pg | 64 ++++ .../11-5-1-Ap-C-sub-anti-der-2-jms.pg | 70 +++++ .../11-5-1-Ap-C-sub-anti-der-3-jms.pg | 78 +++++ .../11-5-1-Ap-C-sub-anti-der-4-mc-jms.pg | 48 +++ .../11-5-1-Ap-C-sub-anti-der-5-mc-jms.pg | 45 +++ .../11-5-2-U-C/11-5-2-U-C-chain-sub-jms.pg | 38 +++ .../11-5-4-Ap-C/11-5-4-Ap-C-dx-1-jms.pg | 60 ++++ .../11-5-4-Ap-C/11-5-4-Ap-C-dx-2-jms.pg | 61 ++++ .../11-5-4-Ap-C/11-5-4-Ap-C-dx-3-jms.pg | 59 ++++ .../9-1-0-R-C/9-1-0-R-C-loc-ext-def-2-jms.pg | 63 ++++ .../9-1-0-R-C/9-1-0-R-C-loc-ext-def-jms.pg | 64 ++++ .../9-1-1-U-C/9-1-1-U-C-pw-loc-ext-1-jms.pg | 181 +++++++++++ .../9-1-1-U-C/9-1-1-U-C-quart-ext-jms.pg | 103 +++++++ .../9-1-2-U-C/9-1-2-U-C-pw-der-ext-1-jms.pg | 189 ++++++++++++ .../9-1-2-U-C-pw-der-ext-2-no-int-jms.pg | 144 +++++++++ .../9-1-3-Ap-C/9-1-3-Ap-C-fdt-abs-jms-1.pg | 125 ++++++++ .../9-1-3-Ap-C/9-1-3-Ap-C-fdt-jms-1.pg | 103 +++++++ .../9-1-4-Ap-C/9-1-4-Ap-C-danny-1.pg | 53 ++++ .../9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-1.pg | 89 ++++++ .../9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-2.pg | 88 ++++++ .../9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-3.pg | 191 ++++++++++++ .../9-2-1-R-C/9-2-1-R-C-crit-sing-def-jms.pg | 81 +++++ .../9-2-3-U-I/9-2-3-U-I-crit-sing-tf-jms.pg | 70 +++++ .../9-2-3-U-I/9-2-3-U-I-fermat-evt-jms.pg | 68 +++++ .../9-3-0-R-C/9-3-0-R-C-glob-ext-def-2-jms.pg | 64 ++++ .../9-3-0-R-C/9-3-0-R-C-glob-ext-def-jms.pg | 66 ++++ .../9-3-2-U-C-loc-glob-ext-ms-cmm.pg | 87 ++++++ .../9-3-2-U-C-loc-glob-ext-ms-cmm.png | Bin 0 -> 15431 bytes .../9-3-2-U-C-pw-loc-glob-ext-1-jms.pg | 286 ++++++++++++++++++ .../9-3-3-U-C/9-3-3-U-C-pw-glob-ext-1-jms.pg | 211 +++++++++++++ .../9-3-4-U-C-pw-der-glob-ext-jms.pg | 131 ++++++++ .../9-4-1-R-A/9-4-1-R-A-evt-jms.pg | 71 +++++ .../9-4-3-Ap-C/9-4-3-Ap-C-closed-int-jms-1.pg | 102 +++++++ .../9-4-3-Ap-C/9-4-3-Ap-C-closed-int-jms-2.pg | 93 ++++++ .../9-5-1-An-C/9-5-1-An-C-box-cost-jms.pg | 66 ++++ .../9-5-1-An-C-cylinder-set-up-jms.pg | 86 ++++++ .../9-5-1-An-C/9-5-1-An-C-fence-set-up-jms.pg | 82 +++++ .../9-5-1-An-C-open-box-set-up-jms.pg | 85 ++++++ .../9-5-2-Ap-C-box-cost-full-jms.pg | 101 +++++++ .../9-5-2-Ap-C-cylinder-cost-jms.pg | 57 ++++ .../9-5-2-Ap-C/9-5-2-Ap-C-fence-full-jms.pg | 70 +++++ .../9-5-2-Ap-C-open-box-full-jms.pg | 85 ++++++ 68 files changed, 5757 insertions(+) create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-0-1-R-I/10-0-1-R-I-state-mvt-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-0-1-R-I/10-0-1-R-I-state-mvt-spec-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-1-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-2-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-3-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-4-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-big-small-1-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-big-small-2-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-upper-lower-1-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-upper-lower-2-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-solar-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-sound-jms.pg create mode 100644 Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-speeding-tickets-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-1-0-R-C/11-1-0-R-C-anti-der-defn-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-der-ms-1-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-der-ms-2-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-mc-1-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-1-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-2-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-3-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-2-1-R-C/11-2-1-R-C-two-anti-der-1-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-2-2-U-C/11-2-2-U-C-two-anti-der-gph-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-2-3-U-C/11-2-3-U-C-two-anti-der-mc-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-1-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-2-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-3-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-1-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-2-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-3-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-4-mc-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-5-mc-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-5-2-U-C/11-5-2-U-C-chain-sub-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-1-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-2-jms.pg create mode 100644 Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-3-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-0-R-C/9-1-0-R-C-loc-ext-def-2-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-0-R-C/9-1-0-R-C-loc-ext-def-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-1-U-C/9-1-1-U-C-pw-loc-ext-1-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-1-U-C/9-1-1-U-C-quart-ext-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-2-U-C/9-1-2-U-C-pw-der-ext-1-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-2-U-C/9-1-2-U-C-pw-der-ext-2-no-int-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-3-Ap-C/9-1-3-Ap-C-fdt-abs-jms-1.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-3-Ap-C/9-1-3-Ap-C-fdt-jms-1.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-danny-1.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-1.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-2.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-3.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-2-1-R-C/9-2-1-R-C-crit-sing-def-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-2-3-U-I/9-2-3-U-I-crit-sing-tf-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-2-3-U-I/9-2-3-U-I-fermat-evt-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-3-0-R-C/9-3-0-R-C-glob-ext-def-2-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-3-0-R-C/9-3-0-R-C-glob-ext-def-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.png create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-pw-loc-glob-ext-1-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-3-3-U-C/9-3-3-U-C-pw-glob-ext-1-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-3-4-U-C/9-3-4-U-C-pw-der-glob-ext-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-4-1-R-A/9-4-1-R-A-evt-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-4-3-Ap-C/9-4-3-Ap-C-closed-int-jms-1.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-4-3-Ap-C/9-4-3-Ap-C-closed-int-jms-2.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-box-cost-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-cylinder-set-up-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-fence-set-up-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-open-box-set-up-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-box-cost-full-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-cylinder-cost-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-fence-full-jms.pg create mode 100644 Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-open-box-full-jms.pg diff --git a/Contrib/UCalgary/249-10-0-0-I/10-0-1-R-I/10-0-1-R-I-state-mvt-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-0-1-R-I/10-0-1-R-I-state-mvt-jms.pg new file mode 100644 index 0000000000..21717df622 --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-0-1-R-I/10-0-1-R-I-state-mvt-jms.pg @@ -0,0 +1,62 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(2 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(-5,5,1); +$b = $a + random(2,4,1); + +$quant = DropDown( + [ + 'for all', + 'for some' + ], + 'for some' +); + +$cont = DropDown( + [ + 'continuous', + 'differentiable', + 'constant' + ], + 'continuous' +); + + +$diff = DropDown( + [ + 'continuous', + 'differentiable', + 'constant' + ], + 'differentiable' +); + + +BEGIN_PGML +Complete the following statement of the **Mean Value Theoem** for the function [`f`] on the interval [`[[$a],[$b]].`] + +If [`f`] is [_]{$cont} on the closed interval [`[[$a],[$b]]`] and [`f`] is [_]{$diff} on the open interval [`([$a],[$b]),`] then [`f\left( \right.`][_]{$b}{2} [`\left.\right) - f\left( \right.`][_]{$a}{2} [`\left.\right) = f'(c)\left([$b]\right. - `][_]{$a}{2}[`\left.\right),`] [_]{$quant} [`c`] in the open interval [`([$a],[$b]).`] + +END_PGML + + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-0-1-R-I/10-0-1-R-I-state-mvt-spec-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-0-1-R-I/10-0-1-R-I-state-mvt-spec-jms.pg new file mode 100644 index 0000000000..29949105ac --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-0-1-R-I/10-0-1-R-I-state-mvt-spec-jms.pg @@ -0,0 +1,74 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(2 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(-5,5,1); +$b = $a + random(2,4,1); + +$c = non_zero_random(-3,3,1); +$d = random(-2,2,1); + +$g = Formula("x^2 + $c*x+$d")->reduce(); + +$gb = Compute("($b)^2 + $c*$b+$d"); +$ga = Compute("($a)^2 + $c*$a+$d"); + +$ans = Compute("($gb - $ga)/($b-$a)"); + +$quant = DropDown( + [ + 'for any number', + 'there exists a number' + ], + 'there exists a number' +); + +$cont = DropDown( + [ + 'continuous', + 'differentiable', + 'constant' + ], + 'continuous' +); + + +$diff = DropDown( + [ + 'continuous', + 'differentiable', + 'constant' + ], + 'differentiable' +); + + +BEGIN_PGML +Complete the following statement of the **Mean Value Theoem** for the function [`g(x) = [$g]`] on the interval [`[[$a],[$b]].`] + +Since [`g`] is [_]{$cont} on the closed interval [`[[$a],[$b]]`] and [`g`] is [_]{$diff} on the open interval [`([$a],[$b]),`] the Mean Value Theorem guarantees that [_]{$quant} [`c`] in the open interval [`([$a],[$b])`] we have [`g'(c) = \,`] [_]{$ans}{10} (the value of this blank should be a number). +END_PGML + +BEGIN_PGML_SOLUTION +Mean Value Theorem guarantees that [```g'(c) = \frac{g([$b]) - g([$a])}{[$b]-[$a]} = \frac{[$gb]-([$ga])}{[$b]-[$a]} = [$ans]```] for some [`c \in ([$a],[$b]).`] +END_PGML_SOLUTION + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-1-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-1-jms.pg new file mode 100644 index 0000000000..fc79ae1573 --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-1-jms.pg @@ -0,0 +1,76 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Rates of change - engineering and physics) +## Date(3 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(0,5,1); +$b = $a + random(2,5,1); +$bminusa = $b - $a; +$fa = non_zero_random(1,9,1); +$fb = $fa + random(5,20,1); +$fbminusfa = $fb-$fa; +$avg = Compute("($fb-$fa)/($b-$a)"); + + +$equal = DropDown( + [ + 'less than', + 'equal to', + 'greater than' + ], + 'equal to' +); + +$quant = DropDown( + [ + 'for all', + 'for at least one', + 'for no' + ], + 'for at least one' +); + + +BEGIN_PGML +Suppose that the concentration of a single chemical product [`A`] in a reversible chemical reaction [``X + Y \rightleftharpoons A``] is given by a differentiable function [``[A] = f(t)``], where [`t\geq 0`] is time measured in seconds and the concentration of [`A`] is measured in moles per litre (mol/L). The rate of the chemical reaction is the change in concentration of [`A`] with respect to time, measured in mol/L per second. + +You take samples and measure the concentration of [`A`] at various times during the reaction to try to understand the function [`f`]. Suppose that the concentration at time [`t=[$a]`] is [`[A]_{t=[$a]} = f([$a]) = [$fa],`] and suppose that the concentration at time [`t=[$b]`] is [`[A]_{t=[$b]} = f([$b]) = [$fb].`] + ++ The average reaction rate, over the time interval [`[[$a],[$b]]`] is equal to [_]{$avg}{10} (mol/L) per second. + ++ By the Mean Value Theorem, the instantaneous reaction rate [``\frac{d[A]}{dt} = f'(t)``] must be [_]{$equal} [_]{$avg}{10} (mol/L) per second [_]{$quant} point(s) in time in the interval [`([$a],[$b]).`] + +END_PGML + +BEGIN_PGML_SOLUTION +The average reaction rate, over the time interval [`[[$a],[$b]]`] is equal to [``\frac{f([$b])-f([$a])}{[$b]-[$a]} = \frac{[$fb]-[$fa]}{[$bminusa]} = \frac{[$fbminusfa]}{[$bminusa]}``] (mol/L) per second. + +By the Mean Value Theorem, the instantaneous reaction rate [``\frac{d[A]}{dt} = f'(t)``] must be **equal to** the average rate of change, [``\frac{[$fbminusfa]}{[$bminusa]}``] (mol/L) per second, **for at least one point** in time in the interval [`([$a],[$b]).`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-2-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-2-jms.pg new file mode 100644 index 0000000000..aa7854feb4 --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-2-jms.pg @@ -0,0 +1,86 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(3 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(0,5,1); +$b = $a + random(2,5,1); +$bminusa = $b - $a; +$fa = non_zero_random(1,9,1); +$fb = $fa + random(5,20,1); +$fbminusfa = $fb-$fa; +$avg = Compute("($fb-$fa)/($b-$a)"); + + +$average = DropDown( + [ + 'average velocity', + 'average acceleration', + 'instantaneous velocity', + 'instantaneous acceleration' + ], + 'average velocity' +); + +$instant = DropDown( + [ + 'average velocity', + 'average acceleration', + 'instantaneous velocity', + 'instantaneous acceleration' + ], + 'instantaneous velocity' +); + + +$quant = DropDown( + [ + 'for all', + 'for at least one', + 'for no' + ], + 'for at least one' +); + + +BEGIN_PGML +The position of a satellite in near Earth orbit is given by a differentiable function [`s=s(t),`] where [`t\geq 0`] is measured in seconds and the postion is measured in kilometres. An observer on the International Space Station is able to precisely measure the position of the satellite using laser-based optical and radar-based instruments. Suppose that the position at time [`t=[$a]`] is [`s([$a]) = [$fa] \, \rm{km},`] and suppose that the position at time [`t=[$b]`] is [`s([$b]) = [$fb] \, \rm{km}.`] + ++ With the information given, we can compute that the [_]{$average} of the satellite over the time interval [`[[$a],[$b]]`] is equal to [_]{$avg}{10} kilometres per second. + ++ By the Mean Value Theorem, the [_]{$instant} of the satellite must be equal to [_]{$avg}{10} kilometres per second [_]{$quant} point(s) in time in the interval [`([$a],[$b]).`] + +END_PGML + +BEGIN_PGML_SOLUTION +The **average velocity** of the satellite over the time interval [`[[$a],[$b]]`] is equal to [``\frac{s([$b])-s([$a])}{[$b]-[$a]}= \frac{[$fb]-[$fa]}{[$bminusa]} =\frac{[$fbminusfa]}{[$bminusa]}``] kilometres per second. + +By the Mean Value Theorem, the **instantaneous velocity** of the satellite must be equal to the average velocity, [``\frac{[$fbminusfa]}{[$bminusa]}``] kilometres per second, **for at least one point** in time in the interval [`([$a],[$b]).`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-3-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-3-jms.pg new file mode 100644 index 0000000000..2d287be7d4 --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-3-jms.pg @@ -0,0 +1,88 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(3 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-5,5,1); +$b = $a + random(2,7,1); +$bminusa = $b - $a; +$fa = non_zero_random(-20,20,1); +$fb = non_zero_random(-20,20,1); +$fbminusfa = $fb-$fa; +$avg = Compute("($fb-$fa)/($b-$a)"); + +$secant = DropDown( + [ + 'secant line', + 'tangent line', + 'vertical asymptote', + 'instantaneous acceleration' + ], + 'secant line' +); + +$tangent = DropDown( + [ + 'secant line', + 'tangent line', + 'vertical asymptote', + 'instantaneous acceleration' + ], + 'tangent line' +); + + +$quant = DropDown( + [ + 'for all', + 'for at least one', + ], + 'for at least one' +); + + +BEGIN_PGML +Let [`g`] be a differentiable function that is defined for all [`x \in \mathbb{R}.`] Suppose that the points [`([$a],[$fa])`] and [`([$b],[$fb])`] are both on the graph of [`y=g(x).`] + ++ Since these points are on the graph of [`y=g(x),`] we have [`g([$a]) = \,`] [_]{$fa}{5} and [`g([$b]) = \,`] [_]{$fb}{5}. + ++ The slope of the [_]{$secant} joining the points [`([$a],[$fa])`] and [`([$b],[$fb])`] is equal to [_]{$avg}{10}. + ++ By the Mean Value Theorem, the slope of the [_]{$tangent} to [`y=g(x)`] is equal to [_]{$avg}{10} [_]{$quant} point(s) in in the interval [`([$a],[$b]).`] + +END_PGML + +BEGIN_PGML_SOLUTION ++ Since [`([$a],[$fa])`] and [`([$b],[$fb])`] are on the graph of [`y=g(x),`] we have [`g([$a]) = [$fa]`] and [`g([$b]) = [$fb].`] + ++ The slope of the **secant line** joining the points [`([$a],[$fa])`] and [`([$b],[$fb])`] is equal to [``\frac{g([$b]) - g([$a])}{[$b]-[$a]} = \frac{[$fbminusfa]}{[$bminusa]}.``] + ++ By the Mean Value Theorem, the slope of the **tangent line** to [`y=g(x)`] is equal to the slope of the secant line joining [`([$a],[$fa]),`] which is [``\frac{[$fbminusfa]}{[$bminusa]},``] for at least one point(s) in in the interval [`([$a],[$b]).`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-4-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-4-jms.pg new file mode 100644 index 0000000000..0732411930 --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-0-2-U-C/10-0-2-U-C-mvt-meaning-4-jms.pg @@ -0,0 +1,78 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(3 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-5,5,1); +$b = $a + random(2,7,1); +$bminusa = $b - $a; +$fa = non_zero_random(-20,20,1); +$m_num = non_zero_random(-5,5,1); +$m_den = random(2,5,1); +$m = ($m_num)/($m_den); +$fb = Compute("$m*$bminusa + $fa"); +$fbminusfa = $fb-$fa; +$secant_eq = Formula("$m*(x-$a) + $fa")->reduce(); + +Context("Interval"); +$int = Compute("($a,$b)"); + +$parallel = DropDown( + [ + 'equal', + 'parallel', + 'perpendicular', + ], + 'parallel' +); + + +BEGIN_PGML +Let [`f`] be a differentiable function that is defined for all [`x \in \mathbb{R}.`] + +Suppose that the point [`([$a],[$fa])`] is on the graph of [`y=f(x),`] and suppose that the slope of the secant line joining the points [`([$a],f([$a]))`] and [`([$b], f([$b]))`] is equal to [``\frac{[$m_num]}{[$m_den]}.``] + ++ With the information given, we can determine that [`f([$a]) = \,`] [_]{$fa}{5} and [`f([$b]) = \,`] [_]{$fb}{5}. + ++ The equation of the secant line joining the points [`([$a],f([$a]))`] and [`([$b], f([$b]))`] is equal to [_]{$secant_eq}{20}. + ++ By the Mean Value Theorem, the slope of the tangent line to [`y=f(x)`] is equal to [``\frac{[$m_num]}{[$m_den]}``] for at least one point in in the open interval [_]{$int}{10}, and at such a point the tangent line is [_]{$parallel} to the secant line joining the points [`([$a],f([$a]))`] and [`([$b], f([$b])).`] + +END_PGML + +BEGIN_PGML_SOLUTION ++ Since the point [`([$a],[$fa])`] is on the graph of [`f`], we have that [`f([$a]) = [$fa]`] and to find [`f([$b])`] we first need to find the equation of the secant line. + ++ The equation of the secant line joining the points [`([$a],f([$a]))`] and [`([$b], f([$b]))`] is equal to [`[$secant_eq]`] because the slope of the line is [`\frac{[$m_num]}{[$m_den]}=[$m]`] and the point [`([$a],[$fa])`] is on the line. + ++ We can now determine that [`f([$b]) = [$m]([$b]-[$a]) + [$fa] = [$fb]`] since the point [`([$b], f([$b]))`] is on the graph of [`y=f(x)`] and it is also on the secant line joining the points [`([$a],f([$a]))`] and [`([$b], f([$b])).`] + ++ By the Mean Value Theorem, the slope of the tangent line to [`y=f(x)`] is equal to [``\frac{[$m_num]}{[$m_den]}``] for at least one point in in the open interval [`[$int],`] and at such a point the tangent line is **parallel** to the secant line joining the points [`([$a],f([$a]))`] and [`([$b], f([$b])).`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-big-small-1-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-big-small-1-jms.pg new file mode 100644 index 0000000000..142f8a9e33 --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-big-small-1-jms.pg @@ -0,0 +1,79 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(2 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-5,5,1); +$b = $a + random(2,5,1); +$bminusa = $b - $a; +$fb = non_zero_random(-9,9,1); +$l = non_zero_random(-2,3,1); +$u = $l + random(3,4,1); +$lbma = $l*$bminusa; +$ubma = $u*$bminusa; +$fal = Compute("$fb-$u*($b-$a)"); +$fau = Compute("$fb-$l*($b-$a)"); + +#version largest / smallest +$ver = random(-1,1,2); +if($ver == -1) +{ +$bigsmall = 'smallest'; +$ans = $fal; +$f = Compute("$u(x-$b)+$fb"); +$fans = Formula("$u(x-$b)+$fb")->reduce(); +} +else +{$bigsmall = 'largest'; +$ans = $fau; +$f = Compute("$l(x-$b)+$fb"); +$fans = Formula("$l(x-$b)+$fb")->reduce(); +} + +BEGIN_PGML +Let [`f`] be a differentiable function with [`f([$b]) = [$fb],`] and suppose that [`[$l] \leq f'(x) \leq [$u]`] for all [`x`] in the interval [`([$a],[$b]).`] + +This information and the Mean Value Theorem allows us to determine that [$bigsmall] possible value of [`f([$a])`] is equal to [_]{$ans}{5}. + +The function [`f(x) = \, `] [_]{$f}{20} satisfies the above properties and achieves the [$bigsmall] possible value of [`f([$a]).`] +END_PGML + +BEGIN_PGML_SOLUTION +Since [`f`] is differentiable, we know that [`f`] is differentiable on [`([$a],[$b])`] and [`f`] is continuous on [`[[$a],[$b]].`] We can therefore apply the Mean Value Theorem, which states that for some [`c \in ([$a],[$b])`] we have +[``` f'(c) = \frac{f([$b]) - f([$a])}{[$b]-[$a]} = \frac{[$fb] - f([$a])}{[$bminusa]}.```] +By assumption [`[$l] \leq f'(c) \leq [$u]`], so we can rearrange the inequality +[```[$l] \leq \frac{[$fb] - f([$a])}{[$bminusa]} \leq [$u]```] +to get that +[```[$l]([$bminusa]) \leq [$fb] - f([$a]) \leq [$u]([$bminusa]) \qquad \Longrightarrow \qquad [$lbma] - [$fb] \leq -f([$a]) \leq [$ubma] - [$fb],```] +which after multiplying the inequality by [`(-1)`] becomes: +[``` [$fal] \leq f([$a]) \leq [$fau].```] +Therefore, the [$bigsmall] possible value of [`f([$a])`] is [`[$ans].`] + +The linear function [`f(x) = [$fans]`] is the unique function that satisfies the above properties and achieves the [$bigsmall] possible value of [`f([$a]).`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-big-small-2-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-big-small-2-jms.pg new file mode 100644 index 0000000000..fc0db3a961 --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-big-small-2-jms.pg @@ -0,0 +1,80 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(2 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-5,5,1); +$b = $a + random(2,4,1); +$bminusa = $b - $a; +$fa = non_zero_random(-9,9,1); +$l = non_zero_random(-2,3,1); +$u = $l + random(3,5,1); +$lbma = $l*$bminusa; +$ubma = $u*$bminusa; +$fbl = Compute("$l*($b-$a)+$fa"); +$fbu = Compute("$u*($b-$a)+$fa"); + + +#version largest / smallest +$ver = random(-1,1,2); +if($ver == -1) +{ +$bigsmall = 'smallest'; +$ans = $fbl; +$f = Compute("$l*(x-$a)+$fa"); +$fans = Formula("$l*(x-$a)+$fa")->reduce(); +} +else +{$bigsmall = 'largest'; +$ans = $fbu; +$f = Compute("$u*(x-$a)+$fa"); +$fans = Formula("$u*(x-$a)+$fa")->reduce(); +} + +BEGIN_PGML +Let [`f`] be a differentiable function with [`f([$a]) = [$fa],`] and suppose that [`[$l] \leq f'(x) \leq [$u]`] for all [`x`] in the interval [`([$a],[$b]).`] + +This information and the Mean Value Theorem allows us to determine that the [$bigsmall] possible value of [`f([$b])`] is equal to [_]{$ans}{5}. + +The function [`f(x) = \, `] [_]{$f}{20} satisfies the above properties and achieves the [$bigsmall] possible value of [`f([$b]).`] +END_PGML + +BEGIN_PGML_SOLUTION +Since [`f`] is differentiable, we know that [`f`] is differentiable on [`([$a],[$b])`] and [`f`] is continuous on [`[[$a],[$b]].`] We can therefore apply the Mean Value Theorem, which states that for some [`c \in ([$a],[$b])`] we have +[``` f'(c) = \frac{f([$b]) - f([$a])}{[$b]-[$a]} = \frac{f([$b]) - [$fa]}{[$bminusa]}.```] +By assumption [`[$l] \leq f'(c) \leq [$u]`], so we can rearrange the inequality +[```[$l] \leq \frac{f([$b]) - [$fa]}{[$bminusa]} \leq [$u]```] +to get that +[```[$l]([$bminusa]) \leq f([$b]) - [$fa] \leq [$u]([$bminusa]) \qquad \Longrightarrow \qquad [$lbma] + [$fa] \leq f([$b]) \leq [$ubma] + [$fa],```] +which we can simplify to: +[``` [$fbl] \leq f([$b]) \leq [$fbu].```] +Therefore, the [$bigsmall] possible value of [`f([$b])`] is [`[$ans].`] + +The linear function [`f(x) = [$fans]`] is the unique function that satisfies the above properties and achieves the [$bigsmall] possible value of [`f([$b]).`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-upper-lower-1-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-upper-lower-1-jms.pg new file mode 100644 index 0000000000..4f6ef55628 --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-upper-lower-1-jms.pg @@ -0,0 +1,69 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(2 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-5,5,1); +$b = $a + random(2,4,1); +$bminusa = $b - $a; +$fb = non_zero_random(-9,9,1); +$l = non_zero_random(-2,3,1); +$u = $l + random(3,4,1); +$lbma = $l*$bminusa; +$ubma = $u*$bminusa; +$fal = Compute("$fb-$u*($b-$a)"); +$fau = Compute("$fb-$l*($b-$a)"); + +$popup = DropDown( + [ + 'Extreme Value Theorem', + 'Intermediate Value Theorem', + 'Mean Value Theorem' + ], + 'Mean Value Theorem' +); + + +BEGIN_PGML +Let [`f`] be a differentiable function with [`f([$b]) = [$fb],`] and suppose that [`[$l] \leq f'(x) \leq [$u]`] for all [`x`] in the interval [`([$a],[$b]).`] + +This information and the [_]{$popup} allows us to determine that [_]{$fal}{2} [` \leq f([$a]) \leq `] [_]{$fau}{2}. +END_PGML + +BEGIN_PGML_SOLUTION +Since [`f`] is differentiable, we know that [`f`] is differentiable on [`([$a],[$b])`] and [`f`] is continuous on [`[[$a],[$b]].`] We can therefore apply the Mean Value Theorem, which states that for some [`c \in ([$a],[$b])`] we have +[``` f'(c) = \frac{f([$b]) - f([$a])}{[$b]-[$a]} = \frac{[$fb] - f([$a])}{[$bminusa]}.```] +By assumption [`[$l] \leq f'(c) \leq [$u]`], so we can rearrange the inequality +[```[$l] \leq \frac{[$fb] - f([$a])}{[$bminusa]} \leq [$u]```] +to get that +[```[$l]([$bminusa]) \leq [$fb] - f([$a]) \leq [$u]([$bminusa]) \qquad \Longrightarrow \qquad [$lbma] - [$fb] \leq -f([$a]) \leq [$ubma] - [$fb],```] +which after multiplying the inequality by [`(-1)`] becomes: +[``` [$fal] \leq f([$a]) \leq [$fau].```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-upper-lower-2-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-upper-lower-2-jms.pg new file mode 100644 index 0000000000..9ca180c5f4 --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-1-1-Ap-C/10-1-1-Ap-C-mvt-upper-lower-2-jms.pg @@ -0,0 +1,70 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Mean value theorem) +## Date(2 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-5,5,1); +$b = $a + random(2,4,1); +$bminusa = $b - $a; +$fa = non_zero_random(-9,9,1); +$l = non_zero_random(-2,3,1); +$u = $l + random(3,5,1); +$lbma = $l*$bminusa; +$ubma = $u*$bminusa; +$fbl = Compute("$l*($b-$a)+$fa"); +$fbu = Compute("$u*($b-$a)+$fa"); + + +$popup = DropDown( + [ + 'Extreme Value Theorem', + 'Intermediate Value Theorem', + 'Mean Value Theorem' + ], + 'Mean Value Theorem' +); + + +BEGIN_PGML +Let [`f`] be a differentiable function with [`f([$a]) = [$fa],`] and suppose that [`[$l] \leq f'(x) \leq [$u]`] for all [`x`] in the interval [`([$a],[$b]).`] + +This information and the [_]{$popup} allows us to determine that [_]{$fbl}{5}[`\, \leq f([$b]) \leq\, `] [_]{$fbu}{5}. +END_PGML + +BEGIN_PGML_SOLUTION +Since [`f`] is differentiable, we know that [`f`] is differentiable on [`([$a],[$b])`] and [`f`] is continuous on [`[[$a],[$b]].`] We can therefore apply the Mean Value Theorem, which states that for some [`c \in ([$a],[$b])`] we have +[``` f'(c) = \frac{f([$b]) - f([$a])}{[$b]-[$a]} = \frac{f([$b]) - [$fa]}{[$bminusa]}.```] +By assumption [`[$l] \leq f'(c) \leq [$u]`], so we can rearrange the inequality +[```[$l] \leq \frac{f([$b]) - [$fa]}{[$bminusa]} \leq [$u]```] +to get that +[```[$l]([$bminusa]) \leq f([$b]) - [$fa] \leq [$u]([$bminusa]) \qquad \Longrightarrow \qquad [$lbma] + [$fa] \leq f([$b]) \leq [$ubma] + [$fa],```] +which we can simplify to: +[``` [$fbl] \leq f([$b]) \leq [$fbu].```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-solar-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-solar-jms.pg new file mode 100644 index 0000000000..c9effd32a1 --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-solar-jms.pg @@ -0,0 +1,94 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Rates of change - general) +## Date(3 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.001, tolType => 'absolute'); + +$limit = 91.332; +$distance = random(30,50,1); #distance in km +$time = floor(60*$distance/$limit) + non_zero_random(-5,5,5); #time in minutes +$avg = Compute("($distance)/($time/60)"); #average speed in km/h + +$mvt = DropDown( + [ + 'The Extreme Value Theorem', + 'The Intermediate Value Theorem', + 'The Mean Value Theorem', + 'The Fundamental Theorem of Calculus' + ], + 'The Mean Value Theorem' +); + +if($avg > $limit) +{$yn = 'Yes';} +else +{$yn = 'There is not enough information to decide';} + +$popup_yn = DropDown( + [ + 'Yes', + 'No', + 'There is not enough information to decide' + ], + $yn +); + + + +BEGIN_PGML +A team of engineers is attemping to build a new solar-powered vehicle that would break the land speed record for a solar-powered car. In a recent test, the vehicle travelled [`[$distance]\, \rm{km}`] in [`[$time]`] minutes. + ++ The average speed of the test vechicle in kilometres per hour was [_]{$avg}{5} [`\rm{km/h}.`] + +According to Wikipedia, as of 2014 the land speed record for a solar powerd car is [`[$limit] \, \rm{km/h}.`] + ++ Did the test vehicle break land speed record for a solar car at any point during the test? + + [_]{$popup_yn} + ++ Which theorem from calculus is the most relevant to answering the previous question? + + [_]{$mvt} + +END_PGML + +BEGIN_PGML_SOLUTION ++ Fist convert the time to hours: [``[$time] \, \rm{min} = \frac{[$time]}{60} \, \rm{h}.``] The average speed of the test vehichle was [``\frac{[$distance] \, \rm{km}}{[$time]/60 \, \rm{h}} = [$avg] \, \rm{km/h}.``] + ++ We can now attempt to apply the **Mean Value Theorem** to determine if the team's new vehicle broke the landspeed record at any point during the test. + + The Mean Value Theorem tells us that the vehicle's instantaneous velocity was equal to its average velocity of [``[$avg] \, \rm{km/h}``] at one or more points in time during the test. + + The solar-powered land speed record as of 2014 was [`[$limit] \, \rm{km/h}.`] + + + If the average velocity of the test vehicle was higher than the landspeed record, then we know that the test vehicle broke the solar-powered land speed record. + + + If the average velocity of the test vehicle was lower than the solar-powered land speed record, then we do not know if the test vehicle broke the record speed. It could be that the record was broken, but the vehicle travelled for a long time well below the record speed making the average speed over the course of the test much lower than the record speed. + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-sound-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-sound-jms.pg new file mode 100644 index 0000000000..58e4f92d6b --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-sound-jms.pg @@ -0,0 +1,96 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Rates of change - general) +## Date(3 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.001, tolType => 'absolute'); + +$limit = 343; +$distance = random(700,900,5); #distance in km +$time = floor((1000*$distance)/(60*$limit)) + non_zero_random(-10,10,5); #time in minutes +$avg = Compute("(1000*$distance)/(60*$time)"); #average velocity in m/s +$second = $time*60; #time in seconds +$metres = $distance*1000; #distance in metres + +$mvt = DropDown( + [ + 'The Extreme Value Theorem', + 'The Intermediate Value Theorem', + 'The Mean Value Theorem', + 'The Fundamental Theorem of Calculus' + ], + 'The Mean Value Theorem' +); + +if($avg > $limit) +{$yn = 'Yes';} +else +{$yn = 'There is not enough information to decide';} + +$popup_yn = DropDown( + [ + 'Yes', + 'No', + 'There is not enough information to decide' + ], + $yn +); + + + +BEGIN_PGML +A team of engineers is attemping to build a new supersonic (faster than sound) passenger aircraft. In a recent test, the prototype plane travelled [`[$distance]\, \rm{km}`] in [`[$time]`] minutes, based on radar measurements from the airport's air traffic control tower. + ++ The average speed of the prototype plane during the test, in **metres per second**, was [_]{$avg}{5} [`\rm{m/s}.`] + +The speed of sound in air is approximately [`[$limit] \, \rm{m/s}.`] + ++ Did the prototype plane break the sound barrier (travel faster than the speed of sound) at any point during the test? + + [_]{$popup_yn} + ++ Which theorem from calculus is the most relevant to answering the previous question? + + [_]{$mvt} + +END_PGML + +BEGIN_PGML_SOLUTION ++ First convert the time to seconds: [``[$time] \, \rm{min} = 60\, \rm{s/min} \times [$time]\, \rm{min} = [$second]\, \rm{s},``] and convert the distance travelled to metres: [``[$distance] \, \rm{km} = 1000 \rm{m/km} \times [$distance] \, \rm{km} = [$metres] \, \rm{m}.``] The average speed of the prototype plane was [``\frac{[$metres] \, \rm{m}}{[$second] \, \rm{s}} = [$avg] \, \rm{m/s}.``] + ++ We can now attempt to apply the **Mean Value Theorem** to determine if the prototype broke the sound barrier at any point during the test. + + The Mean Value Theorem tells us that the prototype's instantaneous velocity was equal to its average velocity of [``[$avg] \, \rm{m/s}``] at one or more points in time during the test. + + The speed of sound in air is approximately [`[$limit] \, \rm{m/s}.`] + + + If the prototype's average velocity is higher than the speed of sound, then we know that the test vehicle broke the sound barrier. + + + If the prototype's average velocity is lower than the speed of sound, then we **do not know** if the prototype plane travelled faster the speed of sound. It could be that the sound barrier was broken, but the plane travelled for a long time during the test at speeds well below the speed of sound making the average velocity during the test much lower. + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-speeding-tickets-jms.pg b/Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-speeding-tickets-jms.pg new file mode 100644 index 0000000000..95ccdfb43c --- /dev/null +++ b/Contrib/UCalgary/249-10-0-0-I/10-1-2-Ap-C/10-1-2-Ap-C-mvt-speeding-tickets-jms.pg @@ -0,0 +1,101 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Rates of change - general) +## Date(3 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.001, tolType => 'absolute'); + +$limit = random(70,110,10); +$distance = random(200,500,25); +$time = floor(60*$distance/$limit) + non_zero_random(-15,30,5); #time in minutes +$avg = Compute("($distance)/($time/60)"); + +#avoid extremely high speeds +if($avg > 130) +{$time = $time+15; +$avg = Compute("($distance)/($time/60)");} + + +$mvt = DropDown( + [ + 'The Extreme Value Theorem', + 'The Intermediate Value Theorem', + 'The Mean Value Theorem', + 'The Fundamental Theorem of Calculus' + ], + 'The Mean Value Theorem' +); + +if($avg > $limit) +{$yn = 'Yes';} +else +{$yn = 'There is not enough information to decide';} + +$popup_yn = DropDown( + [ + 'Yes', + 'No', + 'There is not enough information to decide' + ], + $yn +); + + + +BEGIN_PGML +Suppose that someone you know took a road trip to their hometown. They drove [`[$distance]\, \rm{km}`] and the trip took them [`[$time]`] minutes. + ++ Their average speed on their road trip in kilometres per hour was [_]{$avg}{5} [`\rm{km/h}.`] + +Suppose that the posted speed limit for the duration of their trip was [`[$limit] \, \rm{km/h}.`] + ++ Were they speeding (traveling faster than the posted speed limit) at any point in time during their road trip? + + [_]{$popup_yn} + ++ Which theorem from calculus is the most relevant to answering the previous question? + + [_]{$mvt} + +[|Please always drive safely and follow the posted speed limits!|]* +END_PGML + +BEGIN_PGML_SOLUTION ++ First convert the time they travelled to hours: [``[$time] \, \rm{min} = \frac{[$time]}{60} \, \rm{h}.``] Their average speed on their road trip was [``\frac{[$distance] \, \rm{km}}{[$time]/60 \, \rm{h}} = [$avg] \, \rm{km/h}.``] + ++ We can now attempt to apply the **Mean Value Theorem** to determine if they were speeding at any given moment in time. + + The Mean Value Theorem tells us that their instantaneous velocity was equal to their average velocity of [``[$avg] \, \rm{km/h}``] for at least one point in time during the trip. + + The posted speed limit was [`[$limit] \, \rm{km/h}.`] + + + If their average velocity is higher than the posted speed limit, then we know that they were speeding at some point in time. + + + If their average velocity is lower than the posted speed limit, then we **do not know** if they were speeding or not. For example, it could be that they were speeding, but stopped for lunch and ended up with a low average velocity. + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-1-0-R-C/11-1-0-R-C-anti-der-defn-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-1-0-R-C/11-1-0-R-C-anti-der-defn-jms.pg new file mode 100644 index 0000000000..eb7999538c --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-1-0-R-C/11-1-0-R-C-anti-der-defn-jms.pg @@ -0,0 +1,60 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Conceptual understanding of integration) +## Date(4 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$ver = random(-1,1,2); +if($ver == -1) +{ +$rel = 'an antiderivative'; +$first = 'f'; +$second = 'g'; +} +else +{ +$rel = 'the derivative'; +$first = 'g'; +$second = 'f'; +} + + +$popup = DropDown( + [ + 'an antiderivative', + 'an approximation', + 'the derivative' + ], + $rel +); + +BEGIN_PGML +Let [`f`] and [`g`] be two differentiable functions defined for all [`x\in \mathbb{R}.`] + +If [``\frac{d}{dx}f(x) = g(x)``], then we say that the function [`[$first]`] is [_]{$popup} of the function [`[$second].`] +END_PGML + +BEGIN_PGML_SOLUTION +If [``\frac{d}{dx}f(x) = g(x)``], then we say that + ++ the function [`f`] is **an antiderivative** of the function [`g,`] or that + ++ the function [`g`] is **the derivative** of the function [`f.`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-der-ms-1-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-der-ms-1-jms.pg new file mode 100644 index 0000000000..323408c01d --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-der-ms-1-jms.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Antiderivatives (with trigonometric functions)) +## Date(4 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserCheckboxList.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(3, 9, 2); #odd +$threea = 3*$a; +$b = random(2,9,1)*random(-1,1,2); #not +/- 1 +$c = non_zero_random(-10,10,1); +$f = Formula("$a*x^3 + sin(x) + $b")->reduce(); +$afrac4 = Compute("$a/4"); +$ans1 = "\dfrac{$a}{4} x^4 - \cos(x) + $b x"; +$ans2 = "- \cos(x) + \dfrac{$a}{4} x^4 + $b x + $c"; +$wrong1 = "$a x^4 + \cos(x) + $b x"; +$wrong2 = "$threea x^2 - \cos(x)"; +$wrong3 = "\cos(x) + \dfrac{$a}{4} x^4 + $b"; + +$checks1 = CheckboxList( + [[ "\(F(x) = $ans1\)", "\(F(x) = $ans2\)", "\(F(x) = $wrong1\)", "\(F(x) = $wrong2\)", "\(F(x) = $wrong3\)"]], + ["\(F(x) = $ans1\)", "\(F(x) = $ans2\)"] # correct answers +); + +BEGIN_PGML +Select all functions below that are antiderivatives of the function [`f(x) = [$f]`] + +[_]{$checks1} +END_PGML + +$foura = $a*4; +$sixa = $a*6; + +BEGIN_PGML_SOLUTION +There are two antiderivatives of [`f`] in the list that differ by the constant term, [`[$c],`] and the order that the terms appear: + ++ [``\begin{aligned}\frac{d}{dx} \left([$ans1]\right) &= \frac{d}{dx} \left(\dfrac{[$a]}{4} x^4\right) + \frac{d}{dx} (-\cos(x)) + \frac{d}{dx} \left([$b] x\right) \\ &= [$f] = f(x) \end{aligned}``] + ++ [``\begin{aligned}\frac{d}{dx} \left([$ans2]\right) & = \frac{d}{dx} (-\cos(x)) + \frac{d}{dx} \left(\dfrac{[$a]}{4} x^4\right) + \frac{d}{dx} \left([$b] x\right) + \frac{d}{dx}([$c]) \\ &= [$f] = f(x)\end{aligned}``] + +The remaining functions in the list are not antiderivatives of [`f.`] You can check by taking their derivatives: + ++ [``\begin{aligned}\frac{d}{dx} \left([$wrong1]\right) & = \frac{d}{dx}([$a] x^4) + \frac{d}{dx}(\cos(x)) + \frac{d}{dx}([$b] x) \\ &= [$foura]x^3 - \sin(x) + [$b] \neq f(x)\end{aligned}``] + ++ [``\begin{aligned}\frac{d}{dx} \left([$wrong2]\right) & = \frac{d}{dx}([$threea]x^2) + \frac{d}{dx}(-\cos(x)) \\ &= [$sixa]x + \sin(x) \neq f(x) \end{aligned}``] + ++ [``\begin{aligned}\frac{d}{dx} \left([$wrong3]\right) & = \frac{d}{dx}(\cos(x)) + \frac{d}{dx}\left(\dfrac{[$a]}{4} x^4\right) + \frac{d}{dx}([$b]) \\ &= - \sin(x) + [$a]x^3 \neq f(x)\end{aligned}``] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-der-ms-2-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-der-ms-2-jms.pg new file mode 100644 index 0000000000..abe3467d7e --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-der-ms-2-jms.pg @@ -0,0 +1,67 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Antiderivatives (with trigonometric functions)) +## Date(4 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserCheckboxList.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(3, 9, 2); #odd +$twoa = $a*2; +$b = random(2,9,1)*random(-1,1,2); #not +/- 1 +$c = random(2,9,1)*random(-1,1,2); #not +/- 1 +$d = non_zero_random(-20,20,2); +$f = Formula("$a/sqrt{x} + $b cos(x) + $c")->reduce(); +$afrac4 = Compute("$a/4"); +$ans1 = "$twoa \sqrt{x} + $b \sin(x) + $c x"; +$ans2 = "$c x + $b \sin(x) + $twoa \sqrt{x} + $d"; +$wrong1 = "-\dfrac{$a}{2} \dfrac{1}{x^{3/2}} - $b \sin(x)"; +$wrong2 = "$twoa \sqrt{x} - $b \sin(x) + $c \dfrac{x^2}{2}"; +$wrong3 = "\dfrac{$twoa}{x^{3/2}} + $b \sin(x) + $c x"; + +$checks1 = CheckboxList( + [[ "\(F(x) = $ans1\)", "\(F(x) = $ans2\)", "\(F(x) = $wrong1\)", "\(F(x) = $wrong2\)", "\(F(x) = $wrong3\)"]], + ["\(F(x) = $ans1\)", "\(F(x) = $ans2\)"] # correct answers +); + +BEGIN_PGML +Select all functions below that are antiderivatives of the function [``f(x) = [$f]``] + +[_]{$checks1} +END_PGML + +$threea = $a*3; + +BEGIN_PGML_SOLUTION +Recall that [`\sqrt{x} = x^{1/2}.`] + +There are two antiderivatives of [`f`] in the list that differ by the constant term, [`[$d],`] and the order that the terms appear: + ++ [``\frac{d}{dx} \left([$ans1]\right) = [$f] = f(x)``] + ++ [``\frac{d}{dx} \left([$ans2]\right) = [$f] = f(x)``] + +The remaining functions in the list are not antiderivatives of [`f,`] you can check by taking their derivatives: + ++ [``\begin{aligned}\frac{d}{dx} \left( [$wrong1] \right) & = -\dfrac{[$a]}{2} \frac{d}{dx} (x^{-3/2}) - [$b] \frac{d}{dx} \sin(x) \\ & = \frac{[$threea]}{4} x^{-5/2} - [$b] \cos(x) \neq f(x)\end{aligned}``] + ++ [``\begin{aligned}\frac{d}{dx} \left( [$wrong2] \right) & = [$twoa] \frac{d}{dx} \sqrt{x} - [$b] \frac{d}{dx} \sin(x) + [$c] \frac{d}{dx} \dfrac{x^2}{2} \\ & = \frac{[$a]}{\sqrt{x}} - [$b]\cos(x) + [$c] x \neq f(x)\end{aligned}``] + ++ [``\begin{aligned}\frac{d}{dx} \left( [$wrong3] \right) & = [$twoa]\frac{d}{dx}(x^{-3/2}) + [$b] \frac{d}{dx}\sin(x) + [$c] \frac{d}{dx} x \\ & = -[$threea]x^{-5/2} + [$b]\cos(x) + [$c] \neq f(x)\end{aligned}``] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-mc-1-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-mc-1-jms.pg new file mode 100644 index 0000000000..86eab3bab0 --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-1-1-An-C/11-1-1-An-C-anti-mc-1-jms.pg @@ -0,0 +1,54 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Antiderivatives (with trigonometric functions)) +## Date(4 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 9, 1)*random(-1,1,2); +$b = random(3,9,2); #odd +$c = random(-10,10,2); +$g = Formula("e^x + $a/x + $b x")->reduce(); + +$radio1 = RadioButtons( + [ [ "\(G(x)=e^x + $a \ln(x) + \dfrac{$b}{2} x^2 + $c\)", "\(G(x)=\ln(x) + $a \ln(x) + \dfrac{$b}{2} x\)", "\(G(x)=e^x - $a x^{-2} + $b x^2\)", "\(G(x)=e^x + $a \ln(x) + $b \)"], 'None of the above functions are antiderivatives of \(g(x)\)' ], + "\(G(x)=e^x + $a \ln(x) + \dfrac{$b}{2} x^2 + $c\)" # correct answer +); + +BEGIN_PGML +Which of the following functions is an antiderivative of the function [``g(x) = [$g]``]? + +[_]{$radio1} +END_PGML + +$aplus1 = $a + 1; +$atimesm2 = (-2)*$a; +$btimes2 = 2*$b; +BEGIN_PGML_SOLUTION ++ There is a function that is an antiderivative of [`g(x)`]: + + [``\begin{aligned}\frac{d}{dx}\left(e^x + [$a] \ln(x) + \dfrac{[$b]}{2} x^2 + [$c]\right) & = \frac{d}{dx}\left( e^x \right) + [$a] \frac{d}{dx}\left( \ln(x) \right) + \dfrac{[$b]}{2} \frac{d}{dx}\left( x^2 \right) + \frac{d}{dx}\left( [$c] \right) \\ &= [$g] + 0 = g(x)\end{aligned}``] + +The remaining functions are **not** antiderivatives of [`g(x)`]: ++ [`` \frac{d}{dx}\left(\ln(x) + [$a] \ln(x) + \dfrac{[$b]}{2} x\right) = \frac{d}{dx} \ln(x) + [$a] \frac{d}{dx} \ln(x) + \frac{[$b]}{2} \frac{d}{dx} (x) = \frac{[$aplus1]}{x} + \frac{[$b]}{2} \neq g(x)``] + ++ [`` \frac{d}{dx}\left( e^x - [$a] x^{-2} + [$b] x^2 \right) = \frac{d}{dx} e^x - [$a] \frac{d}{dx} (x^{-2}) + [$b] \frac{d}{dx} (x^2) = e^x - [$atimesm2] x^{-3} + [$btimes2]x \neq g(x)``] + ++ [`` \frac{d}{dx} \left( e^x + [$a] \ln(x) + [$b] \right) = e^x + \frac{[$a]}{x} \neq g(x)``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-1-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-1-jms.pg new file mode 100644 index 0000000000..2bd6ea319e --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-1-jms.pg @@ -0,0 +1,61 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Antiderivatives (with trigonometric functions)) +## Date(4 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 9, 1)*random(-1,1,2); +$b = random(3, 7, 1); +$c = non_zero_random(-9,9,1); +$d = random(2,4,1); +$ab = $a*$b; +$bm1 = $b-1; + +$fder = Formula("$ab*x^($bm1)+$c*e^(-x) + pi/$d*cos(x)")->reduce(); +$f = Compute("$a*x^($b)-$c*e^(-x) + pi/$d*sin(x)"); + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$fder]``]. Find the general antiderivative of [`f(x)`]. + +[`F(x) = \,`][_]{$f}{20} [`\, + C,`] + +where [`C`] is a constant. +END_PGML + +BEGIN_PGML_SOLUTION +[``F(x) = \frac{[$ab]}{[$bm1]+1}x^{[$bm1]+1} - [$c]*e^{-x} + \frac{\pi}{[$d]}\sin(x) + C = [$f]+C,``] + +because [``F'(x) = [$fder].``] + +Be careful with the [`e^{-x}`] term, since [``\frac{d}{dx}e^{-x} = -e^{-x}.``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-2-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-2-jms.pg new file mode 100644 index 0000000000..c4ab862e17 --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-2-jms.pg @@ -0,0 +1,61 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Antiderivatives (with trigonometric functions)) +## Date(4 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-1,1,2); +$b = random(3, 4, 1); +$c = non_zero_random(-9,9,1); +$d = random(2,8,1); +$ab = $a*$b; +$bm1 = $b-1; + +$fder = Formula("pi*$ab*x^($bm1)+$c/x - $d*sin(x)")->reduce(); +$f = Compute("$a*pi*x^($b)+$c*ln(abs(x)) + $d*cos(x)")->reduce(); + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +$f->{limits} = [-3,-1]; + +BEGIN_PGML +Let [``g(x)=[$fder]``]. Find the general antiderivative of [`g(x)`]. + +[`G(x) =\, `][_]{$f}{20} [`\, + C,`] + +where [`C`] is a constant. +END_PGML + +BEGIN_PGML_SOLUTION +[``G(x) = \frac{[$ab]\pi}{[$bm1]+1}x^{[$bm1]+1} - [$c]\ln{|x|} - [$d]\cos(x) + C = [$f]+C,``] + +because [``G'(x) = [$fder].``] + +Remember that the general antiderivative of [``\frac{1}{x}``] is [``\ln{|x|}``] (don't forget the absolute value). +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-3-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-3-jms.pg new file mode 100644 index 0000000000..f83f0df08e --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-1-2-Ap-C/11-1-2-Ap-C-fcn-anti-der-3-jms.pg @@ -0,0 +1,61 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Antiderivatives (with trigonometric functions)) +## Date(4 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(3,7,2); +$b = random(3, 4, 1); + +$d = random(2,8,1)*random(-1,1,2); + +$fder = Formula("$a*sqrt(x) + $d*sec^2(x)")->reduce(); +$f = Compute("$a/(3/2)*x^(3/2) + $d*tan(x)"); + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +$f->{limits} = [1,3]; + +BEGIN_PGML +Let [``f(x)=[$fder]``]. Find the general antiderivative of [`f(x)`]. + +[`F(x) =\, `][_]{$f}{20} [`\, + C,`] + +where [`C`] is a constant. +END_PGML + +$twoa = $a*2; + +BEGIN_PGML_SOLUTION +[``F(x) = \frac{[$a]}{3/2}x^{3/2} + [$d]\tan(x) + C = \frac{[$twoa]}{3}x^{3/2} + [$d]\tan(x) + C,``] + +because [``F'(x) = [$fder].``] + +Hint: write [`\sqrt{x} = x^{1/2}.`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-2-1-R-C/11-2-1-R-C-two-anti-der-1-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-2-1-R-C/11-2-1-R-C-two-anti-der-1-jms.pg new file mode 100644 index 0000000000..e5bf594cb4 --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-2-1-R-C/11-2-1-R-C-two-anti-der-1-jms.pg @@ -0,0 +1,75 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Conceptual understanding of integration) +## Date(7 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$const= DropDown( + [ + '0', + 'a fixed constant', + 'any differentiable function' + ], + 'a fixed constant' +); + +$zero = DropDown( + [ + '0', + 'a fixed constant', + 'any differentiable function' + ], + '0' +); + +#randomize order of bullets +$ver = random(-1,1,0); + +if($ver == -1) +{$fcn1 = "F(x)-G(x)"; +$popup1 = $const; +$fcn2 = "F'(x) - G'(x)"; +$popup2 = $zero;} +else +{$fcn1 = "F'(x) - G'(x)"; +$popup1 = $zero; +$fcn2 = "F(x)-G(x)"; +$popup2 = $const;} + + + +BEGIN_PGML +Suppose that [`F`] and [`G`] are two antiderivatives of a continuous function [`f.`] + +Then we know that: + ++ [`[$fcn1]`] is equal to [_]{$popup1} for all [`x.`] + ++ [`[$fcn2]`] is equal to [_]{$popup2} for all [`x.`] +END_PGML + +BEGIN_PGML_SOLUTION + ++ It is a consequence of the Mean Value Theorem that two antiderivatives of a function [`f`] differ by a constant function, so [`F(x) - G(x)`] is equal to is equal to a fixed constant for all [`x.`] + ++ Since both [`F`] and [`G`] are antiderivatives of [`f`], we have [`F'(x) - G'(x) = f(x) - f(x) = 0`] for all [`x.`] + +END_PGML_SOLUTION + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-2-2-U-C/11-2-2-U-C-two-anti-der-gph-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-2-2-U-C/11-2-2-U-C-two-anti-der-gph-jms.pg new file mode 100644 index 0000000000..ba2e7513fe --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-2-2-U-C/11-2-2-U-C-two-anti-der-gph-jms.pg @@ -0,0 +1,75 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Conceptual understanding of integration) +## Date(7 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$slope = DropDown( + [ + 'y-intercepts', + 'slope of their tangent lines for each x', + 'asymptotes' + ], + 'slope of their tangent lines for each x' +); + +$int = DropDown( + [ + 'y-intercepts', + 'slope of their tangent lines for each x', + 'asymptotes' + ], + 'y-intercepts' +); + +#randomize order of bullets +$ver = random(-1,1,0); + +if($ver == -1) +{$samediff1 = "the same"; +$popup1 = $slope; +$samediff2 = "different"; +$popup2 = $int;} +else +{$samediff1 = "different"; +$popup1 = $int; +$samediff2 = "the same"; +$popup2 = $slope;} + + + +BEGIN_PGML +Suppose that [`F`] and [`G`] are two different antiderivatives of a continuous function [`f.`] That is, [`F(x) \neq G(x)`] for some [`x,`] but both [`F`] and [`G`] are antiderivatives of the same function [`f.`] + +Then we know that: + ++ [`F`] and [`G`] have [$samediff1] [_]{$popup1} + ++ [`F`] and [`G`] have [$samediff2] [_]{$popup2} +END_PGML + +BEGIN_PGML_SOLUTION + ++ It is a consequence of the Mean Value Theorem that two antiderivatives of a function [`f`] differ by a constant function, so [`F(x) - G(x)`] is equal to is equal to a fixed constant for all [`x.`] Since [`F(x) \neq G(x)`], we have [`F(x) = G(x) + k`] for some **non-zero** constant [`k`] and the graphs of [`F`] and [`G`] will have different y-intercepts + ++ Since both [`F`] and [`G`] are antiderivatives of [`f`], we have [`F'(x) = f(x) = G'(x)`] for all [`x;`] therefore, the slope of the tangent lines to the graphs of [`F`] and [`G`] will be the same at each [`x.`] + +END_PGML_SOLUTION + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-2-3-U-C/11-2-3-U-C-two-anti-der-mc-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-2-3-U-C/11-2-3-U-C-two-anti-der-mc-jms.pg new file mode 100644 index 0000000000..7a59362197 --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-2-3-U-C/11-2-3-U-C-two-anti-der-mc-jms.pg @@ -0,0 +1,45 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Conceptual understanding of integration) +## Date(7 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 9, 1); + +$correct = "If \(F\) and \(G\) are antiderivatives of \(f,\) then there exists a constant \(k\) so that \(G(x) = F(x) +k\) for all \(x.\)"; + +$wrong1 = "If \(F\) and \(G\) are antiderivatives of \(f,\) then there exists a non-zero constant \(k\) so that \(G(x) = F(x) +k\) for at least one \(x.\)"; + +$wrong2 = "If \(F\) and \(G\) are distinct antiderivatives of \(f,\) then for any constant \(k,\) \(G(x) = F(x) +k\) for any \(x.\)"; + +$wrong3 = "If \(F\) and \(G\) are distinct antiderivatives of \(f,\) then for any non-zero constant \(k,\) \(G(x) = F(x) +k\) for some \(x.\)"; + +$radio1 = RadioButtons( + [ [ $correct, $wrong1, $wrong2, $wrong3 ] ], + $correct # correct answer +); + +BEGIN_PGML +Which of the statements below best represents the following claim? + +"Two antiderivatives of a function [`f`] differ by a constant." + +[_]{$radio1} +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-1-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-1-jms.pg new file mode 100644 index 0000000000..ca6019d7ae --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-1-jms.pg @@ -0,0 +1,68 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Antiderivatives (with trigonometric functions)) +## Date(9 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +$a = random(1,5,1); +$b = non_zero_random(-5,5,1); +$fprime0 = non_zero_random(-5,5,1); +$f0 = non_zero_random(-5,5,1); +$c = $fprime0 + $a; +$d = $f0 + $b; +$fderder = Formula("$a*sin(x)+$b*cos(x)")->reduce(); +$fder = Formula("-$a*cos(x)+$b*sin(x)+$c")->reduce(); +$f = Compute("-$a*sin(x)-$b*cos(x) + $c*x + $d"); +$ans = Formula("-$a*sin(x)-$b*cos(x) + $c*x + $d")->reduce(); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + + +BEGIN_PGML +Suppose that [``f''(x) = [$fderder],``] [``f'(0) = [$fprime0],``] and [``f(0) = [$f0].``] + +Find [`f(x).`] + +[`f(x) = \, `] [_]{$f}{20} + +END_PGML + +BEGIN_PGML_SOLUTION +First we find that +[```f'(x) = \int f''(x) \, dx = \int [$fderder] \, dx = -[$a]\cos(x)+[$b]\sin(x) + C,```] +and since [`[$fprime0] = f'(0) = -[$a]\cos(0)+[$b]\sin(0) + C = -[$a] + C`] we get that [`C = [$c].`] +Now +[```f(x) = \int f'(x) \, dx = \int [$fder] \, dx = -[$a]\sin(x)-[$b]\cos(x) + [$c]x + D,```] +and since [`[$f0] = f(0) = -[$a]\sin(0)-[$b]\cos(0) + [$c](0) + D = -[$b]+D`] we get that [`D = [$d].`] + +Therefore, [`f(x) = [$ans].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-2-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-2-jms.pg new file mode 100644 index 0000000000..450eebca52 --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-2-jms.pg @@ -0,0 +1,68 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Antiderivatives (without trigonometric functions)) +## Date(9 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +$a = random(1,5,1); +$b = non_zero_random(-5,5,1); +$fprime0 = non_zero_random(-5,5,1); +$f0 = non_zero_random(-5,5,1); +$c = $fprime0 - $a + $b; +$d = $f0 - $a - $b; +$fderder = Formula("$a*e^x+$b*e^(-x)")->reduce(); +$fder = Formula("$a*e^x-$b*e^(-x)+$c")->reduce(); +$f = Compute("$a*e^x+$b*e^(-x)+$c*x + $d"); +$ans = Formula("$a*e^x+$b*e^(-x) + $c*x + $d")->reduce(); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + + +BEGIN_PGML +Suppose that [``g''(x) = [$fderder],``] [``g'(0) = [$fprime0],``] and [``g(0) = [$f0].``] + +Find [`g(x).`] + +[`g(x) = \, `] [_]{$f}{20} + +END_PGML + +BEGIN_PGML_SOLUTION +First we find that +[```g'(x) = \int g''(x) \, dx = \int [$fderder] \, dx = [$a]e^x - [$b]e^{-x} + C,```] +and since [`[$fprime0] = g'(0) = [$a]e^0 - [$b]e^0 + C = [$a] - [$b] + C`] we get that [`C = [$c].`] +Now +[```g(x) = \int g'(x) \, dx = \int [$fder] \, dx = [$a]e^x + [$b]e^{-x} + [$c]x + D,```] +and since [`[$f0] = g(0) = [$a]e^0 + [$b]e^0 + [$c](0) + D = [$a]+[$b]+D`] we get that [`D = [$d].`] + +Therefore, [`f(x) = [$ans].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-3-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-3-jms.pg new file mode 100644 index 0000000000..bc7b3ea4cf --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-3-1-Ap-I/11-3-1-Ap-I-ivp-3-jms.pg @@ -0,0 +1,66 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Antiderivatives (without trigonometric functions)) +## Date(9 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +$pt = random(1,3,1)**2; +$a = random(1,5,1); +$twoa = $a*2; +$twothirdsa = $a*2/3; +$b = non_zero_random(-5,5,1); +$twob = 2*$b; +$fpt = non_zero_random(-5,5,1); +$c = $fpt - ($twoa/3)*($pt)**(3/2) - ($twob)*sqrt($pt); +$fder = Formula("$a*sqrt(x)+$b/(sqrt(x))")->reduce(); +$f = Compute("($twoa/3)*x^(3/2)+($twob)*sqrt(x) + $c"); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +$f->{limits} = [1,3]; + + +BEGIN_PGML +Suppose that [``h'(x) = [$fder],``] and [``h([$pt]) = [$fpt].``] + +Find [`h(x).`] + +[`h(x) = \, `] [_]{$f}{20} +END_PGML + + + +BEGIN_PGML_SOLUTION +First we find that +[```h(x) = \int h'(x) \, dx = \int [$fder] \, dx = ([$a])\frac{2}{3} x^{3/2} + ([$b])2\sqrt{x} + C = \frac{[$twoa]}{3} x^{3/2} + [$twob]\sqrt{x} + C.```] +Now, since [``[$fpt] = h([$pt]) = \frac{[$twoa]}{3}([$pt])^{3/2} + [$twob]\sqrt{[$pt]} + C``] we get that [``C = [$fpt] - \frac{[$twoa]}{3}([$pt])^{3/2} - [$twob]\sqrt{[$pt]}.``] + +Therefore, [``h(x) = \frac{[$twoa]}{3} x^{3/2} + [$twob]\sqrt{x} + [$fpt] - \frac{[$twoa]}{3}([$pt])^{3/2} - [$twob]\sqrt{[$pt]}.``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-1-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-1-jms.pg new file mode 100644 index 0000000000..535a1a2a58 --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-1-jms.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Techniques of integration) +## DBsection(Substitution (without trigonometric functions)) +## Date(8 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(2, 4, 1); +$b = non_zero_random(-9,9,1); +$c = random(5,15,1); +$d = random(2,9,1)*random(-1,1,2); +$cp1 = $c+1; +$am1 = $a-1; + +$fder = Formula("$d*x^($am1)*(x^($a)+$b)^($c)")->reduce(); +$u = Compute("x^($a)+$b"); +$du = Compute("$a*x^($am1)"); +$f = Compute("($d/($a*$cp1))*(x^($a)+$b)^($cp1)"); + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Evaluate the following indefinite integral by making a substitution. + +The best substitution to make is [`u = \, `][_]{$u}{10} which has differential [`du = \,`] [_]{$du}{10} [`dx.`] + +Then +[``\int [$fder] \, dx = \,``][_]{$f}{20} [`\, + C,`] +where [`C`] is a constant. +END_PGML + +$acp1 = $a*$cp1; +BEGIN_PGML_SOLUTION +We make the substitution [`u = x^{[$a]} + [$b],`] so [`du = [$a]x^{[$am1]} \, dx.`] +Then +[``` \int [$fder] \, dx = \int \frac{[$d]}{[$a]} u^{[$c]} \, du = \frac{[$d]}{[$a]} \frac{u^{[$cp1]}}{[$cp1]} + C = \frac{[$d]}{[$acp1]}(x^{[$a]}+[$b])^{[$cp1]} + C.```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-2-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-2-jms.pg new file mode 100644 index 0000000000..05055ba0af --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-2-jms.pg @@ -0,0 +1,70 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Techniques of integration) +## DBsection(Substitution (with trigonometric functions)) +## Date(8 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-1, 1, 2); +$c = random(5,15,1); +$d = random(2,9,1)*random(-1,1,2); +$cp1 = $c+1; + +if($a == -1) +{ +$u = Compute("cos(x)"); +$du = Compute("-sin(x)"); +} +else +{ +$u = Compute("sin(x)"); +$du = Compute("cos(x)"); +} + +$fder = Formula("$d*$du*($u)^($c)")->reduce(); +$f = Compute("($d/($cp1))*($u)^($cp1)"); + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Evaluate the following indefinite integral by making a substitution. + +The best (and simplest) substitution to make is [`u = \, `][_]{$u}{10} which has differential [`du = \,`] [_]{$du}{10} [`dx.`] + +Then +[``\int [$fder] \, dx = \,``][_]{$f}{20} [`\, + C,`] +where [`C`] is a constant. +END_PGML + +BEGIN_PGML_SOLUTION +We make the substitution [`u = [$u],`] so [`du = [$du] \, dx.`] +Then +[``` \int [$fder] \, dx = \int [$d] u^{[$c]} \, du = [$d] \frac{u^{[$cp1]}}{[$cp1]} + C = \frac{[$d]}{[$cp1]}([$u])^{[$cp1]} + C.```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-3-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-3-jms.pg new file mode 100644 index 0000000000..4277854926 --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-3-jms.pg @@ -0,0 +1,78 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Techniques of integration) +## DBsection(Substitution (without trigonometric functions)) +## Date(8 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-1, 1, 2); #for version +$b = random(2,9,1); +$c = 1/2; #square root +$d = random(2,9,1)*random(-1,1,2); +$cp1 = $c+1; + +if($a == -1) +{ +$u = Compute("e^x + $b"); +$du = Compute("e^x"); +$fder = Formula("$d*$du*sqrt($u)")->reduce(); +$f = Compute("($d/($cp1))*($u)^($cp1)"); +} +else +{ +$u = Compute("ln(x) + $b"); +$du = Compute("1/x"); +$fder = Formula("($d/x)*sqrt($u)")->reduce(); +$f = Compute("($d/($cp1))*($u)^($cp1)"); +} + + + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +$f->{limits} = [1,3]; +$u->{limits} = [1,3]; +$du->{limits} = [1,3]; + +BEGIN_PGML +Evaluate the following indefinite integral by making a substitution. + +The best substitution to make is [`u = \, `][_]{$u}{10} which has differential [`du = \,`] [_]{$du}{10} [`dx.`] + +Then +[``\int [$fder] \, dx = \,``][_]{$f}{20} [`\, + C,`] +where [`C`] is a constant. +END_PGML + +$twod = 2*$d; + +BEGIN_PGML_SOLUTION +We make the substitution [`u = [$u],`] so [`du = [$du] \, dx.`] +Then +[``` \int [$fder] \, dx = \int [$d] u^{1/2} \, du = [$d] \frac{u^{3/2}}{3/2} + C = \frac{[$twod]}{3}([$u])^{3/2} + C.```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-4-mc-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-4-mc-jms.pg new file mode 100644 index 0000000000..911005b3fb --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-4-mc-jms.pg @@ -0,0 +1,48 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Techniques of integration) +## DBsection(Substitution (without trigonometric functions)) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(3,9,2); + +$radio1 = RadioButtons( + [ [ "\( \displaystyle \frac{1}{2} \left( \ln ($a f(x)) \right)^2 + C \)", + "\( \displaystyle \frac{1}{$a} \left( \ln ($a f(x)) \right)^2 + C \)", +"\( \displaystyle \ln ($a f(x)) + C \) ", +"\( \displaystyle $a\ln ($a f(x)) + C \)", +"\( \displaystyle $a \left( \ln ($a f(x)) \right)^2 + C \)" ]], + "\( \displaystyle \frac{1}{2} \left( \ln ($a f(x)) \right)^2 + C \)" # correct answer +); + +BEGIN_PGML +Let [`f`] be a differentiable function. + + +The integral [``` \int \frac{\ln([$a] f(x))}{f(x)}f'(x)\, dx ```] +is equal to which of the following? + +[_]{$radio1} +END_PGML + +BEGIN_PGML_SOLUTION +Make the substitution [``u = \ln([$a]f(x)``], then [``du = \frac{1}{[$a]f(x)}[$a]f'(x)\, dx = \frac{1}{f(x)}f'(x)\, dx.``] +Then, the integral becomes [``` \int \frac{\ln([$a] f(x))}{f(x)}f'(x)\, dx = \int u\, du = \frac{1}{2}u^2 + C = \frac{1}{2} \left( \ln ([$a] f(x)) \right)^2 + C ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-5-mc-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-5-mc-jms.pg new file mode 100644 index 0000000000..9cb04b33ea --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-5-1-Ap-C/11-5-1-Ap-C-sub-anti-der-5-mc-jms.pg @@ -0,0 +1,45 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Techniques of integration) +## DBsection(Substitution (without trigonometric functions)) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(3,9,2); + +$radio1 = RadioButtons( + [ [ "\(\displaystyle \dfrac{1}{A^2} \int u^{3/2} - $a u^{1/2}\, du\)", +"\(\displaystyle \dfrac{1}{A} \int \sqrt{u} \, du\)", +"\(\displaystyle \dfrac{1}{A^3} \int (u- $a)^3\sqrt{u} \, du\)", +"\(\displaystyle \dfrac{1}{A^2} \int \ln($a u)u^{1/2} \, du\)", +"\(\displaystyle \dfrac{1}{A^3} \int (u-$a)^2\sqrt{u} \, du\)"]], + "\(\displaystyle \dfrac{1}{A^2} \int u^{3/2} - $a u^{1/2}\, du\)" # correct answer +); + +BEGIN_PGML +Let [`A`] be a positive constant. After making the substitution [`u = [$a]+Ae^x`] the integral [``` \int e^{2x}\sqrt{[$a]+Ae^x} \, dx ```] +becomes which of the following integrals? + +[_]{$radio1} +END_PGML + +BEGIN_PGML_SOLUTION +If [`u = [$a]+Ae^x`] then [`du = Ae^x \, dx`] so [``\frac{1}{A} \, du = e^x \, dx.``] In the integrand, notice that [`e^2x = e^x\cdot e^x`] so we can replace one copy of [`e^x`] by using [`du`], and the remaining [`e^x`] can be written in terms of [`u`] as [`e^x = \frac{u-[$a]}{A}.`] +Now, [```\int e^{2x}\sqrt{[$a]+Ae^x} \, dx = \int e^{x}\sqrt{[$a]+Ae^x} \, e^x dx = \int \frac{u-[$a]}{A}\sqrt{u} \frac{1}{A}\, du = \frac{1}{A^2} \int u^{3/2} - [$a]u^{1/2} \, du ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-5-2-U-C/11-5-2-U-C-chain-sub-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-5-2-U-C/11-5-2-U-C-chain-sub-jms.pg new file mode 100644 index 0000000000..0f5f9d165f --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-5-2-U-C/11-5-2-U-C-chain-sub-jms.pg @@ -0,0 +1,38 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Conceptual understanding of integration) +## Date(8 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$popup = DropDown( + [ + 'Power Rule', + 'Product Rule', + 'Quotient Rule', + 'Chain Rule', + 'Mean Value Theorem' + ], + 'Chain Rule' +); + +BEGIN_PGML +The technique of "Integration by Substitution," sometimes also called "[`u`]-Substitution," is the antiderivative version of the [_]{$popup} for differentiation. +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-1-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-1-jms.pg new file mode 100644 index 0000000000..1aaaea58a8 --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-1-jms.pg @@ -0,0 +1,60 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Chain rule (with trigonometric functions)) +## Date(9 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +Context()->variables->add(dx=>"Real"); +$a = non_zero_random(-5,5,1); +$b = non_zero_random(-5,5,1); +$u = Formula("e^($a*x) + cos($b*pi*x)")->reduce(); +$du = Compute("($a*e^($a*x) - $b*pi*sin($b*pi*x))*dx"); + + + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + + +BEGIN_PGML +Let [`u(x) = [$u].`] Find the differential of [`u.`] + +[`du = \,`] [_]{$du}{10} + +END_PGML + + + +BEGIN_PGML_SOLUTION +We are given the function [`u = [$u],`] and by definition [`du = u'(x) \, dx,`] so +[``` du = u'(x) \, dx = [$du].```] +Don't forget the "[`dx`]"! +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-2-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-2-jms.pg new file mode 100644 index 0000000000..8c64427aa3 --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-2-jms.pg @@ -0,0 +1,61 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Chain rule (without trigonometric functions)) +## Date(9 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +Context()->variables->add(dx=>"Real"); +$a = random(3,5,1)*random(-1,1,2); +$am1 = $a-1; +$b = random(2,9,1); +$u = Formula("x^($a)*ln($b*x)")->reduce(); +$du = Compute("($a*x^($am1)*ln($b*x) + x^($am1))*dx"); + + + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +$du->{limits} = [1,3]; + + +BEGIN_PGML +Let [``f(x) = [$u].``] Find the differential of [`f.`] + +[`df = \,`] [_]{$du}{10} + +END_PGML + + + +BEGIN_PGML_SOLUTION +We are given the function [``f = [$u],``] and by definition [`df = f'(x) \, dx,`] so +[``` df = f'(x) \, dx = [$du].```] +Don't forget the "[`dx`]"! +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-3-jms.pg b/Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-3-jms.pg new file mode 100644 index 0000000000..5f65e7321c --- /dev/null +++ b/Contrib/UCalgary/249-11-0-0-C/11-5-4-Ap-C/11-5-4-Ap-C-dx-3-jms.pg @@ -0,0 +1,59 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Differentiation) +## DBsection(Chain rule (without trigonometric functions)) +## Date(9 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +Context()->variables->add(dx=>"Real"); +$a = random(3,5,1); +$am1 = $a-1; +$b = random(2,9,1); +$u = Formula("sqrt(x^($a)+$b*x)")->reduce(); +$du = Compute("(($a*x^($am1)+$b)/(2*sqrt(x^($a)+$b*x)))*dx"); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +$du->{limits} = [1,3]; + + +BEGIN_PGML +Let [``g(x) = [$u].``] Find the differential of [`g.`] + +[`dg = \,`] [_]{$du}{10} + +END_PGML + + + +BEGIN_PGML_SOLUTION +We are given the function [``g = [$u],``] and by definition [`dg = g'(x) \, dx,`] so +[``` dg = g'(x) \, dx = [$du].```] +Don't forget the "[`dx`]"! +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-0-R-C/9-1-0-R-C-loc-ext-def-2-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-0-R-C/9-1-0-R-C-loc-ext-def-2-jms.pg new file mode 100644 index 0000000000..1da8d68430 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-0-R-C/9-1-0-R-C-loc-ext-def-2-jms.pg @@ -0,0 +1,63 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(26 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) +# MATH 249 Learning Outcomes 9-1-0-R-C + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$ver = random(-1, 1, 2); #version +# interval +$a = random(-5,3,1); +$b = $a + 4*random(1,4,1); +# sample point in interval +$t = random(0.25, 0.75, 0.25); +$c = $t*$b + (1-$t)*$a; + +if ($ver > 0) { + $maxmin = 'a local minimum'; + $sign = '≥'; +} else { + $maxmin = 'a local maximum'; + $sign = '≤'; +} + +$popup_sign = DropDown( + [ + '≤', + '≥', + '=' + ], + $sign +); + +$popup_near = DropDown( + [ + 'to the left of', + 'to the right of', + 'near' + ], + 'near' +); + +BEGIN_PGML +Let [`f`] be a function defined for all [`x`] in the interval [`([$a],[$b]).`] + +We say that [`f`] has [$maxmin] at [`x=[$c]`] if [`f(x)`] [_]{$popup_sign} [`f([$c])`] for all [`x \in ([$a],[$b])`] that are [_]{$popup_near} [`[$c].`] +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-0-R-C/9-1-0-R-C-loc-ext-def-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-0-R-C/9-1-0-R-C-loc-ext-def-jms.pg new file mode 100644 index 0000000000..c025713b56 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-0-R-C/9-1-0-R-C-loc-ext-def-jms.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(26 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) +# MATH 249 Learning Outcomes 9-1-0-R-C + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$ver = random(-1, 1, 2); #version +# interval +$a = random(-5,3,1); +$b = $a + 4*random(1,4,1); +# sample point in interval +$t = random(0.25, 0.75, 0.25); +$c = $t*$b + (1-$t)*$a; + +if ($ver > 0) { + $maxmin = 'a local minimum'; + $sign = '\leq'; +} else { + $maxmin = 'a local maximum'; + $sign = '\geq'; +} + +$popup_maxmin = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'a critcal point', + 'a singular point' + ], + $maxmin +); + +$popup_near = DropDown( + [ + 'to the left of', + 'to the right of', + 'near' + ], + 'near' +); + +BEGIN_PGML +Let [`f`] be a function defined for all [`x`] in the interval [`([$a],[$b]).`] + +We say that [`f`] has [_]{$popup_maxmin} at [`x=[$c]`] if [`f([$c]) [$sign] f(x)`] for all [`x \in ([$a],[$b])`] that are [_]{$popup_near} [`x=[$c].`] +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-1-U-C/9-1-1-U-C-pw-loc-ext-1-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-1-U-C/9-1-1-U-C-pw-loc-ext-1-jms.pg new file mode 100644 index 0000000000..8c5f3ffe44 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-1-U-C/9-1-1-U-C-pw-loc-ext-1-jms.pg @@ -0,0 +1,181 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(26 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +$a = random(-8,-4,1); +$b = $a + random(2,4,1); +$c = $b + random(2,4,1); +$d = $c + random(2,4,1); + +$fm10 = random(-7,7,1); +$fa = random(-6,6,1); +$fb = random(-6,6,1); +$fc = random(-6,6,1); +$fd = random(-6,6,1); +$f10 = random(-7,7,1); + +# determine behaviour at internal singular points +if($fa <= $fm10 && $fa <= $fb) +{$a_maxmin = 'a local minimum';} +elsif($fa >= $fm10 && $fa >= $fb) +{$a_maxmin = 'a local maximum';} +else +{$a_maxmin = 'neither a local maximum nor a local minimum';} + +if($fb <= $fa && $fb <= $fc) +{$b_maxmin = 'a local minimum';} +elsif($fb >= $fa && $fb >= $fc) +{$b_maxmin = 'a local maximum';} +else +{$b_maxmin = 'neither a local maximum nor a local minimum';} + +if($fc <= $fb && $fc <= $fd) +{$c_maxmin = 'a local minimum';} +elsif($fc >= $fb && $fc >= $fd) +{$c_maxmin = 'a local maximum';} +else +{$c_maxmin = 'neither a local maximum nor a local minimum';} + +if($fd <= $fc && $fd <= $f10) +{$d_maxmin = 'a local minimum';} +elsif($fd >= $fc && $fd >= $f10) +{$d_maxmin = 'a local maximum';} +else +{$d_maxmin = 'neither a local maximum nor a local minimum';} + +#produce popups for each endpoint +#cannot have local extrema at endpoints +$popup_m10 = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor a local minimum' + ], + 'neither a local maximum nor a local minimum' +); + +$popup_10 = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor a local minimum' + ], + 'neither a local maximum nor a local minimum' +); + +#produce popups for each singular point + +$popup_a = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor a local minimum' + ], + $a_maxmin +); + +$popup_b = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor a local minimum' + ], + $b_maxmin +); + + +$popup_c = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor a local minimum' + ], + $c_maxmin +); + + +$popup_d = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor a local minimum' + ], + $d_maxmin +); + + +# choose random subsets of points, paired with popup, to ask below +# use eq for string comparison == does not behave correctly for this comparison + +# OPTION TO INCLUDE a) At the point [`x=[$pt1]`] the function [`f`] has [_]{$popup1} +# one end -10 or 10 +$pt1 = list_random("-10","10"); + +if($pt1 eq "-10") +{$popup1 = $popup_m10;} +else +{$popup1 = $popup_10;} + +# one of a or b +$pt2 = list_random("$a","$b"); + +if($pt2 eq "$a") +{$popup2 = $popup_a;} +else +{$popup2 = $popup_b;} + +# one of c or d +$pt3 = list_random("$c","$d"); + +if($pt3 eq "$c") +{$popup3 = $popup_c;} +else +{$popup3 = $popup_d;} + + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] (-9.9,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) -- ($d,$fd); +\draw[red, very thick] ($d,$fd) -- (9.9,$f10); +\draw[red, very thick] (-10,$fm10) circle (3.5 pt); +\draw[red, very thick] (10,$f10) circle (3.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +\Context("Interval"); + +BEGIN_PGML +Consider the following graph of the piecewise defined function [`y=f(x)`] on the open interval [`(-10,10).`] + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +b) At the point [`x=[$pt2]`] the function [`f`] has [_]{$popup2} + +c) At the point [`x=[$pt3]`] the function [`f`] has [_]{$popup3} +END_PGML + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-1-U-C/9-1-1-U-C-quart-ext-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-1-U-C/9-1-1-U-C-quart-ext-jms.pg new file mode 100644 index 0000000000..2d12adfbf2 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-1-U-C/9-1-1-U-C-quart-ext-jms.pg @@ -0,0 +1,103 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(27 March 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-5,-4,1); +$b = $a + random(5,6,1); +$c = $b + random(3,4,1); +$ab = $a*$b; +$ac = $a*$c; +$bc = $b*$c; +$abc = $a*$b*$c; +$sum = $a+$b+$c; +$quad = $ab/2 + $ac/2 + $bc/2; +$k = random(-2,-1,1); + +# fix graph in "bad cases" +if($k > 0 && $c < 4) +{$d = random(-3,-2,1); +$c=4; +$ac = $a*$c; +$bc = $b*$c; +$abc = $a*$b*$c; +$sum = $a+$b+$c; +$quad = $ab/2 + $ac/2 + $bc/2;} +elsif($k < 0 && $c < 4) +{$d = random(2,3,1); +$c=4; +$ac = $a*$c; +$bc = $b*$c; +$abc = $a*$b*$c; +$sum = $a+$b+$c; +$quad = $ab/2 + $ac/2 + $bc/2;} +elsif($k > 0 && abs($b) < 2) +{$d = 0;} +elsif($k < 0 && abs($b) < 2) +{$d = 0;} +elsif($k > 0) +{$d = random(2,3,1);} +elsif($k < 0) +{$d = random(-3,-2,1);} + +Context("Interval"); + +if($k < 0) +{ +$inc = List("(-7,$a)","($b,$c)"); +$dec = List("($a,$b)","($c,7)"); +$locmax = List("$a", "$c"); +$locmin = List("$b"); +} +else +{ +$dec = List("(-7,$a)","($b,$c)"); +$inc = List("($a,$b)","($c,7)"); +$locmax = List("$b"); +$locmin = List("$a", "$c"); +} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-7,0) -- (7,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-10) -- (0,10) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-7,-10) grid (7,10); +\foreach \x in {-6,-4,-2,2,4,6} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-8, -6,-4,-2,2,4,6,8} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-7}:{7}] (\x,{$k*((-$abc/50)*\x + ($quad/50)*(\x*\x) - ($sum/150)*(\x*\x*\x) + (\x*\x*\x*\x)/200)+$d}); +\draw[red] (1.5,9.5) node[outer sep=2pt]{\(y=g(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the function [`y=g(x)`] on the interval [`(-7,7)`]. + +[@ image($graph_image, width => 600, tex_size => 600) @]* + +Identify the [`x`]-values at which [`g`] has local extrema, enter all such values as a list separated by commas. If there are no such [`x`]-values, then enter [|None|]*. + +[`g`] has a local maximum at [`x = \, `] [_]{$locmax}{10} + +[`g`] has a local minimum at [`x = \, `] [_]{$locmin}{10} + +END_PGML + +BEGIN_PGML_SOLUTION +First notice that [`g`] has critical points at [`x=[$a], x=[$b]`] and [`x=[$c].`] In addition, +[`g`] is increasing on the intervals [`[$inc]`] and [`g`] is decreasing on the intervals [`[$dec].`] Therefore, [`g`] has a local maximum at [`x = [$locmax]`], and [`g`] has a local minimum at [`x = [$locmin].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-2-U-C/9-1-2-U-C-pw-der-ext-1-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-2-U-C/9-1-2-U-C-pw-der-ext-1-jms.pg new file mode 100644 index 0000000000..dcdbc6a8ba --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-2-U-C/9-1-2-U-C-pw-der-ext-1-jms.pg @@ -0,0 +1,189 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(27 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +#intervals +# (-10,$a), ($a,$c), ($c,$e), and ($e,10) + +$a = random(-8,-6,1); +$b = $a + random(2,3,1); +$c = $b + random(2,4,1); +$d = $c + random(2,3,1); +$e = $d + random(2,4,1); + +#funciton values + +$fm10 = random(2,7,1)*random(-1,1,2); +$fa = 0; +$fb = random(2,7,1)*random(-1,1,2); +$fc = 0; +$fd = random(2,7,1)*random(-1,1,2); +$fe = 0; +$f10 = random(2,7,1)*random(-1,1,2); + +# determine intervals of increase/decrease +if($fm10 < 0) +{$tentoa = 'decreasing';} +else +{$tentoa = 'increasing';} + +if($fb < 0) +{$atoc = 'decreasing';} +else +{$atoc = 'increasing';} + +if($fd < 0) +{$ctoe = 'decreasing';} +else +{$ctoe = 'increasing';} + +if($f10 < 0) +{$etoten = 'decreasing';} +else +{$etoten = 'increasing';} + +# produce popups +# produce increasing/decreasing popups for each of the four intervals above +$popup_tentoa = DropDown( + [ + 'increasing', + 'decreasing', + ], + $tentoa +); + +$popup_atoc = DropDown( + [ + 'increasing', + 'decreasing', + ], + $atoc +); + +$popup_ctoe = DropDown( + [ + 'increasing', + 'decreasing', + ], + $ctoe +); + +$popup_etoten = DropDown( + [ + 'increasing', + 'decreasing', + ], + $etoten +); + +# determine local extrema behavour at critical points $a, $c and $e +if($fm10 > 0 & $fb < 0) +{$a_maxmin = 'a local maximum';} +elsif($fm10 < 0 & $fb > 0) +{$a_maxmin = 'a local minimum';} +else +{$a_maxmin = 'neither a local maximum nor local minimum';} + +if($fb > 0 & $fd < 0) +{$c_maxmin = 'a local maximum';} +elsif($fb < 0 & $fd > 0) +{$c_maxmin = 'a local minimum';} +else +{$c_maxmin = 'neither a local maximum nor local minimum';} + +if($fd > 0 & $f10 < 0) +{$e_maxmin = 'a local maximum';} +elsif($fd < 0 & $f10 > 0) +{$e_maxmin = 'a local minimum';} +else +{$e_maxmin = 'neither a local maximum nor local minimum';} + +# produce popups for local max / local min / neither +$popup_a = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum' + ], + $a_maxmin +); + +$popup_c = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum' + ], + $c_maxmin +); + +$popup_e = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum' + ], + $e_maxmin +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) .. controls ($b,$fb) .. ($c,$fc); +\draw[red, very thick] ($c,$fc) .. controls ($d,$fd) .. ($e,$fe); +\draw[->,red, very thick] ($e,$fe) -- (10,$f10); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5 pt); +\filldraw[red, very thick] ($e,$fe) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=h^\prime(x)\)}; +END_TIKZ + +BEGIN_PGML +Let [`h`] be a differentiable function. + +Consider the following **graph of the derivative** [`y=h'(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +a) [`h`] has [_]{$popup_a} at [`x=[$a]`] because [`h`] is [_]{$popup_tentoa} on the interval [`(-10, [$a])`] and [_]{$popup_atoc} on the interval [`([$a],[$c]).`] + +b) [`h`] has [_]{$popup_c} at [`x=[$c]`] because [`h`] is [_]{$popup_atoc} on the interval [`([$a], [$c])`] and [_]{$popup_ctoe} on the interval [`([$c],[$e]).`] + +c) [`h`] has [_]{$popup_e} at [`x=[$e]`] because [`h`] is [_]{$popup_ctoe} on the interval [`([$c],[$e])`] and [_]{$popup_etoten} on the interval [`([$e],10).`] + +END_PGML + +BEGIN_PGML_SOLUTION ++ [``h'([$a]) = 0, h'([$c]) = 0 ``] and [``h'([$e]) = 0``], so [`x=[$a], x=[$c]`] and [`x=[$e]`] are all **critical points** of the function [`h.`] + ++ If [`h`] is increasing on the left and decreasing on the right of a critical point [`x=c`], then [`h`] has a local maximum at [`x=c.`] + ++ If [`h`] is decreasing on the left and increasing on the right of a critical point [`x=c`], then [`h`] has a local minimum at [`x=c.`] + ++ If [`h`] is increasing (respectively, decreasing) to the left and right of a critical point [`x=c`], then [`h`] does not have a local extrema at [`x=c.`] + ++ [`h`] is increasing on intervals where [`h'(x)>0,`] and [`h`] is decreasing on intervals where [`h'(x)<0.`] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-2-U-C/9-1-2-U-C-pw-der-ext-2-no-int-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-2-U-C/9-1-2-U-C-pw-der-ext-2-no-int-jms.pg new file mode 100644 index 0000000000..728b37d4b7 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-2-U-C/9-1-2-U-C-pw-der-ext-2-no-int-jms.pg @@ -0,0 +1,144 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(27 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +#intervals +# (-10,$a), ($a,$c), ($c,$e), and ($e,10) + +$a = random(-8,-6,1); +$b = $a + random(2,3,1); +$c = $b + random(2,4,1); +$d = $c + random(2,3,1); +$e = $d + random(2,4,1); + +#funciton values + +$fm10 = random(2,7,1)*random(-1,1,2); +$fa = 0; +$fb = random(2,7,1)*random(-1,1,2); +$fc = 0; +$fd = random(2,7,1)*random(-1,1,2); +$fe = 0; +$f10 = random(2,7,1)*random(-1,1,2); + +# determine local extrema behavour at critical points $a, $c and $e +if($fm10 > 0 & $fb < 0) +{$a_maxmin = 'a local maximum';} +elsif($fm10 < 0 & $fb > 0) +{$a_maxmin = 'a local minimum';} +else +{$a_maxmin = 'neither a local maximum nor local minimum';} + +if($fb > 0 & $fd < 0) +{$c_maxmin = 'a local maximum';} +elsif($fb < 0 & $fd > 0) +{$c_maxmin = 'a local minimum';} +else +{$c_maxmin = 'neither a local maximum nor local minimum';} + +if($fd > 0 & $f10 < 0) +{$e_maxmin = 'a local maximum';} +elsif($fd < 0 & $f10 > 0) +{$e_maxmin = 'a local minimum';} +else +{$e_maxmin = 'neither a local maximum nor local minimum';} + +# produce popups for local max / local min / neither +$popup_a = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum' + ], + $a_maxmin +); + +$popup_c = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum' + ], + $c_maxmin +); + +$popup_e = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum' + ], + $e_maxmin +); + +# popup for critical / singular point + +$crit = DropDown( + [ + 'critical', + 'singular' + ], + 'critical' +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) .. controls ($b,$fb) .. ($c,$fc); +\draw[red, very thick] ($c,$fc) .. controls ($d,$fd) .. ($e,$fe); +\draw[->,red, very thick] ($e,$fe) -- (10,$f10); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5 pt); +\filldraw[red, very thick] ($e,$fe) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f^\prime(x)\)}; +END_TIKZ + +BEGIN_PGML +Let [`f`] be a differentiable function. + +Consider the following **graph of the derivative** [`y=f'(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +a) The function [`f`] has a [_]{$crit} point and [_]{$popup_a} at [`x=[$a].`] + +b) The function [`f`] has a [_]{$crit} point and [_]{$popup_c} at [`x=[$c].`] + +c) The function [`f`] has a [_]{$crit} point and [_]{$popup_e} at [`x=[$e].`] + +END_PGML + +BEGIN_PGML_SOLUTION ++ [``f'([$a]) = 0, f'([$c]) = 0 ``] and [``f'([$e]) = 0``], so [`x=[$a], x=[$c]`] and [`x=[$e]`] are all **critical points** of the function [`f.`] + ++ If [`f`] is increasing on the left and decreasing on the right of a critical point [`x=c`], then [`f`] has a local maximum at [`x=c.`] + ++ If [`f`] is decreasing on the left and increasing on the right of a critical point [`x=c`], then [`f`] has a local minimum at [`x=c.`] + ++ If [`f`] is increasing (respectively, decreasing) to the left and right of a critical point [`x=c`], then [`f`] does not have a local extrema at [`x=c.`] + ++ [`f`] is increasing on intervals where [`f'(x)>0,`] and [`f`] is decreasing on intervals where [`f'(x)<0.`] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-3-Ap-C/9-1-3-Ap-C-fdt-abs-jms-1.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-3-Ap-C/9-1-3-Ap-C-fdt-abs-jms-1.pg new file mode 100644 index 0000000000..137716a82d --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-3-Ap-C/9-1-3-Ap-C-fdt-abs-jms-1.pg @@ -0,0 +1,125 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(27 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = non_zero_random(-6, 6, 1); +$b = non_zero_random(-6, 6, 1); +$left = min($a,$b); +$right = max($a,$b); +$c = non_zero_random(-6, 6, 1); + +#avoid c = a and c = b +if($c == $a || $c == $b) +{$c = 7*random(-1,1,2);} + +$aplusb = $a + $b; +$ab = $a*$b; + +$fder = Formula("x^2-($aplusb)*x+$ab")->reduce(); + +$sign = random(-1,1,2); +if($sign == -1) +{ +$maxmin = 'minimum'; +$g_left = 'decreasing'; +$g_left_pn = 'negative'; +$g_right = 'increasing'; +$g_right_pn = 'postive'; + if($a == $b) + { + $loc_max = "None"; + $loc_min = List("$c"); + } + elsif($c < $a && $c < $b) + { + $loc_max = List("$left"); + $loc_min = List("$c", "$right"); + } + elsif($c > $a && $c > $b) + { + $loc_max = List("$right"); + $loc_min = List("$c", "$left"); + } + else + { + $loc_max = List("$c"); + $loc_min = List("$left", "$right"); + } +} +else +{ +$maxmin = 'maximum'; +$g_left = 'increasing'; +$g_left_pn = 'postive'; +$g_right = 'decreasing'; +$g_right_pn = 'negative'; + if($a == $b) + { + $loc_max = List("$c"); + $loc_min = "None"; + } + elsif($c < $a && $c < $b) + { + $loc_max = List("$c", "$right"); + $loc_min = List("$left"); + } + elsif($c > $a && $c > $b) + { + $loc_max = List("$c", "$left"); + $loc_min = List("$right"); + } + else + { + $loc_max = List("$left", "$right"); + $loc_min = List("$c"); + } +} + + + +BEGIN_PGML +Suppose that [`g`] is a differentiable function, with continuous derivative. Further suppose that [`g`] has only one critical point and that [`g`] has a local [$maxmin] at [`x=[$c].`] + +Suppose that [`f`] is a differentiable function which has first derivative equal to [``f'(x) = g'(x)([$fder]).``] + +Then [`f`] has a local maximum(s) at [`x = \, `] [_]{$loc_max}{20} + +and [`f`] has a local minimum(s) at [`x = \, `] [_]{$loc_min}{20} + +Enter the values that you find as a list separated by commas, if there are no such [`x`]-values, then enter [|None|]*. +END_PGML + +BEGIN_PGML_SOLUTION +Since [`g`] has only one critical point, a local [$maxmin] at [`x=[$c]`] and [`g`] is differentiable, we know that [`g'([$c])=0`] and [`x=[$c]`] is the only critical point of [`g.`] Since [`g'`] is assumed to be continuous, we know that the sign of [`g'`] can only change at [`x=[$c].`] Moreover, since [`g`] has a [$maxmin] at [`x=[$c]`] it must be the case that [`g`] is [$g_left] to the left of [`x=[$c],`] and [`g`] is [$g_right] to the right of [`x=[$c].`] Again, since [`g'`] is continuous we must have that [`g'`] is [$g_left_pn] to the left of [`x=[$c],`] and [`g'`] is [$g_right_pn] to the right of [`x=[$c].`] + +Now factor [`f'(x) = g'(x)([$fder]) = g'(x)(x-[$a])(x-[$b])`], so [`f`] has critical points [`x=[$a]`], [`x=[$b]`] and [`x=[$c],`] the last of these coming from [`g'([$c])=0.`] + +Putting the factorization of [`f'(x)`] together with the information about [`g`] from above, we can make a sign chart to determine the behaviour of [`f`] at its critical points. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-3-Ap-C/9-1-3-Ap-C-fdt-jms-1.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-3-Ap-C/9-1-3-Ap-C-fdt-jms-1.pg new file mode 100644 index 0000000000..bbdf4cd497 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-3-Ap-C/9-1-3-Ap-C-fdt-jms-1.pg @@ -0,0 +1,103 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(27 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(1, 6, 1); +$aa = $a**2; +$aafour = 4*$aa; +$sign = random(1,3,1)*random(-1,1,2); + +$aasign = $aa*$sign; + +$c = random(-3,3,1); #critical point + +$f = Formula("$sign*((x-$c)^2 - $aa)/((x-$c)^2 + $aa)")->reduce(); +$fder = Formula("$sign*$aafour*(x-$c)/(((x-$c)^2 + $aa)^2)")->reduce(); + +$ans = Compute("$sign*(-$aa)/($aa)"); + +if($sign < 0) +{ +$left = 'increasing'; +$left_der = 'positive'; +$right = 'decreasing'; +$right_der = 'negative'; +$ext = 'maximum'; +} +else +{ +$left = 'decreasing'; +$left_der = 'negative'; +$right = 'increasing'; +$right_der = 'positive'; +$ext = 'minimum'; +} + +$incdec1 = DropDown( + [ + 'increasing', + 'decreasing' + ], + $left +); + +$incdec2 = DropDown( + [ + 'increasing', + 'decreasing' + ], + $right +); + +$maxmin = DropDown( + [ + 'maximum', + 'minimum' + ], + $ext +); + + +BEGIN_PGML +Consider the function [``f(x) = [$f]``] which has first derivative equal to [``f'(x) = [$fder]``]. + +[`f`] changes from [_]{$incdec1} to [_]{$incdec2} at [`x = \, `] [_]{$c}{2}, so the local and global [_]{$maxmin} value of [`f`] is [`f(`][_]{$c}{2}[`) = \, `][_]{$ans}{2}. +END_PGML + +BEGIN_PGML_SOLUTION +[``0 = f'(x) = [$fder]``] has one solution [`x=[$c],`] so [`x=[$c]`] is the only critical point of [`f`]. + +[`f'(x)`] is [$left_der] for [`x<[$c]`], so [`f`] is [$left] to the left of [`x=[$c]`] + +[`f'(x)`] is [$right_der] for [`x>[$c]`], so [`f`] is [$right] to the right of [`x=[$c]`] + +Therefore, [`f`] changes from [$left] to [$right] at [`x = [$c]`], so the local and global [$ext] value of [`f`] is [`f([$c]) = [$ans].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-danny-1.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-danny-1.pg new file mode 100644 index 0000000000..93a7537142 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-danny-1.pg @@ -0,0 +1,53 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(January 2025) +## Institution(University of Calgary) +## Author(Danny Glin) +## Level(3) +# MATH 249 Learning Outcomes 9-1-3-Ap-C and/or 9-1-4-Ap-C + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 9, 1) * random(-1, 1, 2); +$b = non_zero_random(-7, 7, 1); +$f = Formula("$a*(x-$b)^2")->reduce(); +if ($a > 0) { + $maxmin = 'a local minimum'; + $negpos = 'positive'; +} else { + $maxmin = 'a local maximum'; + $negpos = 'negative'; +} + +$popup = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum' + ], + $maxmin +); + +BEGIN_PGML +The function [`f(x)=[$f]`] has [_]{$popup} when [`x=[$b]`]. +END_PGML + +$twoa = 2 * $a; +$fp = Formula("$twoa*(x-$b)")->reduce(); +BEGIN_PGML_SOLUTION +[`f'(x)=[$fp]`], and [`[$fp]=0`] when [`x=[$b]`]. To check if there is a local maximum or local minimum when [`x=[$b]`], use the second derivative test: [`f''(x)=[$twoa]`], which is [$negpos] when [`x=[$b]`], so [`f`] has [$maxmin] when [`x=[$b]`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-1.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-1.pg new file mode 100644 index 0000000000..cf6f3f7af7 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-1.pg @@ -0,0 +1,89 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(31 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$sign = random(1,3,1)*random(-1,1,2); +$c = 4*random(1,3,1); #coefficient +$pt = 3*$c/4; + +$f = Formula("$sign*x^4 - $sign*$c*x^3")->reduce(); +$fder = Formula("4*$sign*x^3 - 3*$sign*$c*x^2")->reduce(); +$fderder = Formula("12*$sign*x^2 - 6*$sign*$c*x")->reduce(); + +$sdt = Compute("12*$sign*($pt)^2 - 6*$sign*$c*($pt)"); +$ans = Compute("$sign*($pt)^4 - $sign*$c*($pt)^3"); + +if($sdt < 0) +{ +$posneg = '<'; +$ext = 'maximum'; +} +else +{ +$posneg = '>'; +$ext = 'minimum'; +} + +$ineq = DropDown( + [ + '>', + '<', + '=' + ], + $posneg +); + +$maxmin = DropDown( + [ + 'maximum', + 'minimum' + ], + $ext +); + + +BEGIN_PGML +Consider the function [``f(x) = [$f].``] + +At the critical point [`x=[$pt]`] we have that [`f''([$pt]) = \, `] [_]{$sdt}{5} so [`f''([$pt]) `] [_]{$ineq} [`0`], and by the Second Derivative Test [`f`] has a local [_]{$maxmin} at [`x=[$pt].`] The corresponding local extreme value of [`f`] is [`f([$pt]) = \, `][_]{$ans}{5}. +END_PGML + +$c3 = 3*$c; + +BEGIN_PGML_SOLUTION +The function [``f(x) = [$f]``] has first derivative equal to [``f'(x) = [$fder]``] and second derivative equal to [``f'(x) = [$fderder].``] + +Then [``f'(x) = x^2(4x-[$c3])``] so [`f'([$pt])=0`] and [`x=[$pt]`] is indeed a critical point of [`f.`] + +Now [`f''([$pt]) = [$sdt] [$ineq] 0`], so by the Second Derivative Test [`f`] has a local [$maxmin] at [`x=[$pt].`] + +The corresponding local extreme value of [`f`] is [`f([$pt]) = [$ans].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-2.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-2.pg new file mode 100644 index 0000000000..2028a325e6 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-2.pg @@ -0,0 +1,88 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(31 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +Context()->variables->add(k=>"Real"); + +$a = non_zero_random(-5,5,1); +$aa = $a**2; +$c = non_zero_random(-9,9,1); +$ver = random(-1,1,2); + +$f = Formula("k^3*x -k*x^3/3 + $c")->reduce(); +$fder = Formula("k^3 - k*x^2")->reduce(); +$fdera = Formula("k^3 - k*($aa)")->reduce(); +$fderder = Formula("-2*k*x")->reduce(); +$fderdera = Formula("-2*k*[$a]")->reduce(); + +if($ver < 0) +{ +$posneg = '>'; +$maxmin = 'minimum'; +$ans = Compute("-$a"); +} +else +{ +$posneg = '<'; +$maxmin = 'maximum'; +$ans = Compute("$a"); +} + +$ineq = DropDown( + [ + '>', + '<', + '=' + ], + $posneg +); + + + +BEGIN_PGML +Let [`k`] be an unknown constant and consider the function [``f(x) = [$f].``] + +Determine the value(s) of [`k`] that guarantee that [`f`] has a local [$maxmin] at [`x=[$a].`] + +[`k \, = `] [_]{$ans}{2} + +Enter the value(s) that you find as a list separated by commas, if there are no such values of [`k`], then enter [|None|]*. + +**Hint**: Use the Second Derivative Test. +END_PGML + +BEGIN_PGML_SOLUTION +Given [``f(x) = [$f]``], we first compute that [``f'(x) = [$fder]``] and [``f''(x) = [$fderder].``] + +Since [`f`] is differentiable for all [`x`], in order for [`f`] to have a [$maxmin] at [`x=[$a]`] it must be the case that [`x=[$a]`] is a critical point of [`f`]. That is, we need [`0 = f'([$a]) = [$fdera] = k(k^2-[$aa])`] and so [`k=[$a]`] or [`k = -[$a].`] + +For [`f`] to have a [$maxmin] at [`x=[$a]`] we need to have [`f''([$a]) [$ineq] 0.`] So since [`f''([$a]) = [$fderdera]`] we must take only [`k=[$ans].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-3.pg b/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-3.pg new file mode 100644 index 0000000000..92be6d51bf --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-1-4-Ap-C/9-1-4-Ap-C-sdt-jms-3.pg @@ -0,0 +1,191 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(31 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl" +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +# four distinct x points +$a = random(-9,2,1); +$b = $a + random(1,4,1); +$c = $b + random(1,4,1); +$d = $c + random(1,4,1); + +# first der values + +$fpa = random(0,1,1)*random(-9,9,1); #want high chance of being 0 +$fpb = random(0,1,1)*random(-9,9,1); +$fpc = random(0,1,1)*random(-9,9,1); +$fpd = random(0,1,1)*random(-9,9,1); + +# second der values + +$fppa = random(0,1,1)*random(-19,19,1); #want high chance of being 0 +$fppb = random(0,1,1)*random(-19,19,1); +$fppc = random(0,1,1)*random(-19,19,1); +$fppd = random(0,1,1)*random(-19,19,1); + +# determine max/min + + +if($fpa == 0) +{ + if($fppa > 0) + {$maxmin_a = 'a local minimum';} + elsif($fppa < 0) + {$maxmin_a = 'a local maximum';} + else + {$maxmin_a = 'there is not enough information to determine if f has a local extrema';} +} +else +{ +$maxmin_a = 'neither a local maximum nor local minimum'; +} + +if($fpb == 0) +{ + if($fppb > 0) + {$maxmin_b = 'a local minimum';} + elsif($fppb < 0) + {$maxmin_b = 'a local maximum';} + else + {$maxmin_b = 'there is not enough information to determine if f has a local extrema';} +} +else +{ +$maxmin_b = 'neither a local maximum nor local minimum'; +} + +if($fpc == 0) +{ + if($fppc > 0) + {$maxmin_c = 'a local minimum';} + elsif($fppc < 0) + {$maxmin_c = 'a local maximum';} + else + {$maxmin_c = 'there is not enough information to determine if f has a local extrema';} +} +else +{ +$maxmin_c = 'neither a local maximum nor local minimum'; +} + +if($fpd == 0) +{ + if($fppd > 0) + {$maxmin_d = 'a local minimum';} + elsif($fppd < 0) + {$maxmin_d = 'a local maximum';} + else + {$maxmin_d = 'there is not enough information to determine if f has a local extrema';} +} +else +{ +$maxmin_d = 'neither a local maximum nor local minimum'; +} + +# make popups + +$popup_a = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum', + 'there is not enough information to determine if f has a local extrema' + ], + $maxmin_a +); + +$popup_b = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum', + 'there is not enough information to determine if f has a local extrema' + ], + $maxmin_b +); + +$popup_c = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum', + 'there is not enough information to determine if f has a local extrema' + ], + $maxmin_c +); + +$popup_d = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum', + 'there is not enough information to determine if f has a local extrema' + ], + $maxmin_d +); + +BEGIN_PGML + +Let [`f`] be a twice-differentiable function and that [`f''`] is continuous. Further suppose that the following data is known about [`f'`] and [`f''`]. + +[# + [. [`f'([$a]) = [$fpa] `] .] + [. [`f'([$b]) = [$fpb] `] .] + [. [`f'([$c]) = [$fpc] `] .] + [. [`f'([$d]) = [$fpd] `].]* + [. [`f''([$a]) = [$fppa] `] .] + [. [`f''([$b]) = [$fppb] `] .] + [. [`f''([$c]) = [$fppc]`] .] + [. [`f''([$d]) = [$fppd]`].]* +#] + +Complete the following statements about the existence of local extrema of [`f`]. + ++ [`f`] has [_]{$popup_a} at [`x=[$a].`] + ++ [`f`] has [_]{$popup_b} at [`x=[$b].`] + ++ [`f`] has [_]{$popup_c} at [`x=[$c].`] + ++ [`f`] has [_]{$popup_d} at [`x=[$d].`] + +END_PGML + +BEGIN_PGML_SOLUTION +If [`f`] has a local extrema (maximum/minimum) at [`x=a`], then since [`f`] is differentiable it must be the case that [`f'(a)=0`]. + +Therefore, if [`f'(a)\neq 0`], then [`f`] has neither a local maximum nor local minimum at [`x=a`]. + +Suppose that [`f'(a) = 0`], so [`x=a`] is a critical point of [`f`], now we are in the situation where we can apply the Second Derivative Test. + ++ If [`f''(a) < 0`], then [`f`] has a local maximum at [`x=a.`] ++ If [`f''(a) > 0`], then [`f`] has a local minimum at [`x=a.`] ++ If [`f''(a) = 0`], then we do not have enough information to determine if [`f`] has a local extrema at [`x=a.`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-2-1-R-C/9-2-1-R-C-crit-sing-def-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-2-1-R-C/9-2-1-R-C-crit-sing-def-jms.pg new file mode 100644 index 0000000000..629686610d --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-2-1-R-C/9-2-1-R-C-crit-sing-def-jms.pg @@ -0,0 +1,81 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(26 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) +# MATH 249 Learning Outcomes 9-1-0-R-C + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$ver = random(-1, 1, 2); #version +# interval +$a = random(-5,3,1); +$b = $a + 5*random(2,3,1); +# sample point 1 in interval +$t = random(0.2, 0.4, 0.2); +$c = $t*$b + (1-$t)*$a; + +# sample point 2 in interval +$s = random(0.6, 0.8, 0.2); +$d = $s*$b + (1-$s)*$a; + +$popup_crit = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'a critical point', + 'a singular point' + ], + 'a critical point' +); + +$popup_sing = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'a critical point', + 'a singular point' + ], + 'a singular point' +); + +# randomize order that they appear +$pt1 = list_random("$c","$d"); + +if($pt1 eq "$c") +{ +$val1 = 'is equal to 0'; +$val2 = 'does not exist'; +$pt2 = "$d"; +$popup1 = $popup_crit; +$popup2 = $popup_sing;} +else +{$pt2 = "$c"; +$val1 = 'does not exist'; +$val2 = 'is equal to 0'; +$popup1 = $popup_sing; +$popup2 = $popup_crit;} + +BEGIN_PGML +Let [`f`] be a function defined for all [`x`] in the interval [`([$a],[$b]).`] + ++ We say that [`f`] has [_]{$popup1} at [`x=[$pt1]`] if [`f'([$pt1])`] [$val1]. + ++ We say that [`f`] has [_]{$popup2} at [`x=[$pt2]`] if [`f'([$pt2])`] [$val2]. + +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-2-3-U-I/9-2-3-U-I-crit-sing-tf-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-2-3-U-I/9-2-3-U-I-crit-sing-tf-jms.pg new file mode 100644 index 0000000000..7d7915e71f --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-2-3-U-I/9-2-3-U-I-crit-sing-tf-jms.pg @@ -0,0 +1,70 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(27 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2,5,1); +$b = $a + non_zero_random(-3,3,1); + +$maxmin = list_random("maximum", "minimum"); + +$critsing = list_random("critical", "singular"); +if($critsing eq "critical") +{$critsing2 = "singular";} +else +{$critsing2 = "critical";} + +$true = DropDown( + [ + 'true', + 'false', + 'impossible to tell' + ], + 'true' +); + +$false = DropDown( + [ + 'true', + 'false', + 'impossible to tell' + ], + 'false' +); + +BEGIN_PGML +Let [`f`] be a function of one real variable [`x`]. + +For each of the following statements, determine if the statement is **always true** or **always false** (that is, it is true/false for all functions [`f`]). + ++ [_]{$false} If [`f`] has a local [$maxmin] at [`x=[$a]`], then [`f`] has a [$critsing] point at [`x=[$a].`] + ++ [_]{$false} If [`f`] has a [$critsing2] point at [`x=[$b]`], then [`f`] has a local maximum or local minimum at [`x=[$b].`] + +END_PGML + +BEGIN_PGML_SOLUTION +Both statements are false. + ++ A local maxmimum or a local minimum will occur at **either** a critical point or a singular point, so this statement is not true for all functions [`f`]. For example, the local minimum of [`f(x) = |x|`] occurs at the singular point [`x=0`], and the local minimum of [`f(x) = x^2`] occurs at the critical point [`x=0.`] + ++ A critical/singular point does not necessarily have to be a local extreme point. For example, [`f(x) = x^3`] has a critical point at [`x=0`] and this point is not a local extrema. Similarly, [`f(x) = \sqrt[3]{x}`] has a singular point at [`x=0`] and this point is not a local extrema. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-2-3-U-I/9-2-3-U-I-fermat-evt-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-2-3-U-I/9-2-3-U-I-fermat-evt-jms.pg new file mode 100644 index 0000000000..155f1f5cfe --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-2-3-U-I/9-2-3-U-I-fermat-evt-jms.pg @@ -0,0 +1,68 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Increasing/decreasing functions and local extrema) +## Date(27 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2,5,1); +$b = $a + non_zero_random(-3,3,1); +$c = $b + random(2,5,1); + +$maxmin = list_random("maximum", "minimum"); + +if($maxmin eq "maximum") +{$maxmin2 = "minimum";} +else +{$maxmin2 = "maximum";} + +$critsing = DropDown( + [ + 'point of discontinuity', + 'inflection point', + 'critical or singular point' + ], + 'critical or singular point' +); + +$global = DropDown( + [ + 'a critical point only', + 'a singular point only', + 'an end point of the interval only', + 'a critical point, a singular point, or an endpoint of the interval', + 'none of the above, there does not have to be a global extrema' + ], + 'a critical point, a singular point, or an endpoint of the interval' +); + +BEGIN_PGML +Let [`f`] be a function of one real variable [`x`]. Complete the following statements. + ++ If [`f`] has a local [$maxmin] at [`x=[$a]`], then [`x=[$a]`] is a [_]{$critsing} of [`f.`] + ++ If [`f`] is continuous on the closed interval [`[[$b],[$c]]`], then the global [$maxmin2] of [`f`] on [`[[$b],[$c]]`] occurs at [_]{$global}. + +END_PGML + +BEGIN_PGML_SOLUTION ++ A local maxmimum or a local minimum will occur at **either** a critical point or a singular point. + ++ For a continuous function on a closed interval, a global maximum or a global minimum will occur at a critical point, a singular point or an endpoint of the closed interval. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-3-0-R-C/9-3-0-R-C-glob-ext-def-2-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-3-0-R-C/9-3-0-R-C-glob-ext-def-2-jms.pg new file mode 100644 index 0000000000..a76f9cdb34 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-3-0-R-C/9-3-0-R-C-glob-ext-def-2-jms.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Global extrema) +## Date(26 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) +# MATH 249 Learning Outcomes 9-3-0-R-C + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$ver = random(-1, 1, 2); #version +# interval +$a = random(-5,3,1); +$b = $a + 4*random(1,4,1); +# sample point in interval +$t = random(0.25, 0.75, 0.25); +$c = $t*$b + (1-$t)*$a; + +if ($ver > 0) { + $maxmin = 'a global (absolute) minimum'; + $sign = '≤'; +} else { + $maxmin = 'a global (absolute) maximum'; + $sign = '≥'; +} + +$popup_sign = DropDown( + [ + '≤', + '≥', + '=' + ], + $sign +); + +$popup_quant = DropDown( + [ + 'for some', + 'for all', + 'for at least one', + 'for no more than one', + ], + 'for all' +); + +BEGIN_PGML +Let [`f`] be a function defined for all [`x`] in the interval [`([$a],[$b]).`] + +We say that [`f`] has [$maxmin] at [`x=[$c]`] if [`f([$c])`] [_]{$popup_sign} [`f(x)`] [_]{$popup_quant} [`x`] in the interval [`([$a],[$b]).`] +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-3-0-R-C/9-3-0-R-C-glob-ext-def-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-3-0-R-C/9-3-0-R-C-glob-ext-def-jms.pg new file mode 100644 index 0000000000..f157d65da9 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-3-0-R-C/9-3-0-R-C-glob-ext-def-jms.pg @@ -0,0 +1,66 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Global extrema) +## Date(26 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) +# MATH 249 Learning Outcomes 9-3-0-R-C + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$ver = random(-1, 1, 2); #version +# interval +$a = random(-5,3,1); +$b = $a + 4*random(1,4,1); +# sample point in interval +$t = random(0.25, 0.75, 0.25); +$c = $t*$b + (1-$t)*$a; + +if ($ver > 0) { + $maxmin = 'a global (absolute) minimum'; + $sign = '\geq'; +} else { + $maxmin = 'a global (absolute) maximum'; + $sign = '\leq'; +} + +$popup_maxmin = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a maximum nor minimum' + ], + $maxmin +); + +$popup_quant = DropDown( + [ + 'for some', + 'for all', + 'for at least one', + 'for no more than one', + ], + 'for all' +); + +BEGIN_PGML +Let [`f`] be a function defined for all [`x`] in the interval [`([$a],[$b]).`] + +We say that [`f`] has [_]{$popup_maxmin} at [`x=[$c]`] if [`f(x) [$sign] f([$c]) `] [_]{$popup_quant} [`x`] in the interval [`([$a],[$b]).`] +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.pg b/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.pg new file mode 100644 index 0000000000..c9caede841 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.pg @@ -0,0 +1,87 @@ +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Global extrema) +## Level(2) +######################################################### +DOCUMENT(); +## Initializations: (Required) +loadMacros( +"PG.pl", +"PGcourse.pl", +"PGstandard.pl", +"MathObjects.pl", +"parserRadioButtons.pl", +"parserPopUp.pl", +"PGchoicemacros.pl", +"weightedGrader.pl", +"RserveClient.pl", + "parserMultiAnswer.pl", + +); + +install_weighted_grader(); +Context->("Numeric"); + + +######################################################## +# START R +######################################################## +rserve_start(); + + +rserve_finish(); +######################################################## +# END R +######################################################## +################################################ + +TEXT(beginproblem()); + +# Show which parts of the question the student got right +$showPartialCorrectAnswers = 1; + +$mc1=new_checkbox_multiple_choice(); +$mc1->qa( +#Enter the question text here: +"Select ALL statements that are $BBOLD TRUE $EBOLD about \(f(x)\) on the closed interval \([A,C]\) based on this graph. $BR", +# Enter the text of the correct answer here +"\(f(x)\) has a global minimum at a critical point", +"\(f(x)\) has a global maximum at an endpoint", +); + +$mc1->extra( +# Enter any additional incorrect answers here: +"\(f(x)\) has exactly one global extrema", +"\(f(x)\) has a global maximum at \(C\)", +"\(f(x)\) has no local extrema on \([A,C]\)", +); + +# Question Preamble: +BEGIN_TEXT +The following is a graph of the function \(f(x)\). +$BR +$BR +\{ image( "9-3-2-U-C-loc-glob-ext-ms-cmm.png", width=>448, height=>672, +tex_size=>700 ) \} +$BR +$BR +END_TEXT + +BEGIN_TEXT +$BR +\{ $mc1->print_q() \} +\{ $mc1->print_a() \} +$BR +END_TEXT + +Context("Numeric"); + + +#WEIGHTED_ANS(Real(5)-> cmp(tolType => 'absolute', tolerance => 0.00009,) , 100 ); +#ANS($multipart->cmp( tolerance => 0.0001), ); +#ANS( checkbox_cmp( $mc1->correct_ans() ) ); +ANS( checkbox_cmp( $mc1->correct_ans() ) ); +##################################################### + +ENDDOCUMENT(); # This should be the last executable line in the problem. + diff --git a/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.png b/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.png new file mode 100644 index 0000000000000000000000000000000000000000..ef9463da0732c1b7f066458bb5a7fb95f4b800fb GIT binary patch literal 15431 zcmb8Wby!qi*Ec>h42=RZgv6kLFcP9t(u1T(3?WFTl!VgFU=Tw|3kVD-2nHZ2jY=aS zARS6K(ha{oe((Ff-rxH?_a86U1)OtsoW0jtd&Ot16OPePK1ab!0f9iy-BD4{hCrYV z5C{xU1_Mu?8c9rpe^57V<=c>gF4jeG1Gkk^mxDk)#ZVqw5QBU2M=Azx5Xkv&gkNZj zOP)0ZA~|+PK~C4(bakBE+gLwf?{R13?)ZCQW}{+jADxwy+w1*_ce9)4kT~mF=@F;(KFm&bJ>Kn-=PS6xO|WFGr8LcUH}5GpFiR z?&xa4hYz~crC;wMWUF4;H1fN0Lm=6=u`qN383qz|0ZIYU;y^<$slrhZg>VQl7DbDP z&|HBbAlVB4S0_5ymuE!lrUl~tdVX0#Ou8)4OB~gt3(;1cUI9CaXInvgGPNZeUtHEt z7sR|+cgx?)5@81?hoj>Zi{s zL@RL|HnAT=|1|j+IP93N*NoQ9DwFmTK|Y^1B3*DP%t%X%{eU!%opI%cKP_Z+K3ppQ z=0FFDY#M;3#>VZJ2u?iicJ(rKe%G=1Qi$_p`aR{@^xcOzTU%V_>7Egz=U{njJvn6E zb{RsiV5b*oGs|Z-{zo>bc)O|o_?Nz{kClDk0QKoUk%4{q)Z3tg5_yx8Z<{W#29Xsc z-YPXc{&0VNoFBJ4ktKW9CRt1iDUicPJE;$^Od9F)xW%F=G^0_QIt2D45}4xPQ3#0wAq84BcbzTb<)sq zH(g>LyC>O<LL%+KcHrg#c#`HUdwVn3{}k?(}mc-2}+O}4?s?$w72?3?dpKXY7Z zJE(q`xVT>x(LR|F1-UdNjh>X~8v(MxB1Zp#H{GXwP-M=zz240zwzy8{vc+h|hGzlH zT&(;&=EtP}Z)~@;fRn+G(rW$BY|+omY65u=!xcEg@PPdzTTAL>P$mNF1jOzk zi-e|_=XkmIz=xHD=fuNJJ}IF~*DBnjX=5`h-Rkxc!&R#u5?K)4^7B3V=S9NR#vZ*k z>Nm&__qx{U;<(Q4#+%P2=%%<}glNym)rE zspO^(UCS%g3&xWh%pQPEXU-1GE$F5wc#1!>uw-IBUaaWXAa^T6A+2696pKI+NHOkKEYP)7{ zt;w$*0oFM$yV>V_of$gtS)W|q>AK4YV#x1v|L_D_}?f7DiZ7x!M+du4agjd!u` zo+{7wuj*vM=$%qJh|wo2?A#lklX9usFP09Hf|6J}m^Ze`4D>GE>lKHtUw5mmq{O?TxiZD|%Fosx(l zEF9?9pZq6E$Eaq*eU&z_>9lw)L$9a3=D~yT z?4lw}IT?qxq@*MzML+#HtSMQ~!pHi}>vV1#8$w=dW6jOYOG^$rx877&SHFI3wK`H3 zIhiF06ZS1})1Ey_X!fUOvz*EbMY>ieGD0J{IXouo0!GW7=$?9M$?o*)Sfkv3=e>KU z-SMfktgQ3p4SDIF_O(huw%)Qo)s^?K%%ElpBB&Y;xbzexYoaz#SAXr<2x6wrq6dy(JR+avz&j_nDey8 zz2~i{ddOcT@4hsNs!DnO{P}C!D5cT*ptH@{j;2Yi7=eAXNRjBsHgdwLv)yq}-nYyc`F zI~1@n-_Y=7T4EB4!ucu8Qy$xlK7i%WsZt|~SYW~=Gfq8gr?DfH>BYoYHX8hm1}98I z23ZdiDm5`SGmV=tru;S*@Lmy|t%k~uZ>M(z7vSdFa689Vtr`{0*eoz`mKOi%@_g*G zitg(;(v>HWsHnx1HcHB3#V>R1*Z?qVNwIa+zSREO?4`m*_)0J&DkbeUR6_W|t-xRn zlsP5b?)%tHv+>oPbgvX;m?NP*W%z2wVtXH+beRm(z(Ce>zp7GU@!6W>C^t3qJ`0rj z?xv`n{$$afcA+EG+yZXLKh8>l`Ta{=A`80%R-+r2oRXfwh4cD+j$#M`Ww!eLR&Mq( zgpw0&rPjr1Vz;`y#F8Wc`GA8&-4KuAs%gviZdd}_uC{R2aLwK{l5Q1T?H8dsKd-MeAsZYWm0g0mYVbL8nP7(8m3@Booo8D=A zxXp5ct|p-Cj15+_NIG5>aq+^feE6BCz$^&B?^b&J~WAqa<~CH9rF#L5E>WDz$^ zI2uUX#1~rAUh?}Fpv=m}q`a)t7TgUuvYuOp3tbv_v;)6MX;A-dJFon;w-SgP8IfP)L*@U|MfU5}HF^^|0H|fM|Jau>R|q7kntm%`kCR;L9L0SqD6`kqJ6&-# zYFdw25JgNdUCMuk00KM6)lEEgN`XXNMwdOBmdYXJ{gdk5ph|`j;OA}CaFbwP17BAx(zHn z4L;TILaMSQ8TEZ4=)0@pIG07%1>~<273?A{K9ypUMB2FJo7&%-IKC-jV5o?}kakt| zZ8c3gFb9<4B@+6stSL)NN*Y7h+{d<2{5hup@M0Tfti#8ZcBx)+gwDd-oi2E(>&TKMgwBEbbIB%9PIQDAYd^{5dN; z?(Fs8L5?q;KJA#2-qDp_@jFMz9|_ES?8`7xwP?uC;F@#58M(-+rECHD9tQ4Tg;A5x zEnPd;&H%Adz%E^?!EYH;O7anLD`A%!qy+@{1hf#gp^%@--pEDa>OP`eMeLG%-PHZO2l})PrC=1I>${4&Yxt9ZRmc_x z+M}c=UO-0k#xqj22*}UQY#5kL45lk~6HOX&0!Ro{N+k`x%7BRiLr{y_@H}UR?#c`J zD4-Km!40tS2jXqnx74w)Ik4V*Z@qW>Txe)K2YN?W>aI`IW8fV(6cHqW7N)D&B$Nom zs+cg73_LGm&V(E@7Yh*rof9(S`5E0aEaiC2Z^QGtX1=KrmI6D|H1!BxkhDrZ~r@Jl))3pVv-TDhK6zYlN^;L zH-U(pgT9jmqPgKJODO?$yNupp%utpH3~pJ33V|D*&_A#Wxxdf#uM4POTbNqXN2|B%t%ftAIq&@VQ`1#%3+zGtOQexkr1mrgNQt9%3uwZ zzp5c}6Gy7{?Y{|JM@sZ*uk7K*V#w~7&A65NL%UeVaJtoQ-Q-CpAD@F}nw|S}spVx zu|BZssjsK^j@0nS32$$tdO>!WK_krsYR31?-1&bkSP_WF(7|~F$n{&We$@RQ@|WkK z4hW#9hVAcUn?Lj=(3Z%6W+Xj>I2~(1gC{A@LmSWvhWz=0cZ8VR!SjM!NAc}Xx{{E9 z53Qgtxn`pf*l;jJ!D9|0{+cdllX=(+^BQI)6LIFUb1>VksBy(GhYGkElXBV!bg z{X&ZmaT7sTo}*x5fjZn0D%LLUOH5DnK_CcZ2%Djt>)J%2%pKu*v~5~aem9{c;Ki}V zw6aswz^(xYnnVH1{3DMz9q>9b0wR+AhcDWImYV4z)Iq_%t>Ab}SnCfLow+qUPp*wP z9UPIrSK<3^jMY9(H_Y!7o+I=A<)Qol)VY#reSxWoh_H8E`@kgsrW;TSCI+YjCj6T6 zkMC4kuPijV8}i67(^WTVyIqu(aR-y=jk6Dlj|puHLn# zWvmh1^IP6hz~;Ss|DKPR7XuWXgTavjLpC>K6MM4z?5fRpFBvMks zGN<}CZ8UWSpI)v9E)pv|FH7L_P1>OBEFA_&N5k`ev;m$~v;K1#C0BhIVpL7?fD-cb5;{slhJqK^$?MEu1jF;S zV2a2o=NNh_Pc@(^p@gofP4ram2GN}%5$w9H-7ZyYS! zhWmWGVa^246K~~7Q973U>yNIHVccFA;mCkmYnH>N$^&kH%R&(32<)3QHsgvr`b2A_L5)0%>WAicy;2WEYqDZ(WYxOB74<*7`a0K-N|)~o7R!>Q*Yec-u_@# zUzeM!B(0%h=itE0%j^0~YNL_Pfe$YL>sKpS`{4LC+&ea74+L-z3u|+cp@yK3sM837 ziiCxQCDV5)|Hm+eT?j-Zepo!;zU`XU(7YDrNA>r1?NgW6e?vG)&y~FQ?~k_M$_hAC zj0(iLAMLJgDuVz76K}B6Mw>bB*hiEu=~b{`rKhj|zU6XRSy@w4)6M(Oi;IiFbDUhQ z6kHf^D)JC#HLBJqyWJz79g~lY)YjEaNXcI*;6NY{YH6bC1K1>1f;ARTDlad;C}aan z{BW(`UaH8$e-43`|Kg9`?}Mp{p(&!*95o&jTTj2S3(D0BvI-2W+ow)SN+N*;|9r16 zdoU9Z0#r>)OG{wA7oN#%eHSt<^y+#g-V)8`xBolT%zvZl^z;>eSuON)!UdFvMHVTo~-&YKQpBssR&c2XR@E4nWz295WU3%?rfag(l&ncB_ zwVM##DQ$r0u3LKVm6ZSSM$6zwqrvfU0cyqS{rr8&P0WQ8z1R|ProX$=tEXQq%tk2? zJPGcSg?7oQRX3LHllJy@;8QDL+vR_-nA8WJyyOhHQ~(IvrlFadk-|?Qx!&eJpYFxL z$S8ZXQj+cL-~br+7U}&9dccXk3(q^q+for-3%0Sb0X&EpbHBw(OiY|6>QuE}chsK= zWd<^%?5ytczDdQ>+tkcVR^rNoh#KlLk7d0w`W~RMWQs{gWM}G!Zd@{gEIfgTu=`zG zfD_JfrXtdVBLjFF0krtJ_@tHg4iG{N+n7ef7s4STSA19!J}yE*TP_#TwmYXZ2CWIt zyP6m>(IftEr8~ljR=+Am+l@l@&_W$lf75TMH4*_KR=@gV7GR1dh<|Q7RimdCgJA^e zR@L}>44)Q5u>)k7k~ji_griCnfCwvLQ-A)X-vCM>9h{1LamllfP|wr7^hmZ9v8ng6 zJ8rm?ZyKsf){hePFhU(H!OVx?MIb)=S+N_vpAt^$4%EWSm0*&mD<7y9z|sBmM?nhs z4JJS>h`M;%WZz8*x4lb?W`yU3i?g6 z*Zw(=sh826>N0IyJ>^s z71jTs6#0eOcRu|q4l@GY@5oQFu@MoJ5yTD)DSOiEKdXfa2D%ie2EO|%T0{vuDu1tA z|0Tr(oKQm!w7_j=s&+tC&@1A_mI~Exr~oaV;S;cnDrYb1Kh*+vGfWKD&oMV|+djpb zjzROm^A!1aXIiJIwp6fsV3f*T&)L~GxFhjB{STT%+UXOOb<;)$v9G<$ z5ztaOtRe1ISkRuO=5-Vcq!GyN)lIey4r!pV2|Gm`aK$$$Na3Nder?swV%GCHw?@B9 zU7+!T=jDJI6-yGFQo2O9Z7RtjBXo9{iC1GZJW@LT-bl2e2wME(?%Wzz z;X#B6f<}gC`i)y$bTqc`yr017N?FjhnevGvC(y!yHTv1quq#K#Whojncph<^nENKq z>e2)mhBA(BgHe*?F!Z>X7%fGEXJ`cLItS~2@|AB2xL%LJTY7-&1x^C6&L2HJP-Q?`_5O97DBxq4NJKbDsn4 z53B@%M%~&uyY&HSmi2cAkAH{$AH3*IV*c#}7tbghi%J= zQO$(5n=d+eA5ccE&OEwF1^tQ!ugA>;f`cz10cnD_O#>vfsqL>P;X(v4}LyLwMd!o0k7c zP6ok|K=ae$2Y4n|X{oqhRkwm=fm5_h3B30hcq7o`0b5&t#Zev$y8&2lmffKxEF_PZ z_eLPXuEP2mW>6VCDcB(nw3D1hBk+{=s1F`cV)HrCPQRB}B!IwtlE;p~0N;Tqm1CqN zbu=1*yKWf3$h7+|9xj|$vujT_rm7|w$N?KC?(%Oc-zrEce$tMOKd29udv^eu;P z!8J9u1a<2gZJ|R>*1LDSWxX%1*}mIIUMr~m?C2J?ztx<7*CC$U{r~WOJwM~P{wCxi zUn)}lcA8njd4qWC6B;|B66kD5NI&r}z%8FZ%94qRH|bm8C>kPoUM)YF(^c2pSo#e# z6%Bru!{zBN^+DRm5g=fpE8#DCS=0_lbuo z;T$Ae4m%RN5{%oH@`}}xqLBve_kr-jp$^KxLc>wl0dmBabETRhmyc3nSR4M50@j~v z&9luBVCV&t z=&vakv(0TETylWt1%UWW8uQPU&zrgE)4w6b^{b%e`FyN~*iBk$1t2kn|5%jt#NY)$ zT43(4f>T{VN+3g>f^S#16_Pv*Sl5RDQ3H`mHW1xZs-6yMd6R%|KpY!s@#W1pZ*yKU zj1i@58$s<6!}vV%0C)q*L9b#4>xPenvoyv;Lx<6` z4mSlh1$s(6lZaHBAlWfpnx$`Pcte9%xsONb>fVZ?LApV_LP2+el!Dmv9&Y_dF|nAD}(Y2MC&!13dU6 zb>X$Q`4kxj1u(}wG%;X7I43#_09u_XvDXM719vp!x$4@(mJBrl`!FC3S6@9L`W840 zGxvw1bbtH2nVttmSPg)on%FN3DvJ1Q+pqYt3Je9161 zp<~(#zeG_qv{2mM%f$3JLZU>JgqVW^{rDrx+#F8xso=tg{QSp}n~ijud9n~;uuMZ& zM9`Y$UfASkK8XsK$x{Za0jf_SkFA9MeYh|L=uQOHTuW{G;7PwemW$=;cPDW(b5v9@3+^b=~ z?XMYs{xe|YqJH;Rg99>P`-j+s_v`xlp!JE`DIH;%-61Ql(AN6b=Q>ZHgM1p* z`Sa}~+{p!h;jbC#{pAhcS^&4kE`mQMUHwI7hsm;jw!?F&qo-3>cDx;?0#c9m*3Iht zD;IF@S}yaOT z2?IX)jgUVq5>b^%`)?uVK)^cs$tpB2Ej6`qKcFK?ASI<;Mw{S(Mq1oim{oalgJ(*= zz_=37j+EWM=l3HJkvfi)F4i5b=>(D3g+ZE_inZysTy+#JhKSSuf4MMBr205hf`B4+ znG=0O^x)PB2>63706y~Q91LLi+wCcLhKHtqpE!lC5?&Au=TDb1;7Gg@QNS) zwi6LJOH_pZT!KO(ZC411H7gGEjf^X92^w~*&(HginG3@Z)3JZk9GCi38jip+VyJpz z(SJ&{%&wCzfPHz-DAWLmApog$lXghqR#Ax2!JC^j~+le+7_X6fU_u#a)&H zr$hwY&;ZzVbWFeqq5?;8Fp0!8g3;38`6CY`h*%o@Xz^hUzg6x_DT6!|a5Wy%;KS6S zr$BPS_$fru+7)SUK6JL$1aL?6B{Xdc6(*}Z*oW&EFANde+1+7jCP`R|LNhRE+%N3$1@;e-wcF1rf>Jc#% z7asR|e|nxAgI2^^W&>?Qw*j=sdXDKZZ0ObhUZZ2D2=wV-@<7EonZx+L?ET)*`2wRi zYmdcfLG{u90CmgTa^C+7A5f@ymly&t-F{X1s#p1yb;2}c1&1Y!$xa3N$4!sR>@D5J z)hk9#3=Hy-cF*6V0s%HhKy;CGvyZs=6Sh=7D8p`(Vbs2!t1&;%^c>Q}l|av1A>&7) z)Kzga1`hTcS&X69#nVxc!BN~9T7-eM&ed!_{J^(D~n6-z_{MA|ch zeggu<-7(Y?R`=gMAN}f~jhW;S8x+?T3*}|acS$BTHv$v22uTZwaT*|$$uUDn&^^9F zE~ej&1>vcTwd|ciovP^!{wk`v8 z7EUy6)Rhd@N&&izp+LeOla87FKXnHrIS?wAlg~$pa#D$$xH1LWy_+R?bnR zaiD2){*Uq{`Nm=6r-U{%x-K zM=upOia^HY2c=6#qtpe$`nC(4373w*#3kg7-b}YL;vNEu`)aJ_Q$RaoyVZCBLcaNB z+&^!Whof@2Y6R$@6rlLx#uY+N5yO)Z?oHTQew^mh495jl@*+XH6~ISbflM(If86$m z+J*CZ+|HGUQZMRb^-21~mfLY#mYrPoA=8R1Jxj`UdXmukmT8DgBrg?&#`h~5%z_B z{Z_@4X69LYeLd&W!$IV^`*C!RVvcN3nhkc|p{oN>~n?nd$8>c#pX$S%0@LyRt?V<^1cQq=ZmEI2p9~ z#_o8D$HjlDPpspJzDWEUtnqv26`>hr(JnsCF<~J00PxKhyL(^RS%;rDj{P^+%IL?hUKK5XH#nV)_O3{d`6rK7taL zi0+m8evv$6sHg5hJbTS}lV^u08q3k_eC^YqQxD_rQOL<)LCw+{`|#sZ18J-W&{&@i z4pLm-d!~(%(4VN6`4%pheFIteMu5*b#3L7W2Hd$n4fK)hdqob#SL6E4mdcvv+Nb%t zI&|Of@wQbT@=DwXqB>N41%U^30=B7D))CJGKKQSFUwJ4-k}k#vYPNiqpdTV2iYvgC zPfJ=^0=0BMC8HeTJ;H@f7Uv}AzPFN*&^;k1&senQ&<@%^7#(`l2=Io+jMnJHtO{to z#|TB?URa*Fp`oX5HmC(?Oh4^48{dh-%{uD2(7{ntQv<~9cO`0*eFgU-H#9CsTqK8U z9wnsF=lHbq@(%$=_w#3uETDTb=md(3igfC(#b#ySf02C6$eb|R@)M7wq`D7t|9OJZ z{Q2?iLh#5rD9-z;8Gei;;N;DYAHLgd)ysc+DL;>bZ5tDS&TOi;1#`u91 z&%-S7;Ic2in4n_AIK^?YzF*ppM%dmxOm5or>9d9&0Vz`6wC~A~3tA;EOS6#CY|hTmVqLwW&8EWa9GHX+QlpCxNZ5w8X`3c#e5v zzKv1yoqFn{f8Z{;G5<}Y>c)KO{f{P_Fa8f-VIwg;N%xk#5A(Kq$2bWa>-kpomrV7e z41lrKj|(4>&S?ATe?C{41Rd3&SrI8o*#@ zJuiDu(lifzTmn31>G@lEA-RO4t(gpCXR&&2Nixt(GEj@bhB5G21`FO(345E8a?Ajf z^C^C+9^hc<@3_d7+^5xi%@gRR+nmd{(|anq%cJ){7Uk-YEJP{xd7o9M)8c!=sDQ8Q zr)d%=kjtHE|KQl!4UQ6a9nCffzm`){{(fM)LT*x~PtQwh*d}P!f40eoVDXu07q3pn zm2SOUByyiL@Gw|5c14slP;HZ@X=Z<`p^ZdAmFl;XWWc!A;qZL7q1#LO#yE;St!hj$ z6EFR}U+B8)@$I)LJ;7I3jLZQc-HU!JRqWS*OwU#;|JQZ*s^?e!kX=S+J*A#Bz7zrK zh1I+{tcP zsKeMFIC&kR37^fnjAnrUO%d=+d81zR4$t<_*PX@pOB4cdkW1(+>Ki!0PJN|~djA&I z3b|PlR7!sM7(|f?N-;iGayuoWu)hDu+0M(0lM+t1o1x3F-oY3T0jn54o>PtCH@$I; zI$ag|=z5eVnS|=dgM>q#J2#?Cov9s;A?I8IZc`&(117}3ijW;2`q@7rXcTF$zd*78 zNaMjQcJp1U@WD7QbR^uU8&eYye zboQ}FQtD+;%Mn=0@X9OQ1J81^6(LJ3C~8hgN#(+oeXpMmU^QL$P8&G{E}n92XJN{J z>ghlLpg7)|`Y{Lbmcfu1vWNvF{JBNepM_ zfZ~1tCn;`h{A}-pgAxK1)%;xCBBi_$qs!DonKi~8KV(`k~2dl}jjXQ!VwEBPlC6af7es_qh^C(Rsxzuwr1wHapOaosuj zzLM~#z!wdcPqi96ikopimaToH9a%hWJ--p*x_Dx{&g-$UeStd?0-!}}Z-#eg7u1Zi$`cyWr5U~)9o6=cU z)s9c--2U4S7UUgslWkIL;q2&4ir2_;VZEI1EFGw(dN&rZ-}6uky8Tww?$n#JO+<2B8MF1VIhq~x~ph;KI@^>2jO~A8XWk;|P$&yJQRW_vW zgpWo5=0Ap`zFYX(Yz`c`&@_R3+xkG`+^3!(-`{V>Ru`A4uO$l*u-EHRF^S!^0iQNQ zelJN+5Gtu}IGp*FR@wwTMak4vJ+ikbaD;O|hdfX5U;Q$B^-jCuQRTY|=8;2dD@3Z~ z;n};x7pUUCc+r6SK6>n7AonHI)^X=#G*mAv`?c4C+u5d`evt6`F>pCgw?j#*j+8-m zab3E`LC+I+NMs&IhI#otR1e|5TcEA=%4K!@_XeT+AN%wI0e5yep=1A_rq#pqKQEH3qvL&vu z%04c=KviZQ=3zm?_njDOcUh|`@90um31 z+=Rr`{dmE#Ye!ivg6@IYuF3w$Q(db;qO;G-r#zlE6UVdbg`gHe{ zIP1O3zF^>CS8~u{w91fC#tJ|C32QsGh;9K z#@;3s30+89%x>nyjWO2ALB7ZT4wP9z$up>d+1=f>@5{|6HT2o)6w@y>{rI1GcB4oo zZIG)eS;)vKjm28qq~ZnC#D7$G^smpO{)2;qjP&-kZD0E|Wlvf;V?Zg*kH6p5r3OsX zx*V+stb6R3ClEfzITcGZNturNkEyM^1#;$@t;+g{}wM@eOw7X*0Z#DVqlGj(4W0u zSXtpmp)fJQ%R`^6lub;=-^!lYYemQ|l>tr#vfPZx)o1J?vhR4YKcuIWO#m zT3&$KPZ1_qU0YjQSh!#9xw;==Cdhegu#&6|ipoxhb%8if%VUmFMW ztaGje&IUh7%rv-qcDy&RQy(;c98z84wl}UGr=Gx^M?O-4YYgeaC~(Tx@4&M_O9C zm?7ZV?yjeSrXD~OGV4v(Q!>h3PnjYXEZk@b1IMd89@;&*d-<#B%;MqBa?=^_Os&yI zJ#K7l>`%b8OCP`wsIacCHbM>z4B+@|pTtm`EioVWOx7@GC>#z=OM)zC{nqe3HygWJ zC==B~0tqi4hn!;}?B1&7Jne3F#qq-H80X>QEB=|3WYt?;k`WORnE|^7S`l{@sS5v= zFTD;cNKxQz>u_9LncUts3SG)x`S#V9J66$w`i}&m_Q2lq?DXXK_#QIo_;J}iI_AuL z>v+Ma7BQTLoQ1{jTgkYE7kY$pS^eWS>WR}|X7yvl4<4) z7x~aRe`*CFJ)j`+rX`k8-bPOoq`WMtA?)6jo)QbbofL&$rY&g=0|{+Sud~)kC)vXs zcD5Hm$iuFT?t8W3E7blDCU*>r2MWi6hiUOe$siwAFp`u^E!HLrfPy4O^`k|`wa?4V z{yQ!ZIwkB^rMkU8?>Hwby|yz0&igDVl*z>N VZJoJx9|C^vC~7Da+%|vm{{er^69fPN literal 0 HcmV?d00001 diff --git a/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-pw-loc-glob-ext-1-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-pw-loc-glob-ext-1-jms.pg new file mode 100644 index 0000000000..d9c22f18c0 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-pw-loc-glob-ext-1-jms.pg @@ -0,0 +1,286 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Global extrema) +## Date(26 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl", "parserPopUp.pl"); + +$a = random(-8,-4,1); +$b = $a + random(2,4,1); +$c = $b + random(2,4,1); +$d = $c + random(2,4,1); + +$fm10 = random(-7,7,1); +$fa = random(-6,6,1); +$fb = random(-6,6,1); +$fc = random(-6,6,1); +$fd = random(-6,6,1); +$f10 = random(-7,7,1); + +# determine GLOBAL behaviour at endpoints and interior singular +if($fm10 <= $fa && $fm10 <= $fb && $fm10 <= $fc && $fm10 <= $fd && $fm10 <= $f10) +{$m10_maxmin = 'a global (absolute) minimum';} +elsif($fm10 >= $fa && $fm10 >= $fb && $fm10 >= $fc && $fm10 >= $fd && $fm10 >= $f10) +{$m10_maxmin = 'a global (absolute) maximum';} +else +{$m10_maxmin = 'neither a global maximum nor a global minimum';} + +if($fa <= $fm10 && $fa <= $fb && $fa <= $fc && $fa <= $fd && $fa <= $f10) +{$a_maxmin = 'a global (absolute) minimum';} +elsif($fa >= $fm10 && $fa >= $fb && $fa >= $fc && $fa >= $fd && $fa >= $f10) +{$a_maxmin = 'a global (absolute) maximum';} +else +{$a_maxmin = 'neither a global maximum nor a global minimum';} + +if($fb <= $fm10 && $fb <= $fa && $fb <= $fc && $fb <= $fd && $fb <= $f10) +{$b_maxmin = 'a global (absolute) minimum';} +elsif($fb >= $fm10 && $fb >= $fa && $fb >= $fc && $fb >= $fd && $fb >= $f10) +{$b_maxmin = 'a global (absolute) maximum';} +else +{$b_maxmin = 'neither a global maximum nor a global minimum';} + +if($fc <= $fm10 && $fc <= $fa && $fc <= $fb && $fc <= $fd && $fc <= $f10) +{$c_maxmin = 'a global (absolute) minimum';} +elsif($fc >= $fm10 && $fc >= $fa && $fc >= $fb && $fc >= $fd && $fc >= $f10) +{$c_maxmin = 'a global (absolute) maximum';} +else +{$c_maxmin = 'neither a global maximum nor a global minimum';} + +if($fd <= $fm10 && $fd <= $fa && $fd <= $fb && $fd <= $fc && $fd <= $f10) +{$d_maxmin = 'a global (absolute) minimum';} +elsif($fd >= $fm10 && $fd >= $fa && $fd >= $fb && $fd >= $fc && $fd >= $f10) +{$d_maxmin = 'a global (absolute) maximum';} +else +{$d_maxmin = 'neither a global maximum nor a global minimum';} + +if($f10 <= $fa && $f10 <= $fb && $f10 <= $fc && $f10 <= $fd && $f10 <= $fm10) +{$ten_maxmin = 'a global (absolute) minimum';} +elsif($f10 >= $fa && $f10 >= $fb && $f10 >= $fc && $f10 >= $fd && $f10 >= $fm10) +{$ten_maxmin = 'a global (absolute) maximum';} +else +{$ten_maxmin = 'neither a global maximum nor a global minimum';} + +#produce GLOBAL popups for each endpoint +$popup_m10 = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $m10_maxmin +); + +$popup_10 = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $ten_maxmin +); + +#produce GLOBAL popups for each singular point + +$popup_a = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $a_maxmin +); + +$popup_b = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $b_maxmin +); + + +$popup_c = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $c_maxmin +); + + +$popup_d = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $d_maxmin +); + +# determine LOCAL behaviour at internal singular points + +if($fa <= $fm10 && $fa <= $fb) +{$a_maxmin_loc = 'a local minimum';} +elsif($fa >= $fm10 && $fa >= $fb) +{$a_maxmin_loc = 'a local maximum';} +else +{$a_maxmin_loc = 'neither a local maximum nor a local minimum';} + +if($fb <= $fa && $fb <= $fc) +{$b_maxmin_loc = 'a local minimum';} +elsif($fb >= $fa && $fb >= $fc) +{$b_maxmin_loc = 'a local maximum';} +else +{$b_maxmin_loc = 'neither a local maximum nor a local minimum';} + +if($fc <= $fb && $fc <= $fd) +{$c_maxmin_loc = 'a local minimum';} +elsif($fc >= $fb && $fc >= $fd) +{$c_maxmin_loc = 'a local maximum';} +else +{$c_maxmin_loc = 'neither a local maximum nor a local minimum';} + +if($fd <= $fc && $fd <= $f10) +{$d_maxmin_loc = 'a local minimum';} +elsif($fd >= $fc && $fd >= $f10) +{$d_maxmin_loc = 'a local maximum';} +else +{$d_maxmin_loc = 'neither a local maximum nor a local minimum';} + +#produce LOCAL popups for each singular point +$popup_a_loc = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor a local minimum' + ], + $a_maxmin_loc +); + +$popup_b_loc = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor a local minimum' + ], + $b_maxmin_loc +); + + +$popup_c_loc = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor a local minimum' + ], + $c_maxmin_loc +); + + +$popup_d_loc = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor a local minimum' + ], + $d_maxmin_loc +); + + +# choose random subsets of points, paired with popup, to ask below +# use eq for string comparison == does not behave correctly for this comparison + + +# one of a or b +$pt1 = list_random("$a","$b"); + +if($pt1 eq "$a") +{$popup1 = $popup_a; +$popup2 = $popup_a_loc;} +else +{$popup1 = $popup_b; +$popup2 = $popup_b_loc;} + +# one of c or d +$pt2 = list_random("$c","$d"); + +if($pt2 eq "$c") +{$popup3 = $popup_c; +$popup4 = $popup_c_loc;} +else +{$popup3 = $popup_d; +$popup4 = $popup_d_loc;} + + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) -- ($d,$fd); +\draw[red, very thick] ($d,$fd) -- (10,$f10); +\filldraw[red, very thick] (-10,$fm10) circle (2.5 pt); +\filldraw[red, very thick] (10,$f10) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +\Context("Interval"); + +BEGIN_PGML +Consider the following graph of the piecewise defined function [`y=f(x)`] on the closed interval [`[-10,10].`] + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +a) At the point [`x=[$pt1]`] the function [`f`] has [_]{$popup1} and [`f`] has [_]{$popup2}. + +b) At the point [`x=[$pt2]`] the function [`f`] has [_]{$popup3} and [`f`] has [_]{$popup4}. + +END_PGML + + +ENDDOCUMENT(); + + +# For testing GLOBAL + +a) At the point [`x=-10`] the function [`f`] has [_]{$popup_m10} + +a) At the point [`x=[$a]`] the function [`f`] has [_]{$popup_a} + +a) At the point [`x=[$b]`] the function [`f`] has [_]{$popup_b} + +a) At the point [`x=[$c]`] the function [`f`] has [_]{$popup_c} + +a) At the point [`x=[$d]`] the function [`f`] has [_]{$popup_d} + +a) At the point [`x=10`] the function [`f`] has [_]{$popup_10} + +# For testing LOCAL + +a) At the point [`x=[$a]`] the function [`f`] has [_]{$popup_a_loc} + +a) At the point [`x=[$b]`] the function [`f`] has [_]{$popup_b_loc} + +a) At the point [`x=[$c]`] the function [`f`] has [_]{$popup_c_loc} + +a) At the point [`x=[$d]`] the function [`f`] has [_]{$popup_d_loc} + diff --git a/Contrib/UCalgary/249-9-0-0-C/9-3-3-U-C/9-3-3-U-C-pw-glob-ext-1-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-3-3-U-C/9-3-3-U-C-pw-glob-ext-1-jms.pg new file mode 100644 index 0000000000..f2d6248187 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-3-3-U-C/9-3-3-U-C-pw-glob-ext-1-jms.pg @@ -0,0 +1,211 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Global extrema) +## Date(26 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl", "parserPopUp.pl"); + +$a = random(-8,-4,1); +$b = $a + random(2,4,1); +$c = $b + random(2,4,1); +$d = $c + random(2,4,1); + +$fm10 = random(-7,7,1); +$fa = random(-6,6,1); +$fb = random(-6,6,1); +$fc = random(-6,6,1); +$fd = random(-6,6,1); +$f10 = random(-7,7,1); + +# determine behaviour at endpoints and interior singular +if($fm10 <= $fa && $fm10 <= $fb && $fm10 <= $fc && $fm10 <= $fd && $fm10 <= $f10) +{$m10_maxmin = 'a global (absolute) minimum';} +elsif($fm10 >= $fa && $fm10 >= $fb && $fm10 >= $fc && $fm10 >= $fd && $fm10 >= $f10) +{$m10_maxmin = 'a global (absolute) maximum';} +else +{$m10_maxmin = 'neither a global maximum nor a global minimum';} + +if($fa <= $fm10 && $fa <= $fb && $fa <= $fc && $fa <= $fd && $fa <= $f10) +{$a_maxmin = 'a global (absolute) minimum';} +elsif($fa >= $fm10 && $fa >= $fb && $fa >= $fc && $fa >= $fd && $fa >= $f10) +{$a_maxmin = 'a global (absolute) maximum';} +else +{$a_maxmin = 'neither a global maximum nor a global minimum';} + +if($fb <= $fm10 && $fb <= $fa && $fb <= $fc && $fb <= $fd && $fb <= $f10) +{$b_maxmin = 'a global (absolute) minimum';} +elsif($fb >= $fm10 && $fb >= $fa && $fb >= $fc && $fb >= $fd && $fb >= $f10) +{$b_maxmin = 'a global (absolute) maximum';} +else +{$b_maxmin = 'neither a global maximum nor a global minimum';} + +if($fc <= $fm10 && $fc <= $fa && $fc <= $fb && $fc <= $fd && $fc <= $f10) +{$c_maxmin = 'a global (absolute) minimum';} +elsif($fc >= $fm10 && $fc >= $fa && $fc >= $fb && $fc >= $fd && $fc >= $f10) +{$c_maxmin = 'a global (absolute) maximum';} +else +{$c_maxmin = 'neither a global maximum nor a global minimum';} + +if($fd <= $fm10 && $fd <= $fa && $fd <= $fb && $fd <= $fc && $fd <= $f10) +{$d_maxmin = 'a global (absolute) minimum';} +elsif($fd >= $fm10 && $fd >= $fa && $fd >= $fb && $fd >= $fc && $fd >= $f10) +{$d_maxmin = 'a global (absolute) maximum';} +else +{$d_maxmin = 'neither a global maximum nor a global minimum';} + +if($f10 <= $fa && $f10 <= $fb && $f10 <= $fc && $f10 <= $fd && $f10 <= $fm10) +{$ten_maxmin = 'a global (absolute) minimum';} +elsif($f10 >= $fa && $f10 >= $fb && $f10 >= $fc && $f10 >= $fd && $f10 >= $fm10) +{$ten_maxmin = 'a global (absolute) maximum';} +else +{$ten_maxmin = 'neither a global maximum nor a global minimum';} + +#produce popups for each endpoint +$popup_m10 = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $m10_maxmin +); + +$popup_10 = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $ten_maxmin +); + +#produce popups for each singular point + +$popup_a = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $a_maxmin +); + +$popup_b = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $b_maxmin +); + + +$popup_c = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $c_maxmin +); + + +$popup_d = DropDown( + [ + 'a global (absolute) maximum', + 'a global (absolute) minimum', + 'neither a global maximum nor a global minimum' + ], + $d_maxmin +); + + +# choose random subsets of points, paired with popup, to ask below +# use eq for string comparison == does not behave correctly for this comparison + +# OPTION TO INCLUDE a) At the point [`x=[$pt1]`] the function [`f`] has [_]{$popup1} +# one end -10 or 10 +$pt1 = list_random("-10","10"); + +if($pt1 eq "-10") +{$popup1 = $popup_m10;} +else +{$popup1 = $popup_10;} + +# one of a or b +$pt2 = list_random("$a","$b"); + +if($pt2 eq "$a") +{$popup2 = $popup_a;} +else +{$popup2 = $popup_b;} + +# one of c or d +$pt3 = list_random("$c","$d"); + +if($pt3 eq "$c") +{$popup3 = $popup_c;} +else +{$popup3 = $popup_d;} + + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) -- ($d,$fd); +\draw[red, very thick] ($d,$fd) -- (10,$f10); +\filldraw[red, very thick] (-10,$fm10) circle (2.5 pt); +\filldraw[red, very thick] (10,$f10) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +\Context("Interval"); + +BEGIN_PGML +Consider the following graph of the piecewise defined function [`y=f(x)`] on the closed interval [`[-10,10].`] + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +a) At the point [`x=[$pt1]`] the function [`f`] has [_]{$popup1} + +b) At the point [`x=[$pt2]`] the function [`f`] has [_]{$popup2} + +c) At the point [`x=[$pt3]`] the function [`f`] has [_]{$popup3} + +END_PGML + + +ENDDOCUMENT(); + +# For testing + +a) At the point [`x=-10`] the function [`f`] has [_]{$popup_m10} + +a) At the point [`x=[$a]`] the function [`f`] has [_]{$popup_a} + +a) At the point [`x=[$b]`] the function [`f`] has [_]{$popup_b} + +a) At the point [`x=[$c]`] the function [`f`] has [_]{$popup_c} + +a) At the point [`x=[$d]`] the function [`f`] has [_]{$popup_d} + +a) At the point [`x=10`] the function [`f`] has [_]{$popup_10} diff --git a/Contrib/UCalgary/249-9-0-0-C/9-3-4-U-C/9-3-4-U-C-pw-der-glob-ext-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-3-4-U-C/9-3-4-U-C-pw-der-glob-ext-jms.pg new file mode 100644 index 0000000000..8d61b4e6cb --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-3-4-U-C/9-3-4-U-C-pw-der-glob-ext-jms.pg @@ -0,0 +1,131 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Global extrema) +## Date(27 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +#critical point +$a = non_zero_random(-4,4,1); + +# funciton values +$fm10 = non_zero_random(-5,5,1); +$fa = 0; #critical point +$f10 = non_zero_random(-5,5,1); + +# determine local extrema behavour at critical point x = $a +if($fm10 > 0 & $f10 < 0) +{$a_maxmin = 'a local and global maximum'; +$conl = $fm10+random(1,2,1); +$conr = $f10-random(1,2,1); +$max_pt = 'a critical point'; +$min_pt = 'an endpoint of [-10, 10]';} +elsif($fm10 < 0 & $f10 > 0) +{$a_maxmin = 'a local and global minimum'; +$conl = $fm10-random(1,2,1); +$conr = $f10+random(1,2,1); +$max_pt = 'an endpoint of [-10, 10]'; +$min_pt = 'a critical point';} +elsif($fm10 < 0 & $f10 < 0) +{$a_maxmin = 'neither a local/global maximum nor local/global minimum'; +$conl = $fm10-random(1,2,1); +$conr = $f10-random(1,2,1); +$max_pt = 'an endpoint of [-10, 10]'; +$min_pt = 'an endpoint of [-10, 10]';} +elsif($fm10 > 0 & $f10 > 0) +{$a_maxmin = 'neither a local/global maximum nor local/global minimum'; +$conl = $fm10+random(1,2,1); +$conr = $f10+random(1,2,1); +$max_pt = 'an endpoint of [-10, 10]'; +$min_pt = 'an endpoint of [-10, 10]';} + +# produce popups for local max / local min / neither +$popup_a = DropDown( + [ + 'a local maximum but not global maximum', + 'a local and global maximum', + 'a local minimum but not global maximum', + 'a local and global minimum', + 'neither a local/global maximum nor local/global minimum' + ], + $a_maxmin +); + +$popup_max = DropDown( + [ + 'a critical point', + 'a singular point', + 'an endpoint of [-10, 10]' + ], + $max_pt +); + +$popup_min = DropDown( + [ + 'a critical point', + 'a singular point', + 'an endpoint of [-10, 10]' + ], + $min_pt +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] (-9.9,$fm10) .. controls (-6,$conl) .. ($a,$fa); +\draw[red, very thick] ($a,$fa) .. controls (6, $conr) .. (9.9,$f10); +\draw[red, very thick] (-10,$fm10) circle (3 pt); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\draw[red, very thick] (10,$f10) circle (3 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=g^\prime(x)\)}; +END_TIKZ + +BEGIN_PGML +Let [`g`] be a function that is continuous on [`[-10,10]`] and differentiable on [`(-10,10)`] + +Consider the following **graph of the derivative** [`y=g'(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +a) At [`x=[$a],`] the function [`g`] has [_]{$popup_a} on the interval [`[-10,10].`] + +b) The global (absolute) maximum of [`g`] on the interval [`[-10,10]`] occurs at [_]{$popup_max}. + +c) The global (absolute) minimum of [`g`] on the interval [`[-10,10]`] occurs at [_]{$popup_min}. + +END_PGML + +BEGIN_PGML_SOLUTION +Recall that in general: + ++ If [`g`] is increasing on the left and decreasing on the right of a critical/singular point [`x=c`], then [`g`] has a local maximum at [`x=c.`] + ++ If [`g`] is decreasing on the left and increasing on the right of a critical/singular point [`x=c`], then [`g`] has a local minimum at [`x=c.`] + ++ If [`g`] is increasing (respectively, decreasing) to the left and right of a critical/singular point [`x=c`], then [`g`] does not have a local extrema at [`x=c.`] + ++ [`g`] is increasing on intervals where [`g'(x)>0,`] and [`g`] is decreasing on intervals where [`g'(x)<0.`] + +In this case, [`g`] has one critical point at [`x=[$a]`], so we can apply the Global (General) Interval Method to determine that if [`h`] has a local extrema at [`x=[$a]`], then this point is also a global extrema. In this case the other extrema must occur at an endpoint of [`[-10,10].`] + +If [`x=[$a]`] is not a local extrema, then both the global maximum and global minimum must occur at the end points of [`[-10,10].`] Can you determine which one occurs at each endpoint? + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-4-1-R-A/9-4-1-R-A-evt-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-4-1-R-A/9-4-1-R-A-evt-jms.pg new file mode 100644 index 0000000000..0d4cede3b1 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-4-1-R-A/9-4-1-R-A-evt-jms.pg @@ -0,0 +1,71 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Global extrema) +## Date(27 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2,5,1); +$b = $a+ random(2,3,1); + + +$cont = DropDown( + [ + 'well-defined', + 'piecewise', + 'continuous' + ], + 'continuous' +); + +$closed = DropDown( + [ + 'closed', + 'open', + 'connected' + ], + 'closed' +); + +$both= DropDown( + [ + 'at least one of', + 'at most one of', + 'both', + 'neither' + ], + 'both' +); + +$global = DropDown( + [ + 'local', + 'global' + ], + 'global' +); + + + +BEGIN_PGML +Complete the following statement of the **Extreme Value Theorem**. + +If [`f`] is a [_]{$cont} function on the [_]{$closed} interval [`[[$a],[$b]]`], then [`f`] attains [_]{$both} a [_]{$global} maximum and minimum on [`[[$a],[$b]]`]. + +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-4-3-Ap-C/9-4-3-Ap-C-closed-int-jms-1.pg b/Contrib/UCalgary/249-9-0-0-C/9-4-3-Ap-C/9-4-3-Ap-C-closed-int-jms-1.pg new file mode 100644 index 0000000000..318e1f079c --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-4-3-Ap-C/9-4-3-Ap-C-closed-int-jms-1.pg @@ -0,0 +1,102 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Global extrema) +## Date(31 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$c = random(-2,2,1); #critical point inside the interval +$d = $c + random(3,4,1)*random(-1,1,2); #second critical point outside of the interval +$a = $c - random(1,2,1); #left end point +$b = $c + random(1,2,1); #right end point + +if($c + $d == 0) #make sure quadratic term nonzero +{$d = $d+1;} + +$sign = random(-1,1,2); +$cplusd = $c+$d; +$cd = $c*$d; + +$quad = 3*$sign*$cplusd; +$lin = 6*$sign*$cd; +$cub = 2*$sign; + +$g = Formula("$cub*x^3 - $quad*x^2 + $lin*x")->reduce(); +$gder = Formula("3*$cub*x^2 - 2*$quad*x + $lin")->reduce(); +$gder_fac = Formula("$sign*6*(x-$c)(x-$d)")->reduce(); + +$ga = Compute("$cub*($a)^3 - $quad*($a)^2 + $lin*($a)"); +$gb = Compute("$cub*($b)^3 - $quad*($b)^2 + $lin*($b)"); +$gc = Compute("$cub*($c)^3 - $quad*($c)^2 + $lin*($c)"); +$gd = Compute("$cub*($d)^3 - $quad*($d)^2 + $lin*($d)"); + +$maxval = max($ga, $gb, $gc); +$minval = min($ga, $gb, $gc); + +# not possible that value of the function is the same at a critical point in the interval and endpoint, +# but it is possible that the values of the funciton at the endpoints of the interval are equal +# it will happen that the value at the critical point outside of the interval is equal to the value at one of the endpoints + +if($maxval == $ga && $maxval == $gb) +{$max = List('$a','$b');} +elsif($maxval == $ga) +{$max = $a;} +elsif($maxval == $gb) +{$max = $b;} +else +{$max = $c;} + +if($minval == $ga && $minval == $gb) +{$min = List('$a','$b');} +elsif($minval == $ga) +{$min = $a;} +elsif($minval == $gb) +{$min = $b;} +else +{$min = $c;} + +BEGIN_PGML +Let [`g(x) = [$g].`] + +The global (absolute) maximum value of [`g`] on [`[[$a],[$b]]`] occurs at [`x=`][_]{$max}{5} and the maximum value is [_]{$maxval}{5}. + +The global (absolute) minimum value of [`g`] on [`[[$a],[$b]]`] occurs at [`x=`][_]{$min}{5} and the minimum value is [_]{$minval}{5}. + +If the extreme value occurs at multiple [`x`]-values, then enter the [`x`]-value(s) that you find as a list separated by commas; if there are no such values, then enter [|None|]*. +END_PGML + +BEGIN_PGML_SOLUTION +First [``g'(x) = [$gder] = [$gder_fac]``] so [`g`] has critical points at [`x=[$c]`] and [`x=[$d]`], but only [`x=[$c]`] is in the interval [`[[$a],[$b]]`]. + +Now we consider the values of [`g`] at the end points and the critical points inside the interval [`[[$a],[$b]]`] + ++ [`g([$a]) = [$ga]`] ++ [`g([$c]) = [$gc]`] ++ [`g([$b]) = [$gb]`] ++ But we cannot consider [`g([$d]) = [$gd]`] since [`[$d]\notin[[$a],[$b]].`] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-4-3-Ap-C/9-4-3-Ap-C-closed-int-jms-2.pg b/Contrib/UCalgary/249-9-0-0-C/9-4-3-Ap-C/9-4-3-Ap-C-closed-int-jms-2.pg new file mode 100644 index 0000000000..a8de56737c --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-4-3-Ap-C/9-4-3-Ap-C-closed-int-jms-2.pg @@ -0,0 +1,93 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Global extrema) +## Date(31 March 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$sign = random(-1,1,2); +$c = $sign*random(1,4,1); #critical point inside the interval +$a = -abs($c)-random(1,2,1); #left end point +$b = abs($c)+random(1,2,1); #right end point + +$g = Formula("x*e^(-x/$c)")->reduce(); +$gder = Formula("e^(-x/$c) - x/$c*e^(-x/$c)")->reduce(); +$gder_fac = Formula("e^(-x/$c)(1-x/$c)")->reduce(); + +$ga = Compute("$a*e^(-$a/$c)"); +$gb = Compute("$b*e^(-$b/$c)"); +$gc = Compute("$c*e^(-1)"); + +$maxval = max($ga, $gb, $gc); +$minval = min($ga, $gb, $gc); + +# not possible that value of the function is the same at a critical point in the interval and endpoint, +# but it is possible that the values of the funciton at the endpoints of the interval are equal +# it will happen that the value at the critical point outside of the interval is equal to the value at one of the endpoints + +if($maxval == $ga && $maxval == $gb) +{$max = List('$a','$b');} +elsif($maxval == $ga) +{$max = $a;} +elsif($maxval == $gb) +{$max = $b;} +else +{$max = $c;} + +if($minval == $ga && $minval == $gb) +{$min = List('$a','$b');} +elsif($minval == $ga) +{$min = $a;} +elsif($minval == $gb) +{$min = $b;} +else +{$min = $c;} + +BEGIN_PGML +Let [`g(x) = [$g].`] + +The global (absolute) maximum value of [`g`] on [`[[$a],[$b]]`] occurs at [`x=`][_]{$max}{5} and the maximum value is [_]{$maxval}{5}. + +The global (absolute) minimum value of [`g`] on [`[[$a],[$b]]`] occurs at [`x=`][_]{$min}{5} and the minimum value is [_]{$minval}{5}. + +If the extreme value occurs at multiple [`x`]-values, then enter the [`x`]-value(s) that you find as a list separated by commas; if there are no such values, then enter [|None|]*. +END_PGML + +$expa = -$a/$c; +$expc = -$c/$c; +$expb = -$b/$c; + +BEGIN_PGML_SOLUTION +First [``g'(x) = [$gder] = [$gder_fac]``] so [`g`] has one critical point at [`x=[$c]`] in the interval [`[[$a],[$b]]`]. + +Now we consider the values of [`g`] at the end points and the critical points inside the interval [`[[$a],[$b]]`] + ++ [`g([$a]) = [$a]e^{[$expa]} \approx [$ga]`] ++ [`g([$c]) = [$c]e^{[$expc]} \approx [$gc]`] ++ [`g([$b]) = [$b]e^{[$expb]} \approx [$gb]`] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-box-cost-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-box-cost-jms.pg new file mode 100644 index 0000000000..1302b99f44 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-box-cost-jms.pg @@ -0,0 +1,66 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Optimization - business and economics) +## Date(1 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$vol = 2*random(2,5,1); +$side = random(1,5,1); +$base = 2*$side; + +$height = Compute("$vol/x^2"); +$cost = Compute("$base*(2*x^2)+$side*(4*$vol/x)"); + + +$popup = DropDown( + [ + 'maximize', + 'minimize' + ], + 'minimize' +); + +BEGIN_PGML +Consider the following optimization problem. + +"You are in charge of creating the packaging for a new product for your company. You want to build a box with a square base and a lid that has a volume of exactly [`[$vol]`] cubic centimetres. The material for the sides of the box costs [`\$[$side]`] per square centimetre, and the material for the base and lid costs [`\$[$base]`] per square centimetre. You want to determine the dimensions of the least expensive box that meets your criteria." + +Answer the following questions about the above problem. + ++ You want to find the dimensions of the box that [_]{$popup} the cost of the box. + +Let [`x`] be the length of the base of the box, and let [`y`] be the height of the box, both measured in centimetres. + ++ Use the information given in the problem to write [`y`] as a function of [`x`]. + + [`y = \, `] [_]{$height}{20} + ++ Write the total cost of the materials needed to make the box as a function of [`x`]. + + [`C(x) = \, `] [_]{$cost}{20} +END_PGML + +BEGIN_PGML_SOLUTION ++ Since we want to make the **least** expensive box, we want to find the dimension of the box that **minimize** its cost. + ++ The base of the box is square with area equal to [`x^2`] and the height of the box is [`y`]. Therefore, volume of the box is [`[$vol] = x^2y`]; and [``y = \frac{[$vol]}{x^2}.``] + ++ The area of the base and the lid of the box is are both [`x^2`]. Since the base and lid material costs [`\$[$base]`] per square centimetre, the cost of the base and lid together is [``[$base](2x^2).``] There are four vertical sides of the box, each with area [``xy = x\frac{[$vol]}{x^2} = \frac{[$vol]}{x}.``] Since the material for the sides of the box costs [`\$[$side]`] per square centimetre, the cost of the four sides is [``[$side]\left( \frac{4\cdot[$vol]}{x} \right).``] Adding these costs together we get [``C(x) = [$cost].``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-cylinder-set-up-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-cylinder-set-up-jms.pg new file mode 100644 index 0000000000..b8137c6761 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-cylinder-set-up-jms.pg @@ -0,0 +1,86 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Optimization - general) +## Date(1 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; +Context()->variables->add(r=>"Real"); +Context()->variables->add(h=>"Real"); + +$vol = random(1,5,1); +$vol_cm = 1000*$vol; +$twice_vol_cm = 2*$vol_cm; + +$height = Compute("$vol_cm/(pi*r^2)"); +$area = Compute("2*pi*r^2 + $twice_vol_cm/r"); + + +$popup = DropDown( + [ + 'maximize', + 'minimize' + ], + 'minimize' +); + + +$surface = DropDown( + [ + 'radius', + 'height', + 'area of the base', + 'surface area', + 'volume' + ], + 'surface area' +); + +BEGIN_PGML +Consider the following optimization problem. + +"You are working for a company designing a new type of battery. The outer shell of the battery must be a closed circular cylinder that contains exactly [`[$vol]`] Litres of battery components. Find the radius and height of the battery that will use the smallest amount of material to manufacture the battery's outer shell." + +**Hint**: [`1`] Litre is equal to [`1000 \, \rm{cm}^3.`] + +Answer the following questions about the above problem. + ++ You want to find the radius and height of the cylindrical battery that [_]{$popup} the [_]{$surface} of the cylinder. + +Let [`r`] be the radius of the circular base of the cyliner, and let [`h`] be the height of the cylinder, both measured in centimetres. + ++ Use the information given in the problem to write [`h`] as a function of [`r`]. + + [`h = \, `] [_]{$height}{20} + ++ Write the amount of material, in square cenitimetres, needed to make the cylinder as a function of [`r`]. + + [`A(r) = \, `] [_]{$area}{20} +END_PGML + +BEGIN_PGML_SOLUTION ++ Since we want to use the **smallest** amount of material, we want to find the dimensions of the cylinder that **minimize** its **surface area**. + + The volume of a circular cylinder of radius [`r`] and height [`h`] is [`V = \pi r^2 h.`] + + The surface area of a circular cylinder of radius [`r`] and height [`h`] is [`A = 2\pi r^2 + 2\pi r h.`] + ++ We need to work in cubic centimeters, so first we convert [`[$vol] \, \rm{L} = [$vol_cm] \, \rm{cm}^3.`] So, the volume of the cylinder is [`[$vol_cm] = x\pi r^2 h`]; and [``h = \frac{[$vol_cm]}{\pi r^2}.``] + ++ We want to minimize the surface area of the cylinder, which is given by [``A(r) = 2\pi r^2 + 2\pi r \frac{[$vol_cm]}{\pi r^2} = 2\pi r^2 + \frac{[$twice_vol_cm]}{r}``] as a function of [`r`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-fence-set-up-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-fence-set-up-jms.pg new file mode 100644 index 0000000000..924551c7d6 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-fence-set-up-jms.pg @@ -0,0 +1,82 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Optimization - general) +## Date(1 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl", "PGtikz.pl"); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$area = 6*random(2,5,1); +$area2 = 2*$area; + +$width = Compute("$area/x"); +$perim = Compute("3*x+($area2)/x"); + + +$popup = DropDown( + [ + 'maximize', + 'minimize' + ], + 'minimize' +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); +$graph_image->BEGIN_TIKZ +\draw[-,very thick] (-2,2) -- (2,2); +\draw (0,2) node[above right, outer sep=2pt]{\(y\)}; +\draw[-,very thick] (-2,-2) -- (2,-2); +\draw[-,very thick] (-2,-2) -- (-2,2); +\draw[-,very thick] (0,-2) -- (0,2); +\draw[-,very thick] (2,-2) -- (2,2); +\draw (2,0) node [right,outer sep=2pt]{\(x\)}; +END_TIKZ + + +BEGIN_PGML +Consider the following optimization problem. + +"You are going to build a new enclosure for two animals at the ranch you work at. The two animals will be housed next to each other, but need to be separated. You are going to build a fence to make a large rectangular enclosure with a total area of [`[$area]`] square metres, and then you will build one more length of fence to divide the enclosure into two smaller equal rectangles. You want to use calculus to find the best way to build this enclosure." + +Answer the following questions about the above problem. + ++ You want to [_]{$popup} the amount of fence used. + +Let [`x`] be the length of fencing that includes the additional piece to divide the enclosure into two parts, and let [`y`] be the length of the fencing perpendicular to the three pieces of fence with length [`x`]. + ++ Use the information given in the problem to write [`y`] as a function of [`x`]. + + [`y = \, `] [_]{$width}{20} + ++ Write the total length of fencing, in metres, required to build the enclosure as a function of [`x`]. + + [`f(x) = \, `] [_]{$perim}{20} +END_PGML + +BEGIN_PGML_SOLUTION +Here is a diagram of the pen (not to scale): + +[@ image($graph_image, width => 200, tex_size => 1000) @]* + ++ We want to find the **shortest** lengh of fence required, so we want to **minimize** the amount of fencing used. + ++ The area of the large enclosure is [`xy = [$area]`], so [``y = \frac{[$area]}{x}.``] + ++ The length of fencing required is [`3x + 2y`] so [``f(x) = 3x + \frac{[$area2]}{x}.``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-open-box-set-up-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-open-box-set-up-jms.pg new file mode 100644 index 0000000000..a2e7bd0a32 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-5-1-An-C/9-5-1-An-C-open-box-set-up-jms.pg @@ -0,0 +1,85 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Optimization - general) +## Date(1 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl", "PGtikz.pl"); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$length = 6*random(2,5,1); +$vol = Compute("x($length-2*x)^2"); + + +$popup = DropDown( + [ + 'maximize', + 'minimize' + ], + 'maximize' +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); +$graph_image->BEGIN_TIKZ +\draw[very thick] (-2,2) -- (2,2); +\draw[very thick] (-2,-2) -- (2,-2); +\draw (0,-2) node[below, outer sep=2pt]{\($length \rm{ft}\)}; +\draw[very thick] (-2,-2) -- (-2,2); +\draw[very thick] (2,-2) -- (2,2); +\draw (2,0) node[right, outer sep=2pt]{\($length \rm{ft}\)}; +\draw[very thick, dotted] (-2,1.5) -- (-1.5,1.5); +\draw (-1.75,1.5) node[below, outer sep=2pt]{\(x\)}; +\draw[very thick, dotted] (-1.5,1.5) -- (-1.5,2); +\draw (-1.5,1.75) node[right, outer sep=2pt]{\(x\)}; +\draw[very thick, dotted] (2,1.5) -- (1.5,1.5); +\draw[very thick, dotted] (1.5,1.5) -- (1.5,2); +\draw[very thick, dotted] (2,-1.5) -- (1.5,-1.5); +\draw[very thick, dotted] (1.5,-1.5) -- (1.5,-2); +\draw[very thick, dotted] (-2,-1.5) -- (-1.5,-1.5); +\draw[very thick, dotted] (-1.5,-1.5) -- (-1.5,-2); +END_TIKZ + + +BEGIN_PGML +Consider the following optimization problem. + +"You are going to make a square box with an open top by cutting small squares out of each corner of a sheet of metal with dimensions [`[$length] \, \rm{ft} \times [$length] \, \rm{ft} `] and then folding up the sides of the remaining sheet metal. What is the volume of the largest possible box that you can make using this method?" + +Answer the following questions about the above problem. + ++ You want to [_]{$popup} the volume of the box. + +Let [`x`] be the side-length of the small square that you cut out of the corner of the [`[$length] \, \rm{ft} \times [$length] \, \rm{ft} `] sheet of metal. + + ++ Write the volume of the box, in cubic feet, as a function of [`x`]. + + [`V(x) = \, `] [_]{$vol}{20} +END_PGML + +BEGIN_PGML_SOLUTION + ++ We want make the **largest** possible box, so we want to **maximize** the volume of the box. + + +Let [`x`] be the side-length of the small square that you cut out of the corner of the [`[$length] \, \rm{ft} \times [$length] \, \rm{ft} `] sheet of metal. Here is a diagram (not to scale) of the metal sheet and the corner squares that you will remove: + +[@ image($graph_image, width => 200, tex_size => 1000) @]* + ++ The side length of the base of the box is [`[$length]-2x`], since we cut [`x`]-feet off of each end of the side of the metal sheet when we remove a square from the each corner. After folding up the sides, the height of the box will be [`x`]. Therefore, the volume of the box is [`V(x) = [$vol].`] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-box-cost-full-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-box-cost-full-jms.pg new file mode 100644 index 0000000000..fa4a250203 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-box-cost-full-jms.pg @@ -0,0 +1,101 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Optimization - business and economics) +## Date(1 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(5) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# manually version so that numbers are "nice" +# Fall 2021 MATH 249 Midterm Exam 2 Written Problem +$ver = random(0,3,1); +if($ver == 0) +{ +$vol = 4; +$side = 4; +$base = 2; +$width = 2; +$height = 1; +} +elsif($ver == 1) +{ +$vol = 12; +$side = 1; +$base = 3; +$width = 2; +$height = 3; +} +elsif($ver == 2) +{ +$vol = 16; +$side = 1; +$base = 2; +$width = 2; +$height = 4; +} +elsif($ver == 3) +{ +$vol = 8; +$side = 4; +$base = 2; +$width = 2; +$height = 2; +} + +$base2 = 2*$base; +$side4vol = 4*$side*$vol; + +$height_fcn = Formula("$vol/x^2")->reduce(); +$cost_fcn = Formula("$base2*x^2+$side4vol/x")->reduce(); + +$critval = Formula("(($side4vol)/(2*$base2))^(1/3)")->reduce(); +$heightval = Formula("$vol/($critval^2)")->reduce(); + +BEGIN_PGML +You are in charge of creating the container for a scientific instrument that is to be placed into a small research satellite called a "CubeSat". You want to build a box with a square base and a lid that has a volume of exactly [`[$vol]`] cubic centimetres. The material for the sides of the box costs [`\$[$side]`] per square centimetre, and the material for the base and lid costs [`\$[$base]`] per square centimetre. Find the dimensions of the least expensive box that meets your criteria. + ++ The base-length of the least expensive box is [_]{$critval}{5} centimetres. + ++ The height of the least expensive box is [_]{$heightval}{5} centimetres. + +END_PGML + +$cost_der = Formula("2*$base2*x-$side4vol/(x^2)")->reduce(); +$critval = Formula("(($side4vol)/(2*$base2))^(1/3)")->reduce(); +$heightval = Formula("$vol/($critval^2)")->reduce(); +$factor = 2*$base2; + +BEGIN_PGML_SOLUTION +Since we want to make the **least** expensive box, we want to find the dimension of the box that **minimize** its cost. + +Let [`x`] be the length of the base of the box, and let [`y`] be the height of the box, both measured in centimetres. +The base of the box is square with area equal to [`x^2`] and the height of the box is [`y`]. Therefore, volume of the box is [`[$vol] = x^2y`]; and [``y = \frac{[$vol]}{x^2}.``] + +The area of the base and the lid of the box is are both [`x^2`]. Since the base and lid material costs [`\$[$base]`] per square centimetre, the cost of the base and lid together is [``[$base](2x^2).``] There are four vertical sides of the box, each with area [``xy = x\frac{[$vol]}{x^2} = \frac{[$vol]}{x}.``] Since the material for the sides of the box costs [`\$[$side]`] per square centimetre, the cost of the four sides is [``[$side]\left( \frac{4\cdot[$vol]}{x} \right).``] Adding these costs together we get [``C(x) = [$cost_fcn]``] and the domain of the cost function is [`(0,\infty).`] + +Now we can proceed to minimize [`C(x).`] First we will find [`C'(x)`] and the critical points of [`C(x).`] + [```C'(x) = [$cost_der] = [$factor]\frac{(x^3-8)}{x^2}```] + so [`C(x)`] has one critical number [`x=[$critval].`] + +Next, observe that [`C'(x)`] is negative on [`(0,[$width])`] and [`C'(x)`] is postive on [`([$width],\infty)`]. So [`C(x)`] is decreasing on [`(0,[$width])`] and increasing on [`([$width],\infty)`]; therefore, by the Global Interval Method, [`C(x)`] has a local and global minimum at [`x=[$width].`] + +We can conclude: + ++ The base-length of the least expensive box is [`x=[$critval]`] centimetres. ++ The height of the least expensive box is [``y = \frac{[$vol]}{([$critval])^2} = [$heightval]``] centimetres. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-cylinder-cost-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-cylinder-cost-jms.pg new file mode 100644 index 0000000000..e0a2e4fb60 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-cylinder-cost-jms.pg @@ -0,0 +1,57 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Optimization - general) +## Date(1 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(5) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl"); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +Context()->variables->add(r=>"Real"); +Context()->variables->add(h=>"Real"); + +$cost = 2*random(2,5,1); #cost or volume needs to be even to be "nice" for factoring the derivative +$vol = random(2,5,1); +$cv = $vol*$cost; +$cv_div_2 = $cv/2; +$radius = ($cv_div_2)**(1/3); # integer only when $cv_div_2 is a cube, but seems too artificial +$ans = Compute("($cv_div_2)^(1/3)"); + +BEGIN_PGML +The total cost to build a large cylindrical storage tank is given by [``` C = \pi r^2 + [$cost]\pi r h,```] +where [`r`] is the radius of the tank in metres and [`h`] is the height of the tank in metres. If the total volume that the tank contains needs to be [`[$vol]\pi`] cubic metres, when what should the radius of the tank be in order to minimize the cost of the tank? + ++ The radius of the tank that minimizes the cost is [`r = \, `] [_]{$ans}{5} metres. + +END_PGML + +BEGIN_PGML_SOLUTION +The volume of a circular cylinder of radius [`r`] and height [`h`] is [`V = \pi r^2 h.`] + ++ First we eliminate one variable using the volume constraint. The volume of the cylinder is [`[$vol]\pi = \pi r^2 h`], so [``h = \frac{[$vol]}{r^2}.``] + ++ We want to minimize the cost of the cylinder, which is given by [```C = \pi r^2 + [$cost]\pi r h = \pi r^2 + [$cost]\pi r\left(\frac{[$vol]}{r^2}\right) = \pi r^2 + \pi \frac{[$cv]}{r}```] as a function of [`r`], where [`r>0`]. + ++ Now we will compute [`C'(r)`] and find the critical points of [`C.`] Taking the derivative of [`C(r)`] we get + [``` C'(r) = 2\pi r - \pi \frac{[$cv]}{r^2} = 2\pi \frac{(r^3 - [$cv_div_2])}{r^2},```] + so [`C`] has one critical point [`r = \sqrt[3]{[$cv_div_2]}.`] + ++ For [`0\sqrt[3]{[$cv_div_2]}`] we have that [`C'(r)>0`]. Therefore, [`C`] is decreasing on [`(0,\sqrt[3]{[$cv_div_2]})`] and increasing on [`(\sqrt[3]{[$cv_div_2]},\infty)`]. + ++ We can conclude that the local and global minimum cost to produce the tank occurs when [`r = \sqrt[3]{[$cv_div_2]}`] metres. + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-fence-full-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-fence-full-jms.pg new file mode 100644 index 0000000000..f3e6b84115 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-fence-full-jms.pg @@ -0,0 +1,70 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Optimization - general) +## Date(1 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(5) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl","PGtikz.pl"); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$area = 6*(random(2,5,1)**2); #six times a square to get integer values +$area2 = 2*$area; + +$crit = Compute("sqrt(2*$area/3)"); +$length = Compute("3*$crit+($area2)/$crit"); + +$width = Formula("$area/x")->reduce(); +$perim = Formula("3*x+($area2)/x")->reduce(); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); +$graph_image->BEGIN_TIKZ +\draw[-,very thick] (-2,2) -- (2,2); +\draw (0,2) node[above right, outer sep=2pt]{\(y\)}; +\draw[-,very thick] (-2,-2) -- (2,-2); +\draw[-,very thick] (-2,-2) -- (-2,2); +\draw[-,very thick] (0,-2) -- (0,2); +\draw[-,very thick] (2,-2) -- (2,2); +\draw (2,0) node [right,outer sep=2pt]{\(x\)}; +END_TIKZ + + +BEGIN_PGML +You are going to build a new enclosure for two animals at the ranch you work at. The two animals will be housed next to each other, but need to be separated. You are going to build a fence to make a large rectangular enclosure with a total area of [`[$area]`] square metres, and then you will build one more length of fence to divide the enclosure into two smaller equal rectangles. What is the shortest length of fencing, in metres, that is required to build this enclosure? + ++ The shortest length of fencing needed to build the enclosure is [_]{$length}{5} metres. +END_PGML + +$area2over3 = $area2/3; + +BEGIN_PGML_SOLUTION +We want to find the **shortest** lengh of fence required, so we want to **minimize** the amount of fencing used. + +Let [`x`] be the length of fencing that includes the additional piece to divide the enclosure into two parts, and let [`y`] be the length of the fencing perpendicular to the three pieces of fence with length [`x`]. Here is a diagram (not to scale): + +[@ image($graph_image, width => 200, tex_size => 1000) @]* + +The area of the large enclosure is [`xy = [$area]`], so [``y = \frac{[$area]}{x}.``] The total length of fencing required is [`3x + 2y`] so we want to minimize [``f(x) = 3x + \frac{[$area2]}{x}.``] Note that we must have [`x>0`], so we can work with the domain of [`f`] as [`(0,\infty).`] + +Now we will find [`f'(x)`] and the critical points of [`f.`] +[```f'(x) = 3 - \frac{[$area2]}{x^2} = 3\frac{(x^2 - [$area2over3])}{x^2} = 3\frac{(x-[$crit])(x+[$crit])}{x^2} ```] +So, [`f`] has one critical point [`x=[$crit]`] in [`(0,\infty).`] + +Next we can observe that [`f'(x) < 0`] on [`(0,[$crit])`] and [`f'(x)>0`] on [`([$crit],\infty).`] Therefore, [`f`] is decreasing on [`(0,[$crit])`] and [`f`] is increasing on [`([$crit],\infty).`] Thus, [`f`] has a local and global minimum at [`x=[$crit].`] + +The minimum amount of fencing required to build the pen is [``f([$crit]) = 3([$crit]) + \frac{[$area2]}{[$crit]} = [$length]``] metres. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-open-box-full-jms.pg b/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-open-box-full-jms.pg new file mode 100644 index 0000000000..6d1b2a0bf7 --- /dev/null +++ b/Contrib/UCalgary/249-9-0-0-C/9-5-2-Ap-C/9-5-2-Ap-C-open-box-full-jms.pg @@ -0,0 +1,85 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Applications of differentiation) +## DBsection(Optimization - general) +## Date(1 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(5) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGcourse.pl","PGtikz.pl"); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$length = 6*random(2,5,1); +$crit = $length/6; +$vol_fcn = Formula("x($length-2*x)^2")->reduce(); +$vol = Compute("$crit*($length-2*$crit)^2"); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); +$graph_image->BEGIN_TIKZ +\draw[very thick] (-2,2) -- (2,2); +\draw[very thick] (-2,-2) -- (2,-2); +\draw (0,-2) node[below, outer sep=2pt]{\($length \rm{ft}\)}; +\draw[very thick] (-2,-2) -- (-2,2); +\draw[very thick] (2,-2) -- (2,2); +\draw (2,0) node[right, outer sep=2pt]{\($length \rm{ft}\)}; +\draw[very thick, dotted] (-2,1.5) -- (-1.5,1.5); +\draw (-1.75,1.5) node[below, outer sep=2pt]{\(x\)}; +\draw[very thick, dotted] (-1.5,1.5) -- (-1.5,2); +\draw (-1.5,1.75) node[right, outer sep=2pt]{\(x\)}; +\draw[very thick, dotted] (2,1.5) -- (1.5,1.5); +\draw[very thick, dotted] (1.5,1.5) -- (1.5,2); +\draw[very thick, dotted] (2,-1.5) -- (1.5,-1.5); +\draw[very thick, dotted] (1.5,-1.5) -- (1.5,-2); +\draw[very thick, dotted] (-2,-1.5) -- (-1.5,-1.5); +\draw[very thick, dotted] (-1.5,-1.5) -- (-1.5,-2); +END_TIKZ + + +BEGIN_PGML +You are going to make a square box with an open top by cutting small squares out of each corner of a sheet of metal with dimensions [`[$length] \, \rm{ft} \times [$length] \, \rm{ft} `] and then folding up the sides of the remaining sheet metal. What is the volume of the largest possible box that you can make using this method? + ++ The volume of the largest possible box is [_]{$vol}{5} [`\, \rm{ft}^3`]. ++ The largest possible box is obtained by cutting a square of side length [_]{$crit}{5} [`\, \rm{ft}`] from each corner of the metal sheet. +END_PGML + +$half_length = $length/2; +$twothirds_length = 2*$length/3; + +BEGIN_PGML_SOLUTION +We want make the **largest** possible box, so we want to **maximize** the volume of the box. + +Let [`x`] be the side-length of the small square that you cut out of the corner of the [`[$length] \, \rm{ft} \times [$length] \, \rm{ft} `] sheet of metal. Here is a diagram (not to scale) of the metal sheet and the corner squares that you will remove: + +[@ image($graph_image, width => 200, tex_size => 1000) @]* + +The side length of the base of the box is [`[$length]-2x`], since we cut [`x`]-feet off of each end of the side of the metal sheet when we remove a square from the each corner. After folding up the sides, the height of the box will be [`x`]. Therefore, the volume of the box is [`V(x) = [$vol_fcn].`] + +Let's determine the domain of [`V(x).`] Of course, we need [`0\leq x`] since we cannot have cut out a square with a negative side length. +Since the side length of the metal sheet is [`[$length]`] feet, and we cut [`x`]-feet off of each end, we must have that [`x \leq \frac{[$length]}{2} = [$half_length].`] We can solve this problem by working with the domain of [`V(x)`] as the closed interval [`[0,[$half_length]],`] but it is worth noting that [`V(0)=0`] and [`V([$half_length]) = 0`] so the end points will not give us the desired maximum. + +Next we will find [`V'(x)`] and the critical points of [`V`] in the interval [`[0,[$half_length]].`] +Using the product rule and the chain rule, we get +[``` V'(x) = ([$length]-2x)^2 + x\cdot 2([$length]-2x)(-2) = ([$length]-2x)([$length]-6x),```] +so the critical points of [`V`] in [`[0,[$half_length]]`] are the endpoint [`x=[$half_length]`] and the point [`x=[$crit].`] + +Now, to finish applying the Closed Interval Method, we have that: + ++ [`V(0) = 0`] ++ [`V([$crit]) = [$crit]([$length]-2([$crit]))^2 = [$crit]([$twothirds_length])^2 = [$vol]`] ++ [`V([$half_length]) = 0`] + +Therefore, the absolute maximum volume of the box that we can make is [`[$vol] \, \rm{ft}^3`], and we can accomplish this by cutting a square of side-length [`[$crit]\, \rm{ft}`] from each corner of the metal sheet. +END_PGML_SOLUTION + +ENDDOCUMENT(); From 7420fd943e3b7890eb66dc8701070cdfedd3acd2 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 12:25:53 -0600 Subject: [PATCH 07/29] Add files via upload --- .../12-1-2-U-C-application-1-jms.pg | 45 ++++ .../12-1-2-U-C-def-int-idea-1-jms.pg | 45 ++++ .../12-1-2-U-C-def-int-idea-2-jms.pg | 45 ++++ .../12-2-1-An-C-area-function-1-jms.pg | 123 ++++++++++ .../12-2-1-An-C-area-function-2-jms.pg | 128 ++++++++++ .../12-3-1-Ap-C-area-graph-1-jms.pg | 128 ++++++++++ .../12-3-1-Ap-C-area-graph-2-jms.pg | 139 +++++++++++ .../12-3-1-Ap-C-area-graph-3-jms.pg | 122 ++++++++++ .../12-3-2-Ap-C-pw-def-no-ftc-1-jms.pg | 109 +++++++++ .../12-3-2-Ap-C-pw-def-no-ftc-2-jms.pg | 102 ++++++++ .../12-3-2-Ap-C-pw-def-no-ftc-3-jms.pg | 91 +++++++ .../12-3-4-An-C-abstract-int-1-jms.pg | 61 +++++ .../12-3-4-An-C-abstract-int-2-jms.pg | 71 ++++++ .../12-3-4-An-C-abstract-int-3-jms.pg | 74 ++++++ .../13-0-1-R-C/13-0-1-R-C-state-ftc-jms.pg | 55 +++++ .../13-0-2-C-C-cpt-anti-der-int-jms-1.pg | 65 +++++ .../13-0-2-C-C-cpt-anti-der-int-jms-2.pg | 62 +++++ .../13-1-1-Ap-C-poly-definite-jms-1.pg | 70 ++++++ .../13-1-1-Ap-C-poly-definite-jms-2.pg | 69 ++++++ .../13-1-2-Ap-C-exp-definite-jms-1.pg | 65 +++++ .../13-1-2-Ap-C-exp-ln-definite-jms-2.pg | 65 +++++ .../13-1-3-Ap-C-trig-definite-jms-1.pg | 64 +++++ .../13-1-3-Ap-C-trig-definite-jms-2.pg | 62 +++++ .../13-1-4-Ap-C-pw-def-int-1-jms.pg | 72 ++++++ .../13-1-4-Ap-C-pw-def-int-2-jms.pg | 76 ++++++ .../13-1-4-Ap-C-pw-def-int-3-jms.pg | 71 ++++++ .../13-1-4-Ap-C-pw-def-int-4-jms.pg | 71 ++++++ .../13-2-1-Ap-C-definite-sub-jms-1.pg | 63 +++++ .../13-2-1-Ap-C-definite-sub-jms-2.pg | 64 +++++ ...13-2-1-Ap-C-definite-sub-jms-3-abstract.pg | 52 ++++ .../13-2-2-U-C/13-2-2-U-C-def-sub-mc-1-jms.pg | 51 ++++ .../13-2-2-U-C/13-2-2-U-C-def-sub-mc-2-jms.pg | 51 ++++ .../13-2-2-U-C/13-2-2-U-C-def-sub-mc-3-jms.pg | 54 +++++ .../13-2-2-U-C/13-2-2-U-C-def-sub-mc-4-jms.pg | 54 +++++ .../13-3-1-Ap-I/13-3-1-Ap-I-der-int-jms-1.pg | 67 ++++++ .../13-3-1-Ap-I/13-3-1-Ap-I-der-int-jms-2.pg | 67 ++++++ .../13-3-2-Ap-I-ftc-chain-1-jms.pg | 76 ++++++ .../13-3-2-Ap-I-ftc-chain-2-jms.pg | 76 ++++++ .../13-4-1-Ap-A-ftc-increase-decrease-AT.pg | 75 ++++++ .../13-4-2-Ap-A-ftc-concavity-AT.pg | 52 ++++ ...-4-4-Ap-A-ftc-closed-interval-method-AT.pg | 136 +++++++++++ .../13-4-1G-Ap-A-int-graph-inc-dec-1-jms.pg | 159 ++++++++++++ .../13-4-1G-Ap-A-int-graph-inc-dec-2-jms.pg | 82 +++++++ .../13-4-2G-Ap-A-int-graph-concave-1-jms.pg | 226 ++++++++++++++++++ .../13-4-2G-Ap-A-int-graph-concave-2-jms.pg | 102 ++++++++ .../13-4-3G-Ap-A-loc-ext-int-graph-1-jms.pg | 146 +++++++++++ .../13-4-4G-Ap-A-ftc-closed-int-jms-1.pg | 134 +++++++++++ .../13-4-4G-Ap-A-ftc-closed-int-jms-2.pg | 125 ++++++++++ .../14-0-1-R-C-infinite-interval-AT.pg | 49 ++++ .../14-0-2-U-C-asymptote-algebraic-AT.pg | 46 ++++ .../14-0-3-U-C-asymptote-graphic-2-AT.pg | 160 +++++++++++++ .../14-0-3-U-C-asymptote-graphic-AT.pg.old | 106 ++++++++ .../14-0-4-R-I-improper-conv-div-2-AT.pg | 82 +++++++ .../14-0-4-R-I-improper-conv-div-AT.pg | 126 ++++++++++ .../MATH249SpecificationGrading.zip | Bin 0 -> 12801 bytes .../249-14-0-0-C/14-0-4-R-I/course_info.txt | 1 + .../249-14-0-0-C/14-0-4-R-I/demoCourse.lst | 9 + .../249-14-0-0-C/14-0-4-R-I/setDemo.def | 86 +++++++ .../249-14-0-0-C/14-0-4-R-I/setDemo.zip | Bin 0 -> 19573 bytes ...14-1-1-Ap-I-compute-improper-int-inf-AT.pg | 48 ++++ ...1-2-Ap-I-compute-improper-int-AT-PREMOD.pg | 37 +++ .../14-1-2-Ap-I-compute-improper-int-AT.pg | 37 +++ .../14-2-1-R-I-comparison-test-def-AT.pg | 65 +++++ .../14-2-2-Ap-A-use-comparison-test-AT.pg | 52 ++++ ...14-2-3-Ap-I-abstract-comparison-test-AT.pg | 47 ++++ Contrib/UCalgary/README.md | 2 +- 66 files changed, 5014 insertions(+), 1 deletion(-) create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-application-1-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-def-int-idea-1-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-def-int-idea-2-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-2-1-An-C/12-2-1-An-C-area-function-1-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-2-1-An-C/12-2-1-An-C-area-function-2-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-1-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-2-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-3-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-1-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-2-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-3-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-1-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-2-jms.pg create mode 100644 Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-3-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-0-1-R-C/13-0-1-R-C-state-ftc-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-0-2-C-C/13-0-2-C-C-cpt-anti-der-int-jms-1.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-0-2-C-C/13-0-2-C-C-cpt-anti-der-int-jms-2.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-1-Ap-C-poly-definite-jms-1.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-1-Ap-C-poly-definite-jms-2.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-2-Ap-C-exp-definite-jms-1.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-2-Ap-C-exp-ln-definite-jms-2.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-3-Ap-C-trig-definite-jms-1.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-3-Ap-C-trig-definite-jms-2.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-1-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-2-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-3-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-4-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-1.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-2.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-3-abstract.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-1-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-2-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-3-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-4-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-3-1-Ap-I/13-3-1-Ap-I-der-int-jms-1.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-3-1-Ap-I/13-3-1-Ap-I-der-int-jms-2.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-3-2-Ap-I/13-3-2-Ap-I-ftc-chain-1-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-3-2-Ap-I/13-3-2-Ap-I-ftc-chain-2-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-4-1-Ap-A/13-4-1-Ap-A-ftc-increase-decrease-AT.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-4-2-Ap-A/13-4-2-Ap-A-ftc-concavity-AT.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-4-4-Ap-A/13-4-4-Ap-A-ftc-closed-interval-method-AT.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-1G-Ap-A-int-graph-inc-dec-1-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-1G-Ap-A-int-graph-inc-dec-2-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-2G-Ap-A-int-graph-concave-1-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-2G-Ap-A-int-graph-concave-2-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-3G-Ap-A-loc-ext-int-graph-1-jms.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-4G-Ap-A-ftc-closed-int-jms-1.pg create mode 100644 Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-4G-Ap-A-ftc-closed-int-jms-2.pg create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-1-R-C/14-0-1-R-C-infinite-interval-AT.pg create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-2-U-C/14-0-2-U-C-asymptote-algebraic-AT.pg create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-3-U-C/14-0-3-U-C-asymptote-graphic-2-AT.pg create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-3-U-C/14-0-3-U-C-asymptote-graphic-AT.pg.old create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-2-AT.pg create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-AT.pg create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/MATH249SpecificationGrading.zip create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/course_info.txt create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/demoCourse.lst create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.def create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.zip create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-1-1-Ap-I/14-1-1-Ap-I-compute-improper-int-inf-AT.pg create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-1-2-Ap-I/14-1-2-Ap-I-compute-improper-int-AT-PREMOD.pg create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-1-2-Ap-I/14-1-2-Ap-I-compute-improper-int-AT.pg create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-2-1-R-I/14-2-1-R-I-comparison-test-def-AT.pg create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-2-2-Ap-A/14-2-2-Ap-A-use-comparison-test-AT.pg create mode 100644 Contrib/UCalgary/249-14-0-0-C/14-2-3-Ap-I/14-2-3-Ap-I-abstract-comparison-test-AT.pg diff --git a/Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-application-1-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-application-1-jms.pg new file mode 100644 index 0000000000..759ec1bf7d --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-application-1-jms.pg @@ -0,0 +1,45 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Conceptual understanding of integration) +## Date(28 July 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = 0; +$b = $a + random(2,7,1); + +$correct = "the total amount of energy absorbed by the solar panel over a \($b\) hour time period."; +$wrong1 = "the rate of energy absorption of the solar panel over the time interval \([$a,$b]\)."; +$wrong2 = "the average amount of energy absorbed by the solar panel each hour over the time interval \([$a,$b]\)."; +$wrong3 = "the total amount of energy absorbed by the solar panel during the \($b\)-th hour only."; + +$radio1 = RadioButtons( + [ [ $correct, $wrong1, $wrong2, $wrong3 ], 'None of the above.' ], + $correct # correct answer +); + +BEGIN_PGML +The rate at which a solar panel absorbs energy is given by the continuous function [`f(t)`] in Joules per hour, where [`t`] is time measured in hours. + +Which statement below best describes the following quantity? + +[``\int_{[$a]}^{[$b]} f(t) \, dt ``] is ... + +[_]{$radio1} +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-def-int-idea-1-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-def-int-idea-1-jms.pg new file mode 100644 index 0000000000..180af573bb --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-def-int-idea-1-jms.pg @@ -0,0 +1,45 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Conceptual understanding of integration) +## Date(10 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(-2, 5, 1); +$b = $a + random(2,5,1); + +$correct = "the sum of the area of the regions below \(y=f(x)\) and above the \(x\)-axis less the sum of the area of the regions above \(y=f(x)\) and below the \(x\)-axis over the closed interval \([$a,$b]\)."; +$wrong1 = "the sum of the absolute values of the areas of the regions between the graph of \(y=f(x)\) and the \(x\)-axis over the closed interval \([$a,$b]\)."; +$wrong2 = "the total positive area of the region between the graph of \(y=f(x)\) and the \(x\)-axis over the closed interval \([$a,$b]\)."; +$wrong3 = "the general antiderivative of \(f\) with its domain restricted to the closed interval \([$a,$b]\)."; + +$radio1 = RadioButtons( + [ [ $correct, $wrong1, $wrong2, $wrong3 ], 'None of the above.' ], + $correct # correct answer +); + +BEGIN_PGML +Let [`f`] be a continuous function. + +Which statement below best describes the following quantity? + +[``\int_{[$a]}^{[$b]} f(x) \, dx ``] is ... + +[_]{$radio1} +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-def-int-idea-2-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-def-int-idea-2-jms.pg new file mode 100644 index 0000000000..ce72b87d27 --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-1-2-U-C/12-1-2-U-C-def-int-idea-2-jms.pg @@ -0,0 +1,45 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Conceptual understanding of integration) +## Date(10 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(-2, 5, 1); +$b = $a + random(2,5,1); + +$wrong1 = "the sum of the area of the regions below \(y=f(x)\) and above the \(x\)-axis less the sum of the area of the regions above \(y=f(x)\) and below the \(x\)-axis over the closed interval \([$a,$b]\)."; +$correct = "the sum of the positive areas of the regions between the graph of \(y=f(x)\) and the \(x\)-axis over the closed interval \([$a,$b]\)."; +$wrong2 = "the total area of the region between the graph of \(y=f(x)\) and the \(x\)-axis minus the total area of the region between between the graph of \(y=f(x)\) and the \(x\)-axis over the closed interval \([$a,$b]\)."; +$wrong3 = "the general antiderivative of \(|f(x)|\) with its domain restricted to the closed interval \([$a,$b]\)."; + +$radio1 = RadioButtons( + [ [ $correct, $wrong1, $wrong2, $wrong3 ], 'None of the above.' ], + $correct # correct answer +); + +BEGIN_PGML +Let [`f`] be a continuous function. + +Which statement below best describes the following quantity? + +[``\int_{[$a]}^{[$b]} |f(x)| \, dx ``] is ... + +[_]{$radio1} +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-2-1-An-C/12-2-1-An-C-area-function-1-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-2-1-An-C/12-2-1-An-C-area-function-1-jms.pg new file mode 100644 index 0000000000..1b193f8411 --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-2-1-An-C/12-2-1-An-C-area-function-1-jms.pg @@ -0,0 +1,123 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Conceptual understanding of integration) +## Date(10 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +#intervals +# (-10,$a), ($a,$c), ($c,$e), and ($e,10) + +$a = random(-8,-6,1); +$b = $a + random(2,3,1); +$c = $b + random(2,4,1); +$d = $c + random(2,3,1); +$e = $d + random(2,4,1); + +# funciton values + +$fm10 = random(2,7,1)*random(-1,1,2); +$fa = 0; +$fb = random(2,7,1)*random(-1,1,2); +$fc = 0; +$fd = random(2,7,1)*random(-1,1,2); +$fe = 0; +$f10 = random(2,7,1)*random(-1,1,2); + +# area values A(x) = int_$a ^x f(t) dt +# all shapes are triangles 1/2 base height +# base = interval length; height = function values +$Fb = Compute("1/2*($b-$a)*$fb"); +$Fc = Compute("1/2*($c-$a)*$fb"); +$Fd = Compute("1/2*($c-$a)*$fb + 1/2*($d-$c)*$fd"); +$Fe = Compute("1/2*($c-$a)*$fb + 1/2*($e-$c)*$fd"); + +#ask above b or c and d or e +$pt1 = list_random($b,$c); +$pt2 = list_random($d,$e); + +if($pt1 == $b) +{$Apt1 = $Fb;} +else +{$Apt1 = $Fc;} + +if($pt2 == $d) +{$Apt2 = $Fd;} +else +{$Apt2 = $Fe;} + +$popup = DropDown( + [ + 'a function of one variable: t', + 'a function of one variable: x', + 'a function of two variables: t and x', + 'not a function' + ], + 'a function of one variable: x' +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) --($d,$fd); +\draw[red, very thick] ($d,$fd) -- ($e,$fe); +\draw[->,red, very thick] ($e,$fe) -- (10,$f10); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\filldraw[red, very thick] ($b,$fb) circle (2.5 pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5 pt); +\filldraw[red, very thick] ($d,$fd) circle (2.5 pt); +\filldraw[red, very thick] ($e,$fe) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the continuous function [`y=f(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +Let [``A(x) = \int_{[$a]}^{x} f(t)\, dt ``]. + ++ The quantity [`A`] is [_]{$popup} + +Determine the following values of [`A.`] + ++ [`A([$pt1]) = \, `] [_]{$Apt1}{5} + ++ [`A([$pt2]) = \, `] [_]{$Apt2}{5} + +END_PGML + +BEGIN_PGML_SOLUTION ++ [``A(x) = \int_{[$a]}^{x} f(t)\, dt ``] is a function of [`x`], and the value of [`A(x)`] is the net area between the graph of [`y=f(t)`] and the (horizontal) [`t`]-axis over the interval [`[[$a],x].`] + ++ We compute [`A([$pt1])`] and [`A([$pt2])`] by evaluating the areas of the appropriate triangles formed by the graph of [`y=f(x)`] and the [`x`]-axis, and adding them together (if needed). We use that the area of a triangle of base length [`b`] and height [`h`] is equal to [``\frac{bh}{2}.``] In our situation, the base-length will be given by the length of a (sub)-interval of [`[[$a],x]`] and the height will be given by the appropriate value of the function [`f.`] + +Remember that regions above the [`t`]- or [`x`]-axis are assigned positive values and regions below the [`t`]- or [`x`]-axis are assigned negative values, which are "built-in" to the values of the function [`f`] below. + + + + [``A([$pt1]) \int_{[$a]}^{[$pt1]} f(t) \, dt = \frac{1}{2}([$pt1]-[$a])f([$b]) = \frac{1}{2}([$pt1]-[$a])([$fb]) = [$Apt1]``] + + + [``A([$pt2]) = \int_{[$a]}^{[$pt2]} f(t) \, dt ``] and we can split up the integral over the intervals [`[[$a],[$c]]`] and [`[[$c],[$pt2]]`]: [```\begin{aligned}A([$pt2]) & = \int_{[$a]}^{[$pt2]} f(t) \, dt \\ & = \int_{[$a]}^{[$c]} f(t) \, dt + \int_{[$c]}^{[$pt2]} f(t) \, dt \\ & = \frac{1}{2}([$c]-[$a])f([$b]) + \frac{1}{2}([$pt2]-[$c])f([$d]) \\ & = \frac{1}{2}([$c]-[$a])([$fb]) + \frac{1}{2}([$pt2]-[$c])([$fd]) \\ & = [$Apt2]\end{aligned}```] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-2-1-An-C/12-2-1-An-C-area-function-2-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-2-1-An-C/12-2-1-An-C-area-function-2-jms.pg new file mode 100644 index 0000000000..b46a71a9c8 --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-2-1-An-C/12-2-1-An-C-area-function-2-jms.pg @@ -0,0 +1,128 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Conceptual understanding of integration) +## Date(10 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +#intervals +# (-10,$a), ($a,$c), ($c,$e), and ($e,10) + +$a = random(-8,-6,1); +$b = $a + random(2,3,1); +$c = $b + random(2,4,1); +$d = $c + random(2,3,1); +$e = $d + random(2,4,1); + +# funciton values +# make sure that fb and fd have opposite sign + +$fm10 = random(2,7,1)*random(-1,1,2); +$fa = 0; +$fb = random(2,7,1)*random(-1,1,2); +$fc = 0; +if($fb > 0) +{$fd = random(-7,-2,1);} +else +{$fd = random(2,7,1);} +$fe = 0; +$f10 = random(2,7,1)*random(-1,1,2); + +# area values A(x) = int_$a ^x f(t) dt +# all shapes are triangles 1/2 base height +# base = interval length; height = function values +# using absolute value of f in this problem +$Fb = Compute("1/2*($b-$a)*abs($fb)"); +$Fc = Compute("1/2*($c-$a)*abs($fb)"); +$Fd = Compute("1/2*($c-$a)*abs($fb) + 1/2*($d-$c)*abs($fd)"); +$Fe = Compute("1/2*($c-$a)*abs($fb) + 1/2*($e-$c)*abs($fd)"); + +#ask above b or c and d or e +$pt1 = list_random($b,$c); +$pt2 = list_random($d,$e); + +if($pt1 == $b) +{$Apt1 = $Fb;} +else +{$Apt1 = $Fc;} + +if($pt2 == $d) +{$Apt2 = $Fd;} +else +{$Apt2 = $Fe;} + +$popup = DropDown( + [ + 'a function of one variable: t', + 'a function of one variable: x', + 'a function of two variables: t and x', + 'not a function' + ], + 'a function of one variable: x' +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) --($d,$fd); +\draw[red, very thick] ($d,$fd) -- ($e,$fe); +\draw[->,red, very thick] ($e,$fe) -- (10,$f10); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\filldraw[red, very thick] ($b,$fb) circle (2.5 pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5 pt); +\filldraw[red, very thick] ($d,$fd) circle (2.5 pt); +\filldraw[red, very thick] ($e,$fe) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the continuous function [`y=f(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +Let [``A(x) = \int_{[$a]}^{x} |f(t)|\, dt ``]. + ++ The quantity [`A`] is [_]{$popup} + +Determine the following values of [`A.`] + ++ [`A([$pt1]) = \, `] [_]{$Apt1}{5} + ++ [`A([$pt2]) = \, `] [_]{$Apt2}{5} + +END_PGML + +BEGIN_PGML_SOLUTION ++ [``A(x) = \int_{[$a]}^{x} |f(t)|\, dt ``] is a function of [`x`], and since we are integrating [`|f(t)|,`] the value of [`A(x)`] is the **total** area between the graph of [`y=f(t)`] and the (horizontal) [`t`]-axis over the interval [`[[$a],x].`] + ++ We compute [`A([$pt1])`] and [`A([$pt2])`] by evaluating the areas of the appropriate triangles formed by the graph of [`y=f(x)`] and the [`x`]-axis, and adding them together (if needed). We use that the area of a triangle of base length [`b`] and height [`h`] is equal to [``\frac{bh}{2}.``] In our situation, the base-length will be given by the length of a (sub)-interval of [`[[$a],x]`] and the height will be given by the appropriate value of the function [`f.`] + +Remember that since we are integrating [`|f(t)|,`] we assign all regions above/below the [`t`]- or [`x`]-axis positive values by taking the absolute value of the values of the function [`f.`] + + + [``A([$pt1]) = \int_{[$a]}^{[$pt1]} |f(t)| \, dt = \frac{1}{2}([$pt1]-[$a])|f([$b])| = \frac{1}{2}([$pt1]-[$a])|[$fb]| = [$Apt1]``] + + + [``A([$pt2]) = \int_{[$a]}^{[$pt2]} |f(t)| \, dt ``] and we can split up the integral over the intervals [`[[$a],[$c]]`] and [`[[$c],[$pt2]]`]: [```\begin{aligned}A([$pt2]) & = \int_{[$a]}^{[$pt2]} |f(t)| \, dt \\ & = \int_{[$a]}^{[$c]} |f(t)| \, dt + \int_{[$c]}^{[$pt2]} |f(t)| \, dt \\ & = \frac{1}{2}([$c]-[$a])|f([$b])| + \frac{1}{2}([$pt2]-[$c])|f([$d])| \\ & = \frac{1}{2}([$c]-[$a])|[$fb]| + \frac{1}{2}([$pt2]-[$c])|[$fd]| \\ & = [$Apt2]\end{aligned}```] + + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-1-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-1-jms.pg new file mode 100644 index 0000000000..9a25a4227e --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-1-jms.pg @@ -0,0 +1,128 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Definite integrals (without trigonometric functions)) +## Date(10 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); + +#intervals +# (-10,$a), ($a,$c), ($c,$e), and ($e,10) + +$a = random(-8,-6,1); +$b = $a + random(2,4,1); +$c = $b + random(2,3,1); +$d = $c + random(2,4,1); +$e = $d + random(2,3,1); + +# funciton values + +$fm10 = random(2,7,1)*random(-1,1,2); +$fa = 0; +$fb = random(2,7,1)*random(-1,1,2); +$fc = 0; +# make sure that fb and fd have opposite sign +if($fb > 0) +{$fd = random(-7,-2,1);} +else +{$fd = random(2,7,1);} +$fe = 0; +# make sure that fm10 and f10 have opposite sign +if($fm10 > 0) +{$f10 = random(-7,-2,1);} +else +{$f10 = random(2,7,1);} + +# area values A(x) = int_$a ^x f(t) dt +# all shapes are triangles 1/2 base height +# base = interval length; height = function values +$Fm10 = Compute("1/2*(-10-$a)*$fm10"); +$Fb = Compute("1/2*($b-$a)*$fb"); +$Fc = Compute("1/2*($c-$a)*$fb"); +$Fd = Compute("1/2*($c-$a)*$fb + 1/2*($d-$c)*$fd"); +$Fe = Compute("1/2*($c-$a)*$fb + 1/2*($e-$c)*$fd"); +$F10 = Compute("1/2*($c-$a)*$fb + 1/2*($e-$c)*$fd + 1/2(10-$e)*$f10"); + +#ask aboout b or c and d or e +$pt1 = list_random($b,$c); +$pt2 = list_random($d,$e); + +if($pt1 == $b) +{$Apt1 = $Fb;} +else +{$Apt1 = $Fc;} + +if($pt2 == $d) +{$Apt2 = $Fd;} +else +{$Apt2 = $Fe;} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) --($d,$fd); +\draw[red, very thick] ($d,$fd) -- ($e,$fe); +\draw[red, very thick] ($e,$fe) -- (10,$f10); +\filldraw[red, very thick] (-10,$fm10) circle (2.5 pt); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\filldraw[red, very thick] ($b,$fb) circle (2.5 pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5 pt); +\filldraw[red, very thick] ($d,$fd) circle (2.5 pt); +\filldraw[red, very thick] ($e,$fe) circle (2.5 pt); +\filldraw[red, very thick] (10,$f10) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the continuous function [`y=f(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +Evaluate the following definite integrals. + ++ [``\int_{[$a]}^{-10} f(x) \, dx = \, ``] [_]{$Fm10}{5} + ++ [``\int_{[$a]}^{[$pt1]} f(x) \, dx = \, ``] [_]{$Apt1}{5} + ++ [``\int_{[$a]}^{[$pt2]} f(x) \, dx = \, ``][_]{$Apt2}{5} + ++ [``\int_{[$a]}^{10} f(x) \, dx = \, ``] [_]{$F10}{5} + +END_PGML + +BEGIN_PGML_SOLUTION +We compute these definite integrals by evaluating the areas of the appropriate triangles formed by the graph of [`y=f(x)`] and the [`x`]-axis, and adding them together (if needed). We use that the area of a triangle of base length [`b`] and height [`h`] is equal to [``\frac{bh}{2}.``] In our situation, the base-length will be given by the length of a (sub)-interval of [`[[$a],b]`] and the height will be given by the appropriate value of the function [`f.`] + +Remember that regions above the [`x`]-axis are assigned positive values and regions below the [`x`]-axis are assigned negative values, which are "built-in" to the values of the function [`f`] below. + + + Note that in the first integral we are integrating right-to-left so we can first flip the limits of integration: [```\begin{aligned}\int_{[$a]}^{-10} f(x) \, dx & = - \int_{-10}^{[$a]} f(x) \, dx \\ & = -\frac{1}{2}([$a]-(-10))f(-10) \\ & = -\frac{1}{2}([$a]+10)([$fm10]) \\ & = [$Fm10].\end{aligned}```] + + + [``\int_{[$a]}^{[$pt1]} f(x) \, dx = \frac{1}{2}([$pt1]-[$a])f([$b]) = \frac{1}{2}([$pt1]-[$a])([$fb]) = [$Apt1]``] + + + We can split up the integral over the intervals [`[[$a],[$c]]`] and [`[[$c],[$pt2]]`]: [```\begin{aligned}\int_{[$a]}^{[$pt2]} f(x) \, dx & = \int_{[$a]}^{[$c]} f(x) \, dx + \int_{[$c]}^{[$pt2]} f(x) \, dx \\ & = \frac{1}{2}([$c]-[$a])f([$b]) + \frac{1}{2}([$pt2]-[$c])f([$d]) \\ & = \frac{1}{2}([$c]-[$a])([$fb]) + \frac{1}{2}([$pt2]-[$c])([$fd]) \\ & = [$Apt2]\end{aligned}```] + + + Again, we can split up the integral: [```\int_{[$a]}^{10} f(x) \, dx = \int_{[$a]}^{[$c]} f(x) \, dx + \int_{[$c]}^{[$e]} f(x) \, dx + \int_{[$e]}^{10} f(x) \, dx ```] + + So we get [```\begin{aligned}\int_{[$a]}^{-10} f(x) \, dx & = \frac{1}{2}([$c]-[$a])f([$b]) + \frac{1}{2}([$e]-[$c])f([$d]) + \frac{1}{2}(10-[$e])f(10) \\ & = \frac{1}{2}([$c]-[$a])([$fb]) + \frac{1}{2}([$e]-[$c])([$fd]) + \frac{1}{2}(10-[$e])([$f10]) \\ & = [$F10].\end{aligned}```] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-2-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-2-jms.pg new file mode 100644 index 0000000000..6059e38336 --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-2-jms.pg @@ -0,0 +1,139 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Definite integrals (without trigonometric functions)) +## Date(10 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); + +#intervals +$a = random(-8,-6,1); +$b = $a + random(2,4,1); +$c = $b + random(2,3,1); +$d1 = $c + random(1,2,1); +$d2 = $d1 + random(1,2,1); +$e = $d2 + random(2,3,1); + +# funciton values +$fm10 = random(2,6,1)*random(-1,1,2); +$fa = $fm10; +#make sure fb has same sign as fm10, fa +if($fm10 < 0) +{$fb = random(-7,-2,1);} +else +{$fb = random(2,7,1);} +$fc = 0; +# make sure that fb and fd have opposite sign +if($fb > 0) +{$fd = random(-6,-2,1);} +else +{$fd = random(2,6,1);} +$fe = 0; +# make sure that fe and f10 have the same sign +$f10 = random(2,7,1)*random(-1,1,2); + +# area values over sub-intervals +# all shapes are rectangles (base height) or triangles (1/2 base height) +# base = interval length; height = function values +$Am10toa = Compute("($a-(-10))*$fm10"); #rectangle +$Aatob = 1/2*($b-$a)*(max($fm10,$fb)-min($fm10,$fb)) +($b-$a)*min($fm10,$fb); #rectangle + trangle +$Abtoc = Compute("1/2*($c-$b)*$fb"); #triangle +$Actod1 = Compute("1/2*($d1-$c)*$fd");#triangle +$Ad1tod2 = Compute("($d2-$d1)*$fd"); #rectangle +$Ad2toe = Compute("1/2*($e-$d2)*$fd"); #triangle +$Aeto10 = Compute("1/2*(10-$e)*$f10"); #triangle + +#ask aboout b or c and d or e +$pt1 = list_random($b,$c); +$pt2 = list_random($d1,$e); + +if($pt1 == $b) +{$Apt1to10 = Compute("$Abtoc + $Actod1 + $Ad1tod2 + $Ad2toe + $Aeto10");} +else +{$Apt1to10 = Compute("$Actod1 + $Ad1tod2 + $Ad2toe + $Aeto10");} + +if($pt2 == $d1) +{$Am10topt2 = Compute("$Am10toa + $Aatob + $Abtoc + $Actod1");} +else +{$Am10topt2 = Compute("$Am10toa + $Aatob + $Abtoc + $Actod1 + $Ad1tod2 + $Ad2toe");} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) -- ($d1,$fd); +\draw[red, very thick] ($d1,$fd) -- ($d2,$fd); +\draw[red, very thick] ($d2,$fd) -- ($e,$fe); +\draw[red, very thick] ($e,$fe) -- (10,$f10); +\filldraw[red, very thick] (-10,$fm10) circle (2.5 pt); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\filldraw[red, very thick] ($b,$fb) circle (2.5 pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5 pt); +\filldraw[red, very thick] ($d1,$fd) circle (2.5 pt); +\filldraw[red, very thick] ($d2,$fd) circle (2.5 pt); +\filldraw[red, very thick] ($e,$fe) circle (2.5 pt); +\filldraw[red, very thick] (10,$f10) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the continuous function [`y=f(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +Evaluate the following definite integrals. + ++ [``\int_{-10}^{[$pt2]} f(x) \, dx = \, ``] [_]{$Am10topt2}{5} + ++ [``\int_{[$pt1]}^{10} f(x) \, dx = \, ``] [_]{$Apt1to10}{5} + +END_PGML + +$rec = min($fm10,$fb); +$tri = max($fm10,$fb)-min($fm10,$fb); +$Am10tod1 = $Am10toa + $Aatob + $Abtoc + $Actod1; + +BEGIN_PGML_SOLUTION +We compute these definite integrals by evaluating the areas of the appropriate rectangles and triangles formed by the graph of [`y=f(x)`] and the [`x`]-axis, over sub-intervals of the domain of integration, and adding them together. +Remember that regions above the [`x`]-axis are assigned "positive areas" and regions below the [`x`]-axis are assigned "negative areas", which are "built-in" to the values of the function [`f`]. + +Here is an example calculation for the integral [``\int_{-10}^{[$d1]} f(x) \, dx ``] + +First split the integral up over sub-intervals +[```\int_{-10}^{[$d1]} f(x) \, dx = \int_{-10}^{[$a]} f(x) \, dx + \int_{[$a]}^{[$b]} f(x) \, dx + \int_{[$b]}^{[$c]} f(x) \, dx + \int_{[$c]}^{[$d1]} f(x) \, dx,```] +and then compute the individual definite integrals using the areas of basic shapes. + ++ [`` \int_{-10}^{[$a]} f(x) \, dx``] is the area of a rectangle of width [`[$a-(-10)]`] and height [`[$fm10]`], so [`` \int_{-10}^{[$a]} f(x) \, dx = [$a-(-10)]([$fm10]) = [$Am10toa].``] + ++ [``\int_{[$a]}^{[$b]} f(x) \, dx``] can be evaluated by splitting the region over the interval [`[[$a],[$b]]`] into a rectangle of width [`[$b-$a]`] and height [`[$rec],`] and a triangle of base-length [`[$b-$a]`] and height [`[$tri].`] Then [``\int_{[$a]}^{[$b]} f(x) \, dx = [$b-$a]([$rec]) + \frac{1}{2}[$b-$a]([$tri]) = [$Aatob].``] + + **Note** for some versions of this problem, the there will **not** be a triangular region to evaluate [``\int_{[$a]}^{[$b]} f(x) \, dx.``] + ++ [``\int_{[$b]}^{[$c]} f(x) \, dx``] is the area of a triangle of base-length [`[$c-$b]`] and height [`[$fb],`] so +[``\int_{[$b]}^{[$c]} f(x) \, dx = \frac{1}{2}[$c-$b]([$fb]) = [$Abtoc]``] + ++ [``\int_{[$c]}^{[$d1]} f(x) \, dx``] is the area of a triangle of base-length [`[$d1-$c]`] and height [`[$fd],`] so +[``\int_{[$c]}^{[$d1]} f(x) \, dx = \frac{1}{2}[$d1-$c]([$fd]) = [$Actod1]``] + +Therefore, [``\int_{-10}^{[$d1]} f(x) \, dx = [$Am10toa] + [$Aatob] + [$Abtoc] + [$Actod1] = [$Am10tod1].``] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-3-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-3-jms.pg new file mode 100644 index 0000000000..daa4b7f1ce --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-3-1-Ap-C/12-3-1-Ap-C-area-graph-3-jms.pg @@ -0,0 +1,122 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Definite integrals (without trigonometric functions)) +## Date(11 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); + +#intervals +$a = random(-8,-6,1); +$c = random(2,3,1); +$d = $c + random(2,3,1); +$e = $d + random(1,2,1); + +# funciton values +#rectangle +$fm10 = random(2,5,1)*random(-1,1,2); +$fa = $fm10; +#quarter circle +$r = random(2,5,1); +$rsq = abs($r)**2; #squared radius +$sign = random(-1,1,2); +$rsign = $r*$sign; +# values for positive x +$fc = 0; +$fd = random(2,7,1)*random(-1,1,2); +$fe = $fd; +$f10 = random(2,7,1)*random(-1,1,2); + +# signed area of quarter circle +$circ = Compute("($sign/4)*pi*($r**2)"); + +# area values over sub-intervals +# all shapes are rectangles (base height), triangles (1/2 base height), or 1/4 circles +# base = interval length; height = function values +# $Am10toa = Compute("($a-(-10))*$fm10"); #rectangle +$Aatomr = Compute("1/2*(-$r-$a)*$fa"); +$A0toc = Compute("1/2*($c-0)*($rsign)");#triangle +$Actod = Compute("1/2($d-$c)*$fd"); #triangle +$Adtoe = Compute("($e-$d)*$fd"); #rectangle +#Aeto10 will not be "nice" since we would need the equation of this line segment in general + +$ans = Compute("1/2*(-$r-$a)*$fa + ($sign/4)*pi*($r**2) + 1/2*($c-0)*($rsign) + 1/2($d-$c)*$fd + ($e-$d)*$fd"); + + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- (-$r,0); +\draw[red, very thick, smooth] plot[domain={-$r}:{0}] (\x,{$sign*pow($rsq-\x*\x,1/2)}); +\draw[red, very thick] (0,$sign*$r) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) -- ($d,$fd); +\draw[red, very thick] ($d,$fd) -- ($e,$fe); +\draw[red, very thick] ($e,$fe) -- (10,$f10); +\filldraw[red, very thick] (-10,$fm10) circle (2.5 pt); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\filldraw[red, very thick] (-$r,0) circle (2.5 pt); +\filldraw[red, very thick] (0,$sign*$r) circle (2.5 pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5 pt); +\filldraw[red, very thick] ($d,$fd) circle (2.5 pt); +\filldraw[red, very thick] ($e,$fe) circle (2.5 pt); +\filldraw[red, very thick] (10,$f10) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the continuous function [`y=f(x)`]. + +You can assume that the curved portion of the graph is a sector of a circle centred at [`(0,0)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +Evaluate the following definite integrals. + ++ [``\int_{-[$r]}^{0} f(x) \, dx = \, ``] [_]{$circ}{5} + ++ [``\int_{[$a]}^{[$e]} f(x) \, dx = \, ``] [_]{$ans}{5} + +END_PGML + +$mrma = -$r-$a; +$anslesscirc = $ans-$circ; + +BEGIN_PGML_SOLUTION ++ [``\int_{-[$r]}^{0} f(x) \, dx ``] is the signed area of the quarter circle of radius [`r=[$r]`] centred at [`(0,0),`] so we have [``\int_{-[$r]}^{0} f(x) \, dx = \, \frac{[$sign]}{4}\pi[$r]^2 = \frac{[$sign*$rsq]}{4}\pi.``] + ++ We will split the integral up over sub-intervals and then use the appropriate areas of (quarter) circles, rectangles and triangles to find the desired integral. + + [```\int_{[$a]}^{[$e]} f(x) \, dx = \int_{[$a]}^{-[$r]} f(x) \, dx + \int_{-[$r]}^{0} f(x) \, dx + \int_{0}^{[$c]} f(x) \, dx + \int_{[$c]}^{[$d]} f(x) \, dx + \int_{[$d]}^{[$e]} f(x) \, dx```] + + + [``\int_{[$a]}^{-[$r]} f(x) \, dx = \frac{1}{2}(-[$r]-[$a])([$fa]) = \frac{1}{2}([$mrma])([$fa]) = [$Aatomr]``] is the signed area of triangle with base length [`[$mrma]`] and height [`[$fa].`] + + + From above: [``\int_{-[$r]}^{0} f(x) \, dx = \, \frac{[$sign]}{4}\pi[$r]^2 = \frac{[$sign*$rsq]}{4}\pi.``] + + + [``\int_{0}^{[$c]} f(x) \, dx = \frac{1}{2}([$c]-0)([$rsign]) = \frac{1}{2}([$c])([$rsign]) = [$A0toc]``] is the signed area of a triangle of base length [`[$c]`] and height [`[$rsign].`] + + + [``\int_{[$c]}^{[$d]} f(x) \, dx = \frac{1}{2}([$d]-[$c])([$fd]) = \frac{1}{2}([$d-$c])([$fd]) = [$Actod]``] is the signed area of a triangle of base length [`[$d-$c]`] and height [`[$fd].`] + + + [``\int_{[$d]}^{[$e]} f(x) \, dx = ([$e]-[$d])([$fd]) = ([$e-$d])([$fe]) = [$Adtoe] ``] is the signed area of a rectangle of width [`[$e-$d]`] and height [`[$fe].`] + +Therefore, [```\int_{[$a]}^{[$e]} f(x) \, dx = ([$Aatomr]) + \left(\frac{[$sign*$rsq]}{4}\pi\right) + ([$A0toc]) + ([$Actod]) + ([$Adtoe]) = [$anslesscirc] + \left(\frac{[$sign*$rsq]}{4}\pi\right)```] + + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-1-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-1-jms.pg new file mode 100644 index 0000000000..7e6353c06a --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-1-jms.pg @@ -0,0 +1,109 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Definite integrals (without trigonometric functions)) +## Date(11 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "PGtikz.pl" # Graphing tool used in the solution +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-3,-2,1); +$absa = abs($a); + +$m = non_zero_random(-2,2,1); +if($m<0) +{$b = random(1,3,1);} +else +{$b = random(-3,-1,1);} + +$ma = $m*$a; + + +$r = random(2,5,1); +$rsq = $r**2; +$twor = 2*$r; + +$sign = random(-1,1,2); + +$f1 = Formula("$m*x+$b")->reduce(); +$f2 = Formula("$sign*sqrt($rsq - (x-$r)**2)")->reduce(); + +$ans = Compute("1/2*$absa*($ma) + $absa*$b + $sign*pi/4*$rsq"); +$ans1 = Compute("1/2*$absa*($ma) + $absa*$b"); +$ans2 = Compute("$sign*pi/4*$rsq"); + +$limit = max($r,abs($m*$a+$b)); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] ($a,0) -- ($twor,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-$limit) -- (0,$limit) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] ($a,-$limit) grid ($twor,$limit); +\foreach \x in {$a,...,$twor} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-$limit,...,$limit} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] plot[domain={$a}:{0}] (\x, $m*\x+$b); +\draw[red, very thick, smooth] plot[domain={0}:{$twor}] (\x,{$sign*pow({$rsq-(\x-$r)*(\x-$r)},1/2)}); +END_TIKZ + +BEGIN_PGML +Consider the piecewise defined function [``` f(x) = \begin{cases} [$f1] & x < 0 \\ [$f2] & 0 \leq x \leq [$twor] \end{cases} ```] + +Evaluate the definite integral: +[``\int_{[$a]}^{[$r]} f(x) \, dx = \, ``][_]{$ans}{5} +END_PGML + +BEGIN_PGML_HINT +Consider graphing the piecewise defined function [`y=f(x).`] + +Note that if [`y = [$f2]`], then [`(x-[$r])^2 + y^2 = [$rsq].`] +END_PGML_HINT + +if($sign == 1) +{$updown = 'above';} +else +{$updown = 'below';} + +$coeff = Formula("$sign*pi")->reduce(); + + +BEGIN_PGML_SOLUTION +First, split up the integral into two parts based on where the definition of [`f`] changes "pieces" +[```\int_{[$a]}^{[$r]} f(x) \, dx = \int_{[$a]}^{0} f(x) \, dx + \int_{0}^{[$r]} f(x) \, dx,```] +now we will compute these two integrals separately using a graph of [`f`]. + +We obtain the graph of the function [`y=f(x)`] by graphing the line [`y=[$f1]`] for [`x<0,`] and the function [`y=[$f2]`] for [`0\leq x \leq [$twor]`], which is a semicircle [$updown] the [`x`]-axis with radius [`[$r]`] centred at the point [`([$r],0)`] on the [`x`]-axis. + + [@ image($graph_image, height =>500, width => 500, tex_size => 800) @]* + + Now we can see that [``\int_{[$a]}^{0} f(x) \, dx``] is the signed area of a triangle with base-length [`[$absa]`] and height [`[$m*$a+$b] - [$b] = [$m*$a]`] plus the signed area of rectangle of width [`[$absa]`] and height [`[$b]`]. Therefore, [``\int_{[$a]}^{0} f(x) \, dx = \frac{1}{2}[$absa]([$m*$a]) + [$absa]([$b]) = [$ans1].``] + + We also observe that [``\int_{0}^{[$r]} f(x) \, dx``] is the signed area of a quarter circle radius [`[$r]`] and [``\int_{0}^{[$r]} f(x) \, dx =\frac{[$coeff]}{4}[$r]^2 = \frac{[$coeff*$rsq]}{4}``] + +Putting this together we have: +[```\int_{[$a]}^{[$r]} f(x) \, dx = \int_{[$a]}^{0} f(x) \, dx + \int_{0}^{[$r]} f(x) \, dx = [$ans1] + \frac{[$coeff*$rsq]}{4}.```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-2-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-2-jms.pg new file mode 100644 index 0000000000..c9d8b2586b --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-2-jms.pg @@ -0,0 +1,102 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Definite integrals (without trigonometric functions)) +## Date(11 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "PGtikz.pl" # Graphing tool used in the solution +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-4,-2,1); +$absa = abs($a); + +$m = non_zero_random(-2,2,1); +$ma = $m*$a; + +$r = random(2,5,1); +$rsq = $r**2; +$twor = 2*$r; + +$sign = random(-1,1,2); + +$f1 = Formula("$m*x")->reduce(); +$f2 = Formula("$sign*sqrt($rsq - (x-$r)**2)")->reduce(); + +$ans = Compute("1/2*$absa*($ma) + $sign*pi/2*$rsq"); +$ans1 = Compute("1/2*$absa*($ma)"); +$ans2 = Compute("$sign*pi/2*$rsq"); + +$limit = max($r,abs($m*$a)); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] ($a,0) -- ($twor,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-$limit) -- (0,$limit) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] ($a,-$limit) grid ($twor,$limit); +\foreach \x in {$a,...,$twor} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-$limit,...,$limit} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] plot[domain={$a}:{0}] (\x, $m*\x); +\draw[red, very thick, smooth] plot[domain={0}:{$twor}] (\x,{$sign*pow({$rsq-(\x-$r)*(\x-$r)},1/2)}); +END_TIKZ + +BEGIN_PGML +Consider the piecewise defined function [``` f(x) = \begin{cases} [$f1] & x < 0 \\ [$f2] & 0 \leq x \leq [$twor] \end{cases} ```] + +Evaluate the definite integral: +[``\int_{[$a]}^{[$twor]} f(x) \, dx = \, ``][_]{$ans}{5} +END_PGML + +BEGIN_PGML_HINT +Consider graphing the piecewise defined function [`y=f(x).`] + +Note that if [`y = [$f2]`], then [`(x-[$r])^2 + y^2 = [$rsq].`] +END_PGML_HINT + +if($sign == 1) +{$updown = 'above';} +else +{$updown = 'below';} + +$coeff = Formula("$sign*pi")->reduce(); + +BEGIN_PGML_SOLUTION +First, split up the integral into two parts based on where the definition of [`f`] changes "pieces" +[```\int_{[$a]}^{[$twor]} f(x) \, dx = \int_{[$a]}^{0} f(x) \, dx + \int_{0}^{[$twor]} f(x) \, dx,```] +now we will compute these two integrals separately using a graph of [`f`]. + +We obtain the graph of the function [`y=f(x)`] by graphing the line [`y=[$f1]`] for [`x<0,`] and the function [`y=[$f2]`] for [`0\leq x \leq [$twor]`], which is a semicircle [$updown] the [`x`]-axis with radius [`[$r]`] centred at the point [`([$r],0)`] on the [`x`]-axis. + + [@ image($graph_image, height =>500, width => 500, tex_size => 800) @]* + + Now we can see that [``\int_{[$a]}^{0} f(x) \, dx``] is the signed area of a triangle with base-length [`[$absa]`] and height [`[$m*$a].`] Therefore, [``\int_{[$a]}^{0} f(x) \, dx = \frac{1}{2}[$absa]([$m*$a]) = [$ans1].``] + + We also observe that [``\int_{0}^{[$twor]} f(x) \, dx``] is the signed area of a semicircle radius [`[$r]`] and [``\int_{0}^{[$twor]} f(x) \, dx =\frac{[$coeff]}{2}[$r]^2 = \frac{[$coeff*$rsq]}{2}``] + +Putting this together we have: +[```\int_{[$a]}^{[$twor]} f(x) \, dx = \int_{[$a]}^{0} f(x) \, dx + \int_{0}^{[$twor]} f(x) \, dx = [$ans1] + \frac{[$coeff*$rsq]}{2}.```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-3-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-3-jms.pg new file mode 100644 index 0000000000..97c2c12835 --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-3-2-Ap-C/12-3-2-Ap-C-pw-def-no-ftc-3-jms.pg @@ -0,0 +1,91 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Definite integrals (without trigonometric functions)) +## Date(11 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "PGtikz.pl" # Graphing tool used in the solution +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-5,-2,1); +$b = random(3,5,1); +$t = $a + random(2,3,1); +if($t == 0) +{$t = $t+1;} +$c = non_zero_random(-5,5,1); + +$m = non_zero_random(-2,2,1); +$mbt = $m*($b-$t); + +$f1 = Formula("$c")->reduce(); +$f2 = Formula("$m*(x-$t)")->reduce(); + +$ans = Compute("$c*($t-$a) + (1/2)*($b-$t)*$mbt"); +$ans1 = Compute("$c*($t-$a) "); +$ans2 = Compute("(1/2)*($b-$t)*$mbt"); + +$limit = max(abs($c)+1,abs($m*($b-$t))); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] ($a,0) -- ($b,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-$limit) -- (0,$limit) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] ($a,-$limit) grid ($b,$limit); +\foreach \x in {$a,...,$b} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-$limit,...,$limit} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] plot[domain={$a}:{$t}] (\x, $c); +\draw[red, very thick, smooth] plot[domain={$t}:{$b}] (\x,{$m*(\x-$t)}); +END_TIKZ + +BEGIN_PGML +Consider the piecewise defined function [``` f(x) = \begin{cases} [$f1] & x \leq [$t] \\ [$f2] & x > [$t] \end{cases} ```] + +Evaluate the definite integral: +[``\int_{[$a]}^{[$b]} f(x) \, dx = \, ``][_]{$ans}{5} +END_PGML + +BEGIN_PGML_HINT +Consider graphing the piecewise defined function [`y=f(x).`] +END_PGML_HINT + +BEGIN_PGML_SOLUTION +First, split up the integral into two parts based on where the definition of [`f`] changes "pieces" +[```\int_{[$a]}^{[$b]} f(x) \, dx = \int_{[$a]}^{[$t]} f(x) \, dx + \int_{[$t]}^{[$b]} f(x) \, dx,```] +now we will compute these two integrals separately using a graph of [`f`]. + +We obtain the graph of the function [`y=f(x)`] by graphing the horizontal line [`y=[$f1]`] for [`[$a] \leq x \leq [$t],`] and the function [`y=[$f2]`] for [`[$t] < x \leq [$b]`], which is a line with slope [`[$m]`] and [`x`]-intercept [`x=[$t].`] + + [@ image($graph_image, height =>500, width => 500, tex_size => 800) @]* + +Now [``\int_{[$a]}^{[$t]} f(x) \, dx``] is the signed area of a rectangle with width [`[$t]-[$a] = [$t-$a]`] and height [`[$c],`] so we have [``\int_{[$a]}^{[$t]} f(x) \, dx = [$t-$a]([$c]) = [$ans1].``] + +On the other hand [``\int_{[$t]}^{[$b]} f(x) \, dx``] is the signed are of a triangle with base-length [`[$b]-[$t] = [$b-$t]`] and height [`[$mbt]`], and we get [``\int_{[$t]}^{[$b]} f(x) \, dx = \frac{1}{2}[$b-$t]([$mbt]) = [$ans2].``] + +Therefore, [```\int_{[$a]}^{[$b]} f(x) \, dx = \int_{[$a]}^{[$t]} f(x) \, dx + \int_{[$t]}^{[$b]} f(x) \, dx, = [$ans1] +[$ans2] = [$ans].```] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-1-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-1-jms.pg new file mode 100644 index 0000000000..df9047e04f --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-1-jms.pg @@ -0,0 +1,61 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Definite integrals (without trigonometric functions)) +## Date(11 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-5,-2,1); +$b = $a + random(2,4,1); +$c = $b + random(2,4,1); +$d = $c + random(2,4,1); + +$atoc = non_zero_random(-20,20,1); +$btod = non_zero_random(-20,20,1); +$btoc = non_zero_random(-20,20,1); + +$ans_atob = Compute("$atoc - $btoc"); +$ans_atod = Compute("$ans_atob + $btod"); + +BEGIN_PGML +Suppose that [`f`] is a continuous function and that +[``` \int_{[$a]}^{[$c]}f(x) \, dx = [$atoc], \quad \int_{[$b]}^{[$d]}f(x) \, dx = [$btod] \quad \text{and} \quad \int_{[$b]}^{[$c]}f(x) \, dx = [$btoc] ```] + +Determine the value of the following definite integrals. + ++ [`` \int_{[$a]}^{[$b]}f(x) \, dx = \, ``] [_]{$ans_atob}{5} + ++ [`` \int_{[$a]}^{[$d]}f(x) \, dx = \, ``] [_]{$ans_atod}{5} +END_PGML + +BEGIN_PGML_SOLUTION ++ Note that [``` \int_{[$a]}^{[$c]}f(x) \, dx = \int_{[$a]}^{[$b]}f(x) \, dx + \int_{[$b]}^{[$c]}f(x) \, dx,```] +and the values of two of these integrals are given, so [```\int_{[$a]}^{[$b]}f(x) \, dx = \int_{[$a]}^{[$c]}f(x) \, dx - \int_{[$b]}^{[$c]}f(x) \, dx, = [$atoc]-[$btoc] = [$ans_atob].```] + ++ We can use the first result we found and the given information to see that +[``` \int_{[$a]}^{[$d]}f(x) \, dx = \int_{[$a]}^{[$b]}f(x) \, dx + \int_{[$b]}^{[$d]}f(x) \, dx = [$ans_atob] + [$btod] = [$ans_atod]. ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-2-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-2-jms.pg new file mode 100644 index 0000000000..77c98cd872 --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-2-jms.pg @@ -0,0 +1,71 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Definite integrals (without trigonometric functions)) +## Date(11 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(1,3,1); +$b = $a + random(2,4,1); +$c = $b + random(2,4,1); +$d = $c + random(2,4,1); + +$l = non_zero_random(-3,3,1); +$k = random(2,3,1)*random(-1,1,2); +if(abs($l) == abs($k)) +{$l = abs($l)+1;} + +$atoc = non_zero_random(-20,20,1); +$btod = non_zero_random(-20,20,1); +$ctod = non_zero_random(-20,20,1); + +$ans_btoc = Compute("$btod - $ctod"); +$ans_atob_kl = Compute("$k*($atoc - $ans_btoc) + $l*($b-$a)"); + +BEGIN_PGML +Suppose that [`f`] is a continuous function and that +[``` \int_{[$a]}^{[$c]}f(x) \, dx = [$atoc], \quad \int_{[$b]}^{[$d]}f(x) \, dx = [$btod] \quad \text{and} \quad \int_{[$c]}^{[$d]}f(x) \, dx = [$ctod] ```] + +Determine the value of the following definite integrals. + ++ [`` \int_{[$b]}^{[$c]} f(x) \, dx = \, ``] [_]{$ans_btoc}{5} + ++ [`` \int_{[$a]}^{[$b]} \left([$k]f(x) + [$l]\right) \, dx = \, ``] [_]{$ans_atob_kl}{5} + + +END_PGML + +BEGIN_PGML_SOLUTION ++ First notice that [``` \int_{[$b]}^{[$d]} f(x) \, dx = \int_{[$b]}^{[$c]} f(x) \, dx + \int_{[$c]}^{[$d]} f(x) \, dx,```] therefore [``` \int_{[$b]}^{[$c]} f(x) \, dx = \int_{[$b]}^{[$d]} f(x) \, dx - \int_{[$c]}^{[$d]} f(x) \, dx = [$btod] - [$ctod] = [$ans_btoc].```] + ++ First, we have [``` \int_{[$a]}^{[$b]} \left([$k]f(x) + [$l]\right) \, dx = [$k] \int_{[$a]}^{[$b]} f(x)\, dx + \int_{[$a]}^{[$b]} [$l]\, dx. ```] Similar to the previous part, +[``` \int_{[$a]}^{[$b]} f(x)\, dx = \int_{[$a]}^{[$c]} f(x)\, dx - \int_{[$b]}^{[$c]} f(x)\, dx = [$atoc]-[$ans_btoc] = [$atoc - $ans_btoc].```] +The integral of a contstant function gives the (singed) are of rectangle: +[``` \int_{[$a]}^{[$b]} [$l]\, dx = [$l]([$b]-[$a]) = [$l*($b-$a)].```] +Therefore, +[``` \int_{[$a]}^{[$b]} \left([$k]f(x) + [$l]\right) \, dx = [$k] \int_{[$a]}^{[$b]} f(x)\, dx + \int_{[$a]}^{[$b]} [$l]\, dx = [$k]([$atoc - $ans_btoc]) + [$l*($b-$a)] = [$ans_atob_kl].```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-3-jms.pg b/Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-3-jms.pg new file mode 100644 index 0000000000..9344dbf05a --- /dev/null +++ b/Contrib/UCalgary/249-12-0-0-C/12-3-4-An-C/12-3-4-An-C-abstract-int-3-jms.pg @@ -0,0 +1,74 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Definite integrals (without trigonometric functions)) +## Date(11 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(4) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-5,-2,1); +$b = $a + random(2,4,1); +$c = $b + random(2,4,1); +$d = $c + random(2,4,1); + + +$k = random(2,3,1); +$l = random(-3,-1,1); + +$fatob = non_zero_random(-20,20,1); +$fbtod = non_zero_random(-20,20,1); +$fctod = non_zero_random(-20,20,1); +$gatoc = non_zero_random(-20,20,1); +$gbtod = non_zero_random(-20,20,1); +$gctod = non_zero_random(-20,20,1); + +$fmg_btod = Compute("$fbtod - $gbtod"); +$kflg_atod = Compute("$k*($fatob + $fbtod) + $l*($gatoc + $gctod)"); + +BEGIN_PGML +Suppose that [`f`] and [`g`] are continuous functions with the property that +[``` \int_{[$a]}^{[$b]}f(x) \, dx = [$fatob], \quad \int_{[$b]}^{[$d]}f(x) \, dx = [$fbtod] \quad \text{and} \quad \int_{[$c]}^{[$d]}f(x) \, dx = [$fctod] ```] +and +[``` \int_{[$a]}^{[$c]}g(x) \, dx = [$gatoc], \quad \int_{[$b]}^{[$d]}g(x) \, dx = [$gbtod] \quad \text{and} \quad \int_{[$c]}^{[$d]}g(x) \, dx = [$gctod]. ```] + +Determine the value of the following definite integrals. + ++ [`` \int_{[$b]}^{[$d]} f(x)-g(x) \, dx = \, ``] [_]{$fmg_btod}{5} + ++ [`` \int_{[$a]}^{[$d]} [$k]f(x)+[$l]g(x) \, dx = \, ``] [_]{$kflg_atod}{5} + +END_PGML + +BEGIN_PGML_SOLUTION + ++ The first integral is the difference of two of the given integrals [``` \int_{[$b]}^{[$d]} f(x)-g(x) \, dx = \int_{[$b]}^{[$d]} f(x) \, dx - \int_{[$b]}^{[$d]} g(x) \, dx = [$fbtod]-[$gbtod] = [$fmg_btod].```] + ++ The second integral we can first split up into integrals of [`f`] and [`g`] [``` \int_{[$a]}^{[$d]} [$k]f(x)+[$l]g(x) \, dx = [$k] \int_{[$a]}^{[$d]} f(x)\, dx + [$l] \int_{[$a]}^{[$d]} g(x)\, dx ```] +and now we can split up the domains of integration to use the information given +[``` = [$k] \left(\int_{[$a]}^{[$b]} f(x)\, dx + \int_{[$b]}^{[$d]} f(x)\, dx \right) + [$l] \left( \int_{[$a]}^{[$c]} g(x)\, dx + \int_{[$c]}^{[$d]} g(x)\, dx\right) ```] +[``` = [$k]([$fatob] + [$fbtod]) + [$l]([$gatoc] + [$gctod]) = [$kflg_atod].```] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-0-1-R-C/13-0-1-R-C-state-ftc-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-0-1-R-C/13-0-1-R-C-state-ftc-jms.pg new file mode 100644 index 0000000000..316b8f8092 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-0-1-R-C/13-0-1-R-C-state-ftc-jms.pg @@ -0,0 +1,55 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(15 April) +## Institution(University of Calgary) +## Author(2025) +## Level(1) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(-3,3,1); +$b = $a + random(2,6,1); + +$popup1 = DropDown( + [ + 'an antiderivative', + 'the area', + 'the derivative', + 'a tangent line' + ], + 'an antiderivative' +); + +$popup2 = DropDown( + [ + 'any', + 'the unique', + 'a very special' + ], + 'any' +); + +BEGIN_PGML +Let [`f`] be a continuous function defined on the interval [`[[$a],[$b]]`]. + +The **Fundamental Theorem of Calculus** states that: + ++ The function +[``A(x) = \int_{[$a]}^x f(t) \, dt, ``] defined for all [`x\in[[$a],[$b]],`] is [_]{$popup1} of the function [`f.`] + ++ Let [`F`] be [_]{$popup2} antiderivative of [`f`], then [``\int_{[$a]}^{[$b]} f(x) \, dx = F\left( \right. ``] [_]{$b}{2} [``\left.\right)\, - F\left( \right.``] [_]{$a}{2} [``\left.\right).``] +END_PGML + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-0-2-C-C/13-0-2-C-C-cpt-anti-der-int-jms-1.pg b/Contrib/UCalgary/249-13-0-0-C/13-0-2-C-C/13-0-2-C-C-cpt-anti-der-int-jms-1.pg new file mode 100644 index 0000000000..8ee6893c3d --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-0-2-C-C/13-0-2-C-C-cpt-anti-der-int-jms-1.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(15 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(1,4,1); +$pow = random(1,2,1); +$powp1 = $pow+1; +$b = random(2,9,1); +$c = non_zero_random(-9,9,1); +Context()->variables->add(t=>"Real"); + +$fdert = Formula("$b*t^($pow) + $c")->reduce(); +$f_ans = Compute("($b/$powp1)*x**($powp1) + $c*x - ($b/$powp1)*($a)**($powp1) - $c*$a"); +$fder_ans = Compute("$b*x^($pow) + $c"); + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Find expressions for each of the following functions. + ++ [`` \int_{[$a]}^{x} [$fdert]\, dt = \, ``] [_]{$f_ans}{20} + ++ [`` \frac{d}{dx} \int_{[$a]}^{x} [$fdert]\, dt = \, ``] [_]{$fder_ans}{20} + +END_PGML + + +$f = Formula("($b)*x^($powp1)/$powp1 + $c*x - (($b/$powp1)*($a**$powp1) + $c*$a)")->reduce(); +$fderx = Formula("$b*x^($pow) + $c")->reduce(); + +BEGIN_PGML_SOLUTION +We can use the definition of the definite integral, or the Fundamental Theorem of Calculus (FTC). We will use the FTC. +[``` \int_{[$a]}^{x} [$fdert]\, dt = \left. \frac{[$b]}{[$powp1]}t^{[$powp1]} + [$c]t \right\vert_{1}^{x} = [$f].```] +By the Fundamental Theorem of Calculus we have +[``` \frac{d}{dx} \int_{[$a]}^{x} [$fdert]\, dt = [$fderx].```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-0-2-C-C/13-0-2-C-C-cpt-anti-der-int-jms-2.pg b/Contrib/UCalgary/249-13-0-0-C/13-0-2-C-C/13-0-2-C-C-cpt-anti-der-int-jms-2.pg new file mode 100644 index 0000000000..e0daef5e25 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-0-2-C-C/13-0-2-C-C-cpt-anti-der-int-jms-2.pg @@ -0,0 +1,62 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(15 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(1,4,1); +$b = random(2,9,1); +$c = non_zero_random(-9,9,1); +Context()->variables->add(t=>"Real"); + +$fdert = Formula("$b*sin(t) + $c*e^t")->reduce(); +$f_ans = Compute("-$b*cos(x) + $c*e^x + $b*cos(pi*$a) - $c*(e**(pi*$a))"); +$fder_ans = Compute("$b*sin(x) + $c*e^x"); + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Find expressions for each of the following functions. + ++ [`` \int_{[$a]\pi}^{x} [$fdert]\, dt = \, ``] [_]{$f_ans}{20} + ++ [`` \frac{d}{dx} \int_{[$a]}^{x} [$fdert]\, dt = \, ``] [_]{$fder_ans}{20} + +END_PGML + +$f = Formula("-$b*cos(x) + $c*e^x + $b*cos(pi*$a) - $c*(e**(pi*$a))")->reduce(); +$fderx = Formula("$b*sin(x) + $c*e^x")->reduce(); + +BEGIN_PGML_SOLUTION +We will use the Fundamental Theorem of Calculus (FTC): +[``` \left. \int_{[$a]\pi}^{x} [$fdert]\, dt = \left[-[$b]\cos(t) + [$c]e^t \right] \right\vert_{[$a]\pi}^{x} = [$f].```] +By the Fundamental Theorem of Calculus we have +[``` \frac{d}{dx} \int_{[$a]}^{x} [$fdert]\, dt = [$fderx].```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-1-Ap-C-poly-definite-jms-1.pg b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-1-Ap-C-poly-definite-jms-1.pg new file mode 100644 index 0000000000..f32aeabb55 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-1-Ap-C-poly-definite-jms-1.pg @@ -0,0 +1,70 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(15 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a1 = random(-3,3,1); +$b1 = $a1 + random(2,6,1); +$pow1 = random(2,4,1); +$pow1p1 = $pow1+1; +$p = random(2,5,1)*random(-1,1,2); +$q = non_zero_random(-9,9,1); +$f1 = Formula("$p*x^($pow1) + $q*x")->reduce(); +$ans1 = Compute("($p/$pow1p1)*(($b1)**$pow1p1)+$q*(($b1)**2)/2 - ($p/$pow1p1)*(($a1)**$pow1p1) -$q*(($a1)**2)/2"); + +$a2 = random(-3,3,1); +$b2 = $a2 + random(2,6,1); +$pow2 = random(3,4,1); +$pow2p1 = $pow2+1; +$r = random(2,5,1)*random(-1,1,2); +$s = non_zero_random(-5,5,1); +$t = non_zero_random(-5,5,1); +$f2 = Formula("$r*x^($pow2) + $s*x^2 + $t")->reduce(); +$ans2 = Compute("($r/$pow2p1)*(($b2)**$pow2p1)+($s/3)*(($b2)**3) + $t*$b2 - ($r/$pow2p1)*(($a2)**$pow2p1) - ($s/3)*(($a2)**3) - $t*$a2"); + +BEGIN_PGML +Evaluate the following definite integrals. + ++ [``\int_{[$a1]}^{[$b1]} [$f1] \, dx = \, ``] [_]{$ans1}{10} + ++ [``\int_{[$a2]}^{[$b2]} [$f2] \, dx = \, ``] [_]{$ans2}{10} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +$f1_int = Formula("($p)*(x**$pow1p1)/$pow1p1+$q*(x**2)/2")->reduce(); +$f2_int = Formula("($r)*(x**$pow2p1)/$pow2p1+($s)*(x**3)/3 + $t*x")->reduce(); + +BEGIN_PGML_SOLUTION +We will use the Fundamental Theorem of Calculus. + ++ [``\int_{[$a1]}^{[$b1]} [$f1] \, dx = \left. [$f1_int] \right\vert_{[$a1]}^{[$b1]} = \frac{[$p]}{[$pow1p1]}([$b1])^{[$pow1p1]} + \frac{[$q]}{2}([$b1])^2 - \frac{[$p]}{[$pow1p1]}([$a1])^{[$pow1p1]} - \frac{[$q]}{2}([$a1])^2 = [$ans1]``] + ++ [``\int_{[$a2]}^{[$b2]} [$f2] \, dx = \left. [$f2_int] \right\vert_{[$a2]}^{[$b2]} = \frac{[$r]}{[$pow2p1]}([$b2])^{[$pow2p1]}+ \frac{[$s]}{3}([$b2])^3 + [$t]([$b2]) - \frac{[$r]}{[$pow2p1]}([$a2])^{[$pow2p1]} - \frac{[$s]}{3}([$a2])^3 - [$t]([$a2]) = [$ans2]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-1-Ap-C-poly-definite-jms-2.pg b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-1-Ap-C-poly-definite-jms-2.pg new file mode 100644 index 0000000000..ce7e0c0137 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-1-Ap-C-poly-definite-jms-2.pg @@ -0,0 +1,69 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(15 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a1 = random(0,1,1); +$b1 = $a1 + random(1,4,1); +$pow1 = random(2,3,1); +$pow1p1 = $pow1+1; +$p = random(2,5,1)*random(-1,1,2); +$q = non_zero_random(-6,6,1); +$f1 = Formula("$p*x^($pow1) + $q")->reduce(); +$ans1 = Compute("($p/$pow1p1)*(($b1)**$pow1p1)+$q*($b1) - ($p/$pow1p1)*(($a1)**$pow1p1) -$q*($a1)"); + +$a2 = random(-1,1,1); +$b2 = $a2 + random(2,5,1); +$pow2 = random(3,4,1); +$pow2p1 = $pow2+1; +$r = random(2,5,1)*random(-1,1,2); +$s = non_zero_random(-5,5,1); +$f2 = Formula("$r*x^($pow2) + $s*x^2")->reduce(); +$ans2 = Compute("($r/$pow2p1)*(($b2)**$pow2p1)+($s/3)*(($b2)**3) - ($r/$pow2p1)*(($a2)**$pow2p1) - ($s/3)*(($a2)**3)"); + +BEGIN_PGML +Evaluate the following definite integrals. + ++ [``\int_{[$a1]}^{[$b1]} [$f1] \, dx = \, ``] [_]{$ans1}{10} + ++ [``\int_{[$a2]}^{[$b2]} [$f2] \, dx = \, ``] [_]{$ans2}{10} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +$f1_int = Formula("($p)*(x**$pow1p1)/$pow1p1+$q*(x)")->reduce(); +$f2_int = Formula("($r)*(x**$pow2p1)/$pow2p1+($s)*(x**3)/3")->reduce(); + +BEGIN_PGML_SOLUTION +We will use the Fundamental Theorem of Calculus. + ++ [``\int_{[$a1]}^{[$b1]} [$f1] \, dx = \left. [$f1_int] \right\vert_{[$a1]}^{[$b1]} = \frac{[$p]}{[$pow1p1]}([$b1])^{[$pow1p1]} + [$q]([$b1]) - \frac{[$p]}{[$pow1p1]}([$a1])^{[$pow1p1]} - [$q]([$a1]) = [$ans1]``] + ++ [``\int_{[$a2]}^{[$b2]} [$f2] \, dx = \left. [$f2_int] \right\vert_{[$a2]}^{[$b2]} = \frac{[$r]}{[$pow2p1]}([$b2])^{[$pow2p1]}+ \frac{[$s]}{3}([$b2])^3 - \frac{[$r]}{[$pow2p1]}([$a2])^{[$pow2p1]} - \frac{[$s]}{3}([$a2])^3 = [$ans2]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-2-Ap-C-exp-definite-jms-1.pg b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-2-Ap-C-exp-definite-jms-1.pg new file mode 100644 index 0000000000..a5f6b06335 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-2-Ap-C-exp-definite-jms-1.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(15 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a1 = random(-3,1,1); +$b1 = $a1 + random(1,4,1); +$p = random(2,5,1)*random(-1,1,2); +$q = non_zero_random(-9,9,1); +$f1 = Formula("$p*e^x + $q")->reduce(); +$ans1 = Compute("($p)*(e**($b1))+$q*($b1) - ($p)*(e**($a1)) - $q*($a1)"); + +$a2 = random(-3,2,1); +$b2 = $a2 + random(1,4,1); +$r = random(2,5,1)*random(-1,1,2); +$s = non_zero_random(2,5,1); +$f2 = Formula("$r*e^x + $s*e^(-x)")->reduce(); +$ans2 = Compute("$r*(e**($b2)) - $s*(e**(-$b2)) - $r*(e**($a2)) + $s*(e**(-$a2))"); + +BEGIN_PGML +Evaluate the following definite integrals. + ++ [``\int_{[$a1]}^{[$b1]} [$f1] \, dx = \, ``] [_]{$ans1}{10} + ++ [``\int_{[$a2]}^{[$b2]} [$f2] \, dx = \, ``] [_]{$ans2}{10} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +$f1_int = Formula("$p*e^x + $q*x")->reduce(); +$f2_int = Formula("$r*e^x - $s*e^(-x)")->reduce(); + +BEGIN_PGML_SOLUTION +We will use the Fundamental Theorem of Calculus. + ++ [`` \left. \int_{[$a1]}^{[$b1]} [$f1] \, dx = [$f1_int] \right\vert_{[$a1]}^{[$b1]} = [$p]e^{[$b1]} + [$q]([$b1]) - [$p]e^{[$a1]} - [$q]([$a1]) \approx [$ans1]``] + ++ [``\left. \int_{[$a2]}^{[$b2]} [$f2] \, dx = [$f2_int] \right\vert_{[$a2]}^{[$b2]} = [$r]e^{[$b2]} - [$s]e^{-[$b2]} - [$r]e^{[$a2]} + [$s]e^{-[$a2]} \approx [$ans2]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-2-Ap-C-exp-ln-definite-jms-2.pg b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-2-Ap-C-exp-ln-definite-jms-2.pg new file mode 100644 index 0000000000..d620f384fc --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-2-Ap-C-exp-ln-definite-jms-2.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(15 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a1 = random(1,2,1); +$b1 = $a1 + random(1,3,1); +$p = random(2,5,1)*random(-1,1,2); +$q = non_zero_random(-9,9,1); +$f1 = Formula("$p*e^x + $q/x")->reduce(); +$ans1 = Compute("($p)*(e**($b1))+$q*ln($b1) - ($p)*(e**($a1)) - $q*ln($a1)"); + +$a2 = random(-4,-3,1); +$b2 = $a2 + random(1,2,1); +$r = random(2,5,1)*random(-1,1,2); +$s = non_zero_random(2,5,1); +$f2 = Formula("$r*e^x + $s/x")->reduce(); +$ans2 = Compute("$r*(e**($b2)) + $s*ln(abs($b2)) - $r*(e**($a2)) - $s*ln(abs($a2))"); + +BEGIN_PGML +Evaluate the following definite integrals. + ++ [``\int_{[$a1]}^{[$b1]} [$f1] \, dx = \, ``] [_]{$ans1}{10} + ++ [``\int_{[$a2]}^{[$b2]} [$f2] \, dx = \, ``] [_]{$ans2}{10} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +$f1_int = Formula("$p*e^x + $q*ln(abs(x))")->reduce(); +$f2_int = Formula("$r*e^x + $s*ln(abs(x))")->reduce(); + +BEGIN_PGML_SOLUTION +We will use the Fundamental Theorem of Calculus. + ++ [`` \left. \int_{[$a1]}^{[$b1]} [$f1] \, dx = [$f1_int] \right\vert_{[$a1]}^{[$b1]} = [$p]e^{[$b1]} + [$q]\ln([$b1]) - [$p]e^{[$a1]} - [$q]\ln([$a1]) \approx [$ans1]``] + ++ [``\left. \int_{[$a2]}^{[$b2]} [$f2] \, dx = [$f2_int] \right\vert_{[$a2]}^{[$b2]} = [$r]e^{[$b2]} + [$s]\ln|[$b2]| - [$r]e^{[$a2]} - [$s]\ln|[$a2]| \approx [$ans2]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-3-Ap-C-trig-definite-jms-1.pg b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-3-Ap-C-trig-definite-jms-1.pg new file mode 100644 index 0000000000..2c0a4fca9e --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-3-Ap-C-trig-definite-jms-1.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(15 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a1 = list_random('2', '3', '4', '6'); +$b1 = list_random('2', '3', '4', '6'); +$p = random(2,5,1)*random(-1,1,2); +$q = non_zero_random(-9,9,1); +$f1 = Formula("$p*cos(x) + $q")->reduce(); +$ans1 = Compute("($p)*sin(pi/$b1)+$q*(pi/$b1) - ($p)*sin(-pi/$a1) - $q*(-pi/$a1)"); + +$b2 = list_random('2', '3', '4', '6'); +$r = non_zero_random(2,5,1); +$s = non_zero_random(2,5,1); +$f2 = Formula("$r*sin(x) + $s*cos(x)")->reduce(); +$ans2 = Compute("-$r*cos(pi/$b2) + $s*sin(pi/$b2) + $r*cos(0) - $s*sin(0)"); + +BEGIN_PGML +Evaluate the following definite integrals. + ++ [``\int_{-\pi/[$a1]}^{\pi/[$b1]} [$f1] \, dx = \, ``] [_]{$ans1}{10} + ++ [``\int_{0}^{\pi/[$b2]} [$f2] \, dx = \, ``] [_]{$ans2}{10} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +$f1_int = Formula("$p*sin(x) + $q*x")->reduce(); +$f2_int = Formula("-$r*cos(x) + $s*sin(x)")->reduce(); + +BEGIN_PGML_SOLUTION +We will use the Fundamental Theorem of Calculus. + ++ [``\left. \int_{-\pi/[$a1]}^{\pi/[$b1]} [$f1] \, dx = [$f1_int] \right\vert_{-\pi/[$a1]}^{\pi/[$b1]} = [$p]\sin(\pi/[$b1]) + [$q](\pi/[$b1]) - \sin(-\pi/[$a1]) - [$q](-\pi/[$a1]) \approx [$ans1]``] + ++ [``\left. \int_{0}^{[$b2]} [$f2] \, dx = [$f2_int] \right \vert_{0}^{\pi/[$b2]} = -[$r]\cos(\pi/[$b2]) + [$s]\sin(\pi/[$b2]) + [$r]\cos(0) - [$s]\sin(0) \approx [$ans2]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-3-Ap-C-trig-definite-jms-2.pg b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-3-Ap-C-trig-definite-jms-2.pg new file mode 100644 index 0000000000..fd2a0b8c9c --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-1-0-Ap-C/13-1-3-Ap-C-trig-definite-jms-2.pg @@ -0,0 +1,62 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(15 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a1 = list_random('2', '3', '4', '6'); +$b1 = $a1; +$p = random(2,5,1)*random(-1,1,2); +$f1 = Formula("$p*cos(x)")->reduce(); +$ans1 = Compute("($p)*sin(pi/$b1) - ($p)*sin(-pi/$a1)"); + +$b2 = list_random('2', '3', '4', '6'); +$r = non_zero_random(2,5,1); +$f2 = Formula("$r*sin(x)")->reduce(); +$ans2 = Compute("-$r*cos(pi/$b2) + $r*cos(0)"); + +BEGIN_PGML +Evaluate the following definite integrals. + ++ [``\int_{-\pi/[$a1]}^{\pi/[$b1]} [$f1] \, dx = \, ``] [_]{$ans1}{10} + ++ [``\int_{0}^{\pi/[$b2]} [$f2] \, dx = \, ``] [_]{$ans2}{10} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +$f1_int = Formula("$p*sin(x)")->reduce(); +$f2_int = Formula("-$r*cos(x)")->reduce(); + +BEGIN_PGML_SOLUTION +We will use the Fundamental Theorem of Calculus. + ++ [``\left. \int_{-\pi/[$a1]}^{\pi/[$b1]} [$f1] \, dx = [$f1_int] \right\vert_{-\pi/[$a1]}^{\pi/[$b1]} = [$p]\sin(\pi/[$b1]) - \sin(-\pi/[$a1]) \approx [$ans1]``] + ++ [``\left. \int_{0}^{[$b2]} [$f2] \, dx = [$f2_int] \right \vert_{0}^{\pi/[$b2]} = -[$r]\cos(\pi/[$b2]) + [$r]\cos(0) \approx [$ans2]``] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-1-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-1-jms.pg new file mode 100644 index 0000000000..e9ab4f4da4 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-1-jms.pg @@ -0,0 +1,72 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(16 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-3,1,1); +$c = random(2,4,1); # want to be positive to use square root +$b = $c + random(1,3,1); + +# a to c +$p = random(2,5,1)*random(-1,1,2); +$f1 = Formula("x+$p")->reduce(); +$f1_int = Formula("x^2/2 + $p*x")->reduce(); +$ans1 = Compute("(($c)**2)/2 + $p*$c - (($a)**2)/2 - $p*$a"); + +# c to b +$r = non_zero_random(2,5,1); +$twor = 2*$r; +$f2 = Formula("$r*sqrt(x)")->reduce(); +$f2_int = Formula("$twor*x*sqrt(x)/3")->reduce(); +$ans2 = Compute("$twor/3*$b*sqrt($b) - $twor/3*$c*sqrt($c)"); + +# a to b +$ans = Compute("(($c)**2)/2 + $p*$c - (($a)**2)/2 - $p*$a + $twor/3*$b*sqrt($b) - $twor/3*$c*sqrt($c)"); + +BEGIN_PGML +Let [`f`] be the piecewise defined function given by +[``` f(x) = \begin{cases} [$f1] & x < [$c] \\ & \\ [$f2] & x \geq [$c] \end{cases} ```] + +Evaluate the following definite integral. + +[`` \int_{[$a]}^{[$b]} f(x) \, dx = \, ``] [_]{$ans}{5} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +BEGIN_PGML_SOLUTION +First, we split up the integral based on the definition of [`f`] and the interval over which we are integrating +[``` \int_{[$a]}^{[$b]} f(x) \, dx = \int_{[$a]}^{[$c]} f(x) \, dx + \int_{[$c]}^{[$b]} f(x) \, dx = \int_{[$a]}^{[$c]} [$f1] \, dx + \int_{[$c]}^{[$b]} [$f2] \, dx ```] +Now we will use the Fundamental Theorem of Calculus to evaluate each of the integrals on the righthand side: +[``` \left. \int_{[$a]}^{[$c]} [$f1] \, dx = [$f1_int] \right\vert_{[$a]}^{[$c]} = \frac{[$c]^2}{2} + [$p]([$c]) -\frac{([$a])^2}{2} - [$p]([$a]) = [$ans1]```] +and +[``` \left.\left. \int_{[$c]}^{[$b]} [$f2] \, dx = [$r]\frac{x^{3/2}}{\frac{3}{2}} \right\vert_{[$c]}^{[$b]} = [$f2_int] \right\vert_{[$c]}^{[$b]} = \frac{[$twor]}{3}[$b]\sqrt{[$b]} - \frac{[$twor]}{3}[$c]\sqrt{[$c]} \approx [$ans2]```] +therefore, +[``` \int_{[$a]}^{[$b]} f(x) \, dx = \int_{[$a]}^{[$c]} f(x) \, dx + \int_{[$c]}^{[$b]} f(x) \, dx = [$ans1]+\frac{[$twor]}{3}[$b]\sqrt{[$b]} - \frac{[$twor]}{3}[$c]\sqrt{[$c]}.```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-2-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-2-jms.pg new file mode 100644 index 0000000000..ea3b10be42 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-2-jms.pg @@ -0,0 +1,76 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(16 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-3,0,1); +$c = random(1,4,1); # want to be positive to use square root +$b = $c + random(1,5,1); + +# a to c +$p = random(2,5,1)*random(-1,1,2); +$q = non_zero_random(-5,5,1); +$pow = random(1,3,1); +$powp1 = $pow+1; +$f1 = Formula("$p*x^($pow)+$q")->reduce(); +$f1_int = Formula("$p*x^($powp1)/($powp1) + $q*x")->reduce(); +$ans1 = Compute("($p*($c)**($powp1))/($powp1) + $q*$c - ($p*($a)**($powp1))/($powp1) - $q*$a"); + +# c to b +$r = non_zero_random(2,5,1); +$s = non_zero_random(-5,5,1); +$twor = 2*$r; +$f2 = Formula("$r/sqrt(x) + $s")->reduce(); +$f2_int = Formula("$twor*sqrt(x) + $s*x")->reduce(); +$ans2 = Compute("$twor*sqrt($b) + $s*$b - $twor*sqrt($c) - $s*$c"); + +# a to b +$ans = Compute("($p*($c)**($powp1))/($powp1) + $q*$c - ($p*($a)**($powp1))/($powp1) - $q*$a + $twor*sqrt($b) + $s*$b - $twor*sqrt($c) - $s*$c"); + +BEGIN_PGML +Let [`g`] be the piecewise defined function given by +[``` g(x) = \begin{cases} [$f1] & x \leq [$c] \\ & \\ \displaystyle [$f2] & x > [$c] \end{cases} ```] + +Evaluate the following definite integral. + +[`` \int_{[$a]}^{[$b]} g(x) \, dx = \, ``] [_]{$ans}{5} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +BEGIN_PGML_SOLUTION +First, we split up the integral based on the definition of [`f`] and the interval over which we are integrating +[``` \int_{[$a]}^{[$b]} g(x) \, dx = \int_{[$a]}^{[$c]} g(x) \, dx + \int_{[$c]}^{[$b]} g(x) \, dx = \int_{[$a]}^{[$c]} [$f1] \, dx + \int_{[$c]}^{[$b]} [$f2] \, dx ```] +Now we will use the Fundamental Theorem of Calculus to evaluate each of the integrals on the righthand side: +[``` \left. \int_{[$a]}^{[$c]} [$f1] \, dx = [$f1_int] \right\vert_{[$a]}^{[$c]} = [$p]\frac{([$c])^{[$powp1]}}{[$powp1]} + [$q]([$c]) -[$p]\frac{([$a])^{[$powp1]}}{[$powp1]} - [$q]([$a]) = [$ans1]```] +and +[``` \left.\int_{[$c]}^{[$b]} [$f2] \, dx = [$f2_int] \right\vert_{[$c]}^{[$b]} = [$twor]\sqrt{[$b]} + [$s]([$b]) - [$twor]\sqrt{[$c]} - [$s]([$c])\approx [$ans2]```] +therefore, +[``` \int_{[$a]}^{[$b]} g(x) \, dx = \int_{[$a]}^{[$c]} g(x) \, dx + \int_{[$c]}^{[$b]} g(x) \, dx = [$ans1]+[$twor]\sqrt{[$b]} + [$s]([$b]) - [$twor]\sqrt{[$c]} - [$s]([$c]).```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-3-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-3-jms.pg new file mode 100644 index 0000000000..4bd5d0dab7 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-3-jms.pg @@ -0,0 +1,71 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(16 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-3,0,1); +$c = list_random('4','6'); +$b = list_random('2','3'); + +# a to c +$p = random(2,5,1); +$f1 = Formula("$p*e^x")->reduce(); +$f1_int = Formula("$p*e^x")->reduce(); +$ans1 = Compute("($p)*e**(pi/$c) - ($p)*e**($a)"); + +# c to b +$r = random(2,5,1)*random(-1,1,2); +$f2 = Formula("$r*cos(x)")->reduce(); +$f2_int = Formula("$r*sin(x)")->reduce(); +$ans2 = Compute("$r*sin(pi/$b) - $r*sin(pi/$c)"); + +# a to b +$ans = Compute("($p)*e**(pi/$c) - ($p)*e**($a) + $r*sin(pi/$b) - $r*sin(pi/$c)"); + +BEGIN_PGML +Let [`g`] be the piecewise defined function given by +[``` g(x) = \begin{cases} [$f1] & \displaystyle x \leq \frac{\pi}{[$c]} \\ & \\ [$f2] & \displaystyle x > \frac{\pi}{[$c]} \end{cases} ```] + +Evaluate the following definite integral. + +[`` \int_{[$a]}^{\pi/[$b]} g(x) \, dx = \, ``] [_]{$ans}{5} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +BEGIN_PGML_SOLUTION +First, we split up the integral based on the definition of [`f`] and the interval over which we are integrating +[``` \int_{[$a]}^{\pi/[$b]} g(x) \, dx = \int_{[$a]}^{\pi/[$c]} g(x) \, dx + \int_{\pi/[$c]}^{\pi/[$b]} g(x) \, dx = \int_{[$a]}^{\pi/[$c]} [$f1] \, dx + \int_{\pi/[$c]}^{\pi/[$b]} [$f2] \, dx ```] +Now we will use the Fundamental Theorem of Calculus to evaluate each of the integrals on the righthand side: +[``` \left. \int_{[$a]}^{\pi/[$c]} [$f1] \, dx = [$f1_int] \right\vert_{[$a]}^{\pi/[$c]} = [$p]e^{\pi/[$c]} - [$p]e^{[$a]} ```] +and +[``` \left.\int_{\pi/[$c]}^{\pi/[$b]} [$f2] \, dx = [$f2_int] \right\vert_{\pi/[$c]}^{\pi/[$b]} = [$r]\sin(\pi/[$b]) - [$r]\sin(\pi/[$c])```] +therefore, +[``` \int_{[$a]}^{\pi/[$b]} g(x) \, dx = \int_{[$a]}^{\pi/[$c]} g(x) \, dx + \int_{\pi/[$c]}^{\pi/[$b]} g(x) \, dx = [$p]e^{\pi/[$c]} - [$p]e^{[$a]} + [$r]\sin(\pi/[$b]) - [$r]\sin(\pi/[$c]).```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-4-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-4-jms.pg new file mode 100644 index 0000000000..49dac0e24e --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-1-4-Ap-C/13-1-4-Ap-C-pw-def-int-4-jms.pg @@ -0,0 +1,71 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(16 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(-3,0,1); +$c = list_random('4','6'); +$b = list_random('2','3'); + +# a to c +$p = random(2,5,1); +$f1 = Formula("$p*e^(-x)")->reduce(); +$f1_int = Formula("-$p*e^(-x)")->reduce(); +$ans1 = Compute("(-$p)*e**(-pi/$c) - (-$p)*e**(-$a)"); + +# c to b +$r = random(2,5,1); +$f2 = Formula("$r*sin(x)")->reduce(); +$f2_int = Formula("-$r*cos(x)")->reduce(); +$ans2 = Compute("-$r*cos(pi/$b) + $r*cos(pi/$c)"); + +# a to b +$ans = Compute("(-$p)*e**(-pi/$c) - (-$p)*e**(-$a) -$r*cos(pi/$b) + $r*cos(pi/$c)"); + +BEGIN_PGML +Let [`f`] be the piecewise defined function given by +[``` f(x) = \begin{cases} [$f1] & \displaystyle x < \frac{\pi}{[$c]} \\ & \\ [$f2] & \displaystyle x \geq \frac{\pi}{[$c]} \end{cases} ```] + +Evaluate the following definite integral. + +[`` \int_{[$a]}^{\pi/[$b]} f(x) \, dx = \, ``] [_]{$ans}{5} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +BEGIN_PGML_SOLUTION +First, we split up the integral based on the definition of [`f`] and the interval over which we are integrating +[``` \int_{[$a]}^{\pi/[$b]} f(x) \, dx = \int_{[$a]}^{\pi/[$c]} f(x) \, dx + \int_{\pi/[$c]}^{\pi/[$b]} f(x) \, dx = \int_{[$a]}^{\pi/[$c]} [$f1] \, dx + \int_{\pi/[$c]}^{\pi/[$b]} [$f2] \, dx ```] +Now we will use the Fundamental Theorem of Calculus to evaluate each of the integrals on the righthand side: +[``` \left. \int_{[$a]}^{\pi/[$c]} [$f1] \, dx = [$f1_int] \right\vert_{[$a]}^{\pi/[$c]} = -[$p]e^{-\pi/[$c]} +[$p]e^{-[$a]} ```] +and +[``` \left.\int_{\pi/[$c]}^{\pi/[$b]} [$f2] \, dx = [$f2_int] \right\vert_{\pi/[$c]}^{\pi/[$b]} = -[$r]\cos(\pi/[$b]) + [$r]\cos(\pi/[$c])```] +therefore, +[``` \int_{[$a]}^{\pi/[$b]} f(x) \, dx = \int_{[$a]}^{\pi/[$c]} f(x) \, dx + \int_{\pi/[$c]}^{\pi/[$b]} f(x) \, dx = -[$p]e^{-\pi/[$c]} + [$p]e^{-[$a]} - [$r]\cos(\pi/[$b]) + [$r]\cos(\pi/[$c]).```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-1.pg b/Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-1.pg new file mode 100644 index 0000000000..1b9279219f --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-1.pg @@ -0,0 +1,63 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(16 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a1 = random(0,3,1); #positive for sqrt +$b1 = $a1 + random(2,6,1); +$p = random(2,5,1)*random(-1,1,2); +$twop = 2*$p; +$f1 = Formula("$p*e^(sqrt(x))/sqrt(x)")->reduce(); +$ans1 = Compute("$twop*(e**(sqrt($b1))) - $twop(e**(sqrt($a1)))"); + +$a2 = 1; +$b2 = $a2 + random(1,6,1); +$r = random(1,4,1); +$s = random(2,6,1); +$threes = 3*$s; +$f2 = Formula("(ln(x)+$r)^2/($s*x)")->reduce(); +$ans2 = Compute("(ln($b2)+$r)^3/($threes) - (ln($a2)+$r)^3/($threes)"); + +BEGIN_PGML +Evaluate the following definite integrals. + ++ [``\int_{[$a1]}^{[$b1]} [$f1] \, dx = \, ``] [_]{$ans1}{10} + ++ [``\int_{[$a2]}^{[$b2]} [$f2] \, dx = \, ``] [_]{$ans2}{10} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +BEGIN_PGML_SOLUTION +We will use Substitution and the Fundamental Theorem of Calculus. + ++ In the first integral, we will take [`u = \sqrt{x}`] so [``du = \frac{1}{2\sqrt{x}}\, dx ``] or [``2du = \frac{1}{\sqrt{x}}\, dx.``] Then making sure that we also adjust the limits of integration when making the substitution, we have [```\left. \int_{[$a1]}^{[$b1]} [$f1] \, dx = \int_{\sqrt{[$a1]}}^{\sqrt{[$b1]}} [$twop]e^{u}\, du = [$twop]e^{u} \right\vert_{\sqrt{[$a1]}}^{\sqrt{[$b1]}} = [$twop]e^{\sqrt{[$b1]}} - [$twop]e^{\sqrt{[$a1]}} \approx [$ans1]```] + ++ In the second integral, we will use the substitution [`u = \ln(x)+[$r]`] so [``du = \frac{1}{x}\, dx``], and again taking care to adjust the limits of integration when making a substitution, we get [```\left. \int_{[$a2]}^{[$b2]} [$f2] \, dx = \int_{\ln([$a2])+[$r]}^{\ln([$b2])+[$r]} \frac{u^2}{[$s]} \, du = \frac{u^3}{3} \right\vert_{[$r]}^{\ln([$b2])+[$r]} = \frac{(\ln([$b2])+[$r])^3}{[$threes]} - \frac{[$r]^3}{[$threes]} \approx [$ans2]```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-2.pg b/Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-2.pg new file mode 100644 index 0000000000..3b079cf42f --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-2.pg @@ -0,0 +1,64 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(16 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a1 = random(-3,2,1); +$b1 = $a1 + random(2,6,1); +$p = random(2,5,1)*random(-1,1,2); +$q = random(2,7,1); +$aa1q = ($a1)**2+$q; +$bb1q = ($b1)**2+$q; +$f1 = Formula("$p*x*cos(x^2+$q)")->reduce(); +$ans1 = Compute("$p*sin($bb1q)/2 - $p*sin($aa1q)/2"); + +$a2 = 0; +$b2 = list_random('2','3','4','6'); +$r = random(2,8,1)*random(-1,1,2); +$f2 = Formula("$r*cos(x)*sqrt(sin(x))")->reduce(); +$twor = $r*2; +$ans2 = Compute("$twor*((sin(pi/$b2))**(3/2))/3-$twor*((sin(0))**(3/2))/3"); + +BEGIN_PGML +Evaluate the following definite integrals. + ++ [``\int_{[$a1]}^{[$b1]} [$f1] \, dx = \, ``] [_]{$ans1}{10} + ++ [``\int_{[$a2]}^{\pi/[$b2]} [$f2] \, dx = \, ``] [_]{$ans2}{10} + +Make sure that you give the exact value of your answer (do not "round off"). +END_PGML + +BEGIN_PGML_SOLUTION +We will use Substitution and the Fundamental Theorem of Calculus. + ++ In the first integral, we will take [`u = x^2+[$q]`] so [``du = 2x\, dx ``] or [``\frac{du}{2} = x\, dx.``] Then making sure that we also adjust the limits of integration when making the substitution, we have [```\left. \int_{[$a1]}^{[$b1]} [$f1] \, dx = \int_{([$a1])^2+[$q]}^{([$b1])^2+[$q]} \frac{[$p]}{2}\cos(u)\, du = \frac{[$p]}{2} \sin(u) \right\vert_{[$aa1q]}^{[$bb1q]} = \frac{[$p]}{2} \sin([$bb1q]) - \frac{[$p]}{2} \sin([$aa1q]) \approx [$ans1]```] + ++ In the second integral, we will use the substitution [`u = \sin(x)`] so [``du = \cos(x)\, dx``], and again taking care to adjust the limits of integration when making a substitution, we get [```\left. \int_{[$a2]}^{\pi/[$b2]} [$f2] \, dx = \int_{\sin(0)}^{\sin(\pi/[$b2])} [$r]\sqrt{u} \, du = \frac{[$twor]}{3} u^{3/2} \right\vert_{0}^{\sin(\pi/[$b2])} = \frac{[$twor]}{3}(\sin(\pi/[$b2]))^{3/2} - \frac{[$twor]}{3}(0)^{3/2} = \frac{[$twor]}{3}(\sin(\pi/[$b2]))^{3/2} \approx [$ans2]```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-3-abstract.pg b/Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-3-abstract.pg new file mode 100644 index 0000000000..1ce33fbd86 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-2-1-Ap-C/13-2-1-Ap-C-definite-sub-jms-3-abstract.pg @@ -0,0 +1,52 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +$a = random(3,7,1); +$c = random(6,18,2); + +$b = Compute("($a)**2"); +$d = Compute("$c-2"); + +$ans = Compute("2*$c"); + +BEGIN_PGML +Let [`f`] be a continuous function. + +Suppose that [``\int_1^{[$a]} xf(x)\,dx =[$c]``] and [``\displaystyle \int_{[$a]}^{[$b]}\!\! f(x)\,dx =[$d]``]. + +Then the integral [``\int_1^{[$b]} f(\sqrt{t})\,dt``] is equal to [_]{$ans}{5}. +END_PGML + +BEGIN_PGML_SOLUTION +We will use the substitution [`u = \sqrt{t}`] so [``du = \frac{1}{2\sqrt{t}} \, dt.``] Notice that we can rearrange this to have [``dt = 2\sqrt{t}\, du = 2 u \, du.``] +Now it follows that +[```\int_1^{[$b]} f(\sqrt{t}) = \int_{\sqrt{1}}^{\sqrt{[$b]}} 2u f(u) \,du = 2 \int_{1}^{[$a]} u f(u) \,du = 2([$c]) = [$ans].```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-1-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-1-jms.pg new file mode 100644 index 0000000000..21abf24578 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-1-jms.pg @@ -0,0 +1,51 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Techniques of integration) +## DBsection(Substitution (without trigonometric functions)) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 6, 1); +$b = non_zero_random(-5,5,1); + +$p = random(1,4,1); +$q = $p + random(2,4,1); + +$c = $a*$p+$b; +$d = $a*$q+$b; + +$radio1 = RadioButtons( + [ [ "\(\displaystyle \int_{$c}^{$d} \frac{f(u)}{$a} \,du\)", "\(\displaystyle \int_{$p}^{$q} \frac{f(u)}{$a} \,du\)", "\(\displaystyle \int_{$c}^{$d} f(u) \,du\)", "\(\displaystyle \int_{$p}^{$q} f(u) \,du\)", "\(\displaystyle \int_{$c}^{$d} $a f(u) \,du\)", "\(\displaystyle \int_{$p}^{$q} $a f(u) \,du\)"]], + "\(\displaystyle \int_{$c}^{$d} \frac{f(u)}{$a} \,du\)" # correct answer +); + +BEGIN_PGML +Let [`f`] be a continuous function. + +After making the substitution [`u = [$a]x+[$b]`] the integral +[``` \int_{[$p]}^{[$q]} f([$a]x+[$b])\,dx ```] +becomes which of the following? +[_]{$radio1} +END_PGML + +BEGIN_PGML_SOLUTION +With [`u = [$a]x+[$b]`], we have [`du = [$a] \, dx`] so [``\frac{1}{[$a]} du = dx.``] +Therefore, making sure to adjust the limits of integration by using the substitution, we have +[``` \int_{[$p]}^{[$q]} f([$a]x+[$b])\,dx = \int_{[$a]([$p])+[$b]}^{[$a]([$q])+[$b]} \frac{f(u)}{[$a]} \,du = \int_{[$c]}^{[$d]} \frac{f(u)}{[$a]} \,du ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-2-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-2-jms.pg new file mode 100644 index 0000000000..8be0da6e32 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-2-jms.pg @@ -0,0 +1,51 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Techniques of integration) +## DBsection(Substitution (without trigonometric functions)) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 6, 1); +$twoa = $a*2; + +$p = random(0,2,1); +$q = $p + random(1,3,1); + +$c = $a*($p**2); +$d = $a*($q**2); + +$radio1 = RadioButtons( + [ [ "\(\displaystyle \int_{$c}^{$d} \frac{f(u)}{$twoa} \,du\)", "\(\displaystyle \int_{$p}^{$q} \frac{f(u)}{$twoa} \,du\)", "\(\displaystyle \int_{$c}^{$d} u f(u) \,du\)", "\(\displaystyle \int_{$p}^{$q} f(u) \,du\)", "\(\displaystyle \int_{$c}^{$d} \frac{f(u)}{$a} \,du\)", "\(\displaystyle \int_{$p}^{$q} $twoa f(u) \,du\)"]], + "\(\displaystyle \int_{$c}^{$d} \frac{f(u)}{$twoa} \,du\)" # correct answer +); + +BEGIN_PGML +Let [`f`] be a continuous function. + +After making the substitution [`u = [$a]x^2`] the integral +[``` \int_{[$p]}^{[$q]} xf([$a]x^2)\,dx ```] +becomes which of the following? +[_]{$radio1} +END_PGML + +BEGIN_PGML_SOLUTION +With [`u = [$a]x^2`], we have [`du = [$a](2x) = [$twoa] x \, dx`] so [``\frac{1}{[$twoa]} du = x dx.``] +Therefore, making sure to adjust the limits of integration by using the substitution, we have +[``` \int_{[$p]}^{[$q]} xf([$a]x^2)\,dx = \int_{[$a]([$p])^2}^{[$a]([$q])^2} \frac{f(u)}{[$twoa]} \,du = \int_{[$c]}^{[$d]} \frac{f(u)}{[$twoa]} \,du ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-3-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-3-jms.pg new file mode 100644 index 0000000000..7789fb6fd0 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-3-jms.pg @@ -0,0 +1,54 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Techniques of integration) +## DBsection(Substitution (with trigonometric functions)) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 6, 1); +$b = random(1, 6, 1); + +$q = list_random('2','3','4','6'); + +if($q eq '2') +{$d = 1;} +elsif($q eq '3') +{$d = '\sqrt{3}/2';} +elsif($q eq '4') +{$d = '\sqrt{2}/2';} +elsif($q eq '6') +{$d = '1/2';} + +$radio1 = RadioButtons( + [ [ "\(\displaystyle\int_{0}^{$d} $a \sqrt{u^2 + $b} \,du\)", "\(\displaystyle\int_{0}^{\pi/$q} $a \sqrt{u^2 + $b} \,du\)", "\(\displaystyle\int_{0}^{\pi/$q} $a \cos(x) \sqrt{u^2 + $b} \,du\)", "\(\displaystyle\int_{0}^{$d} -$a \sqrt{u + $b} \,du\)", "\(\displaystyle\int_{0}^{$d} $a \sqrt{u} \,du\)"]], + "\(\displaystyle\int_{0}^{$d} $a \sqrt{u^2 + $b} \,du\)" # correct answer +); + +BEGIN_PGML +After making the substitution [`u = \sin(x)`] the integral +[``` \int_{0}^{\pi/[$q]} [$a]\cos(x)\sqrt{\sin^2(x)+[$b]}\,dx ```] +becomes which of the following? +[_]{$radio1} +END_PGML + +BEGIN_PGML_SOLUTION +With [`u = \sin(x)`], we have [`du = \cos(x) \, dx.`] +Therefore, making sure to adjust the limits of integration by using the substitution, we have +[``` \int_{0}^{[$q]} [$a]\cos(x)\sqrt{\sin^2(x)+[$b]} \,dx = \int_{\sin(0)}^{\sin(\pi/[$q])} [$a] \sqrt{u^2 + [$b]} \,du = \int_{0}^{[$d]} [$a] \sqrt{u^2 + [$b]} \,du ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-4-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-4-jms.pg new file mode 100644 index 0000000000..d5f6c1bf84 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-2-2-U-C/13-2-2-U-C-def-sub-mc-4-jms.pg @@ -0,0 +1,54 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Techniques of integration) +## DBsection(Substitution (without trigonometric functions)) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(2) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "parserRadioButtons.pl", "PGcourse.pl",); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2, 6, 1); +$b = random(1, 3, 1); +$bp1 = $b + 1; + +$q = random(2,5,1); +$bpq = $b + $q; +$d = "\ln($q)+$b"; + + +$radio1 = RadioButtons( + [ [ "\(\displaystyle\int_{$b}^{$d} $a \sqrt{u} \,du\)", + "\(\displaystyle\int_{1}^{$q} $a \sqrt{u} \,du\)", + "\(\displaystyle\int_{\ln($bp1)}^{\ln($bpq)} $a \sqrt{u} \,du\)", + "\(\displaystyle\int_{$b}^{$d} $a \sqrt{u+$b} \,du\)", + "\(\displaystyle\int_{1}^{$q} $a \sqrt{u+$b} \,du\)"]], + "\(\displaystyle\int_{$b}^{$d} $a \sqrt{u} \,du\)" # correct answer +); + +BEGIN_PGML +After making the substitution [`u = \ln(x)+[$b]`] the integral +[``` \int_{1}^{[$q]} \frac{[$a]\sqrt{\ln(x)+[$b]}}{x} \,dx ```] +becomes which of the following? +[_]{$radio1} +END_PGML + +BEGIN_PGML_SOLUTION +With [`u = \ln(x)+[$b]`], we have [``du = \frac{1}{x} \, dx.``] + +Therefore, making sure to adjust the limits of integration by using the substitution and noticing that [`\ln(1) = 0`], we have +[``` \int_{1}^{[$q]} \frac{[$a]\sqrt{\ln(x)+[$b]}}{x}\,dx = \int_{\ln(1)+[$b]}^{\ln([$q])+[$b]} [$a] \sqrt{u} \,du = \int_{[$b]}^{[$d]} [$a] \sqrt{u} \,du ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-3-1-Ap-I/13-3-1-Ap-I-der-int-jms-1.pg b/Contrib/UCalgary/249-13-0-0-C/13-3-1-Ap-I/13-3-1-Ap-I-der-int-jms-1.pg new file mode 100644 index 0000000000..8ad3a00be2 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-3-1-Ap-I/13-3-1-Ap-I-der-int-jms-1.pg @@ -0,0 +1,67 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(16 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +Context()->variables->add(t=>"Real"); + +$a = random(1,6,1); +$pow = random(2,5,1); +$b = random(2,5,1)*random(-1,1,2); +$c = random(2,6,1); + +$ft = Formula("$b*t^($pow) + $c*ln(t)")->reduce(); +$fx = Compute("$b*x^($pow) + $c*ln(x)"); +$fx_print = Formula("$b*x^($pow) + $c*ln(x)")->reduce(); + +$gx = Compute("$c*sin($b*sqrt(x)) + $pow*e^(x)"); +$gx_print = Formula("$c*sin($b*sqrt(x)) + $pow*e^(x)")->reduce(); + + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Evaluate the following derivatives. + ++ [`` \frac{d}{dx} \int_{[$a]}^{x} [$ft]\, dt = \, ``] [_]{$fx}{20} + ++ [`` \frac{d}{dx} \int [$gx_print]\, dx = \, ``] [_]{$gx}{20} + +END_PGML + +BEGIN_PGML_SOLUTION +By the Fundamental Theorem of Calculus we have +[``` \frac{d}{dx} \int_{[$a]}^{x} [$ft]\, dt = [$fx_print].```] + +By the definition of the Indefinite Integral ("General Antiderivative") we have +[``` \frac{d}{dx} \int [$gx_print]\, dx = [$gx_print]. ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-3-1-Ap-I/13-3-1-Ap-I-der-int-jms-2.pg b/Contrib/UCalgary/249-13-0-0-C/13-3-1-Ap-I/13-3-1-Ap-I-der-int-jms-2.pg new file mode 100644 index 0000000000..f53e137da5 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-3-1-Ap-I/13-3-1-Ap-I-der-int-jms-2.pg @@ -0,0 +1,67 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(16 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +Context()->variables->add(t=>"Real"); + +$a = random(1,6,1); +$pow = random(2,5,1); +$b = random(2,5,1)*random(-1,1,2); +$c = random(2,6,1); + +$ft = Formula("$c*(e^t)*sin(t)+$b*(e^(-t))*cos(t)")->reduce(); +$fx = Compute("$c*(e^x)*sin(x)+$b*(e^(-x))*cos(x)"); +$fx_print = Formula("$c*(e^x)*sin(x)+$b*(e^(-x))*cos(x)")->reduce(); + +$gx = Compute("sqrt($c*x^($pow)+$a)"); +$gx_print = Formula("sqrt($c*x^($pow)+$a)")->reduce(); + + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Evaluate the following derivatives. + ++ [`` \frac{d}{dx} \int [$gx_print]\, dx = \, ``] [_]{$gx}{20} + ++ [`` \frac{d}{dx} \int_{[$a]}^{x} [$ft]\, dt = \, ``] [_]{$fx}{20} + +END_PGML + +BEGIN_PGML_SOLUTION +By the definition of the Indefinite Integral ("General Antiderivative") we have +[``` \frac{d}{dx} \int [$gx_print]\, dx = [$gx_print]. ```] + +By the Fundamental Theorem of Calculus we have +[``` \frac{d}{dx} \int_{[$a]}^{x} [$ft]\, dt = [$fx_print].```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-3-2-Ap-I/13-3-2-Ap-I-ftc-chain-1-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-3-2-Ap-I/13-3-2-Ap-I-ftc-chain-1-jms.pg new file mode 100644 index 0000000000..ad611aac18 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-3-2-Ap-I/13-3-2-Ap-I-ftc-chain-1-jms.pg @@ -0,0 +1,76 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(16 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +Context()->variables->add(t=>"Real"); + + +$d = random(1,6,1); +$r = random(2,8,1)*random(-1,1,2); +$s = random(2,8,1)*random(-1,1,2); + +$gt = Formula("$r*ln(t)+$s*t")->reduce(); +$vx = Formula("x^2"); +$gvx = Compute("($r*ln(x^2)+$s*x^2)*(2*x)"); +$gvx_print = Formula("($r*ln(x^2)+$s*x^2)*(2*x)")->reduce(); + + +$a = random(1,6,1); +$b = random(2,9,1); + +$ft = Formula("$b*t*ln(t)")->reduce(); +$fx = Compute("$b*x*ln(x)"); +$fx_print = Formula("$b*x*ln(x)")->reduce(); +$ux = Formula("x^2+1"); +$fux = Compute("$b*(x^2+1)*ln(x^2+1)*(2*x)"); +$fux_print = Formula("$b*(x^2+1)*ln(x^2+1)*(2*x)")->reduce(); +$f_ans = Compute("$fux-$fx"); + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Evaluate the following derivatives. + ++ [`` \frac{d}{dx} \int_{[$a]}^{[$vx]}[$gt]\, dt = \, ``] [_]{$gvx}{20} + ++ [`` \frac{d}{dx} \int_{x}^{[$ux]}[$ft]\, dt = \, ``] [_]{$f_ans}{20} + +END_PGML + +BEGIN_PGML_SOLUTION +By the Fundamental Theorem of Calculus and the Chain Rule we have +[``` \frac{d}{dx} \int_{[$a]}^{[$vx]} [$gt]\, dt = [$gvx_print]. ```] + +After splitting up the integral, by the Fundamental Theorem of Calculus and the Chain Rule we have +[``` \frac{d}{dx} \int_{x}^{[$ux]} [$ft]\, dt = \frac{d}{dx} \left( \int_{1}^{[$ux]} [$ft]\, dt + \int_{x}^{1} [$ft]\, dt \right) = \frac{d}{dx} \left(\int_{1}^{[$ux]} [$ft]\, dt - \int_{1}^{x} [$ft]\, dt\right)= [$fux_print] - [$fx_print]. ```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-3-2-Ap-I/13-3-2-Ap-I-ftc-chain-2-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-3-2-Ap-I/13-3-2-Ap-I-ftc-chain-2-jms.pg new file mode 100644 index 0000000000..47346c33be --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-3-2-Ap-I/13-3-2-Ap-I-ftc-chain-2-jms.pg @@ -0,0 +1,76 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(16 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# Uncomment the following to override the default numerical +# tolerances +# Context()->flags->set(tolerance => 0.0001, tolType => 'absolute'); + +Context()->variables->add(t=>"Real"); + +$r= random(1,6,1); +$p= random(2,9,1); +$s = random(2,7,1)*random(-1,1,2); + +$gt = Formula("$p*sin(t)+$s*cos(t)")->reduce(); +$vx = Formula("e^x"); +$gvx = Compute("($p*sin(e^x)+$s*cos(e^x))*(e^x)"); +$gvx_print = Formula("($p*sin(e^x)+$s*cos(e^x))*(e^x)")->reduce(); + + +$a = random(1,6,1); +$b = random(2,5,1)*random(-1,1,2); +$c = random(2,9,1); + +$ft = Formula("$c*(t)*e^(t)")->reduce(); +$ux = Formula("sin($b*x)"); +$fuxdux = Compute("($b*cos($b*x))*($c*(sin($b*x))*e^(sin($b*x)))"); +$fux = Formula("($c*(sin($b*x))*e^(sin($b*x)))")->reduce(); +$fuxdux_print = Formula("($c*(sin($b*x))*e^(sin($b*x)))*($b*cos($b*x))")->reduce(); + +# If necessary restrict the domain of evaluation of the function to +# values where it is defined, and where the magnitude of the outputs +# doesn't get too large or too close to 0. +#$ans->{limits} = [1,3]; + +BEGIN_PGML +Evaluate the following derivatives. + ++ [`` \frac{d}{dx} \int_{[$r]}^{[$vx]} [$gt]\, dt = \, ``] [_]{$gvx}{20} + ++ [`` \frac{d}{dx} \int_{[$a]}^{[$ux]} [$ft]\, dt = \, ``] [_]{$fuxdux}{20} + +END_PGML + +BEGIN_PGML_SOLUTION + +By the Fundamental Theorem of Calculus and the Chain Rule we have +[``` \frac{d}{dx} \int_{[$r]}^{[$vx]} [$gt]\, dt = [$gvx_print].```] + +By the Fundamental Theorem of Calculus and the Chain Rule (twice!) we have +[``` \frac{d}{dx} \int_{[$a]}^{[$ux]} [$ft]\, dt = [$fux] \cdot \frac{d}{dx}([$ux]) = [$fuxdux_print].```] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-4-1-Ap-A/13-4-1-Ap-A-ftc-increase-decrease-AT.pg b/Contrib/UCalgary/249-13-0-0-C/13-4-1-Ap-A/13-4-1-Ap-A-ftc-increase-decrease-AT.pg new file mode 100644 index 0000000000..89d2775cee --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-4-1-Ap-A/13-4-1-Ap-A-ftc-increase-decrease-AT.pg @@ -0,0 +1,75 @@ +## DESCRIPTION +## Apply the FTC and earlier knowledge to determine intervals of increase/decrease of functions presented as integrals +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$i = random(0,3,1); +@a = (4,9,16,36); +$sqrt_a = sqrt($a[$i]); + +$I = Interval(-sqrt($a[$i]),sqrt($a[$i])); + +$expr1 = LayoutTable( + [ + [ + '\(F(x)\) is increasing on '.$SPACE.labeled_ans_rule("answer1",10).$SPACE, + '\(F(x)\) is decreasing on '.$SPACE.labeled_ans_rule("answer2",10).$SPACE + ] + ] +); + +$expr2 = LayoutTable( + [ + [ + '\(F(x)\) has a local maximum at \(x = \)'.$SPACE.labeled_ans_rule("answer3",10).$SPACE, + '\(F(x)\) has a local minimum at \(x = \)'.$SPACE.labeled_ans_rule("answer4",10).$SPACE + ] + ] +); + +BEGIN_PGML +Using the *Fundamental Theorem of Calculus*, find the intervals where the function +[```F(x) = \int_0^x{(t^2 - [$a[$i]])dt}```] +is increasing or decreasing. +[$expr1]* + +[@helpLink('intervals')@]* + +Also, determine the local extrema of this function. + +[$expr2]* +END_PGML + +LABELED_ANS("answer1",Compute("(-Inf,-sqrt($a[$i])) U (sqrt($a[$i]),Inf)")->cmp()); +LABELED_ANS("answer2",$I->cmp()); +LABELED_ANS("answer3",Compute(-$sqrt_a)->cmp()); +LABELED_ANS("answer4",Compute($sqrt_a)->cmp()); + +BEGIN_PGML_SOLUTION +Using the **Fundamental Theorem of Calculus**, we can say that +[```F^{\prime}(x) = x^2 - [$a[$i]],```] +and with the first order derivative we can then use the **First Derivative Test** to determine that [`x = \pm [$sqrt_a]`] are local extrema. + +We know that the function is neither increasing nor decreasing at the local extrema, so we inspect the intervals [`(-\infty,-[$sqrt_a])`], [`(-[$sqrt_a],[$sqrt_a])`], and [`([$sqrt_a],\infty)`], where we find that the function is **increasing** on the interval [`(-\infty,-[$sqrt_a]) \cup ([$sqrt_a],\infty)`] and **decreasing** on the interval [`(-[$sqrt_a],[$sqrt_a])`]. + +Finally, to find the local extrema, we can again use the **First Derivative Test** to say that [`F(x)`] has a local maximum at [`x = -[$sqrt_a]`] because this is where the function changes from increasing to decreasing, and that [`F(x)`] has a local minimum at [`x = [$sqrt_a]`] because this is where the function changes from decreasing to increasing. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-4-2-Ap-A/13-4-2-Ap-A-ftc-concavity-AT.pg b/Contrib/UCalgary/249-13-0-0-C/13-4-2-Ap-A/13-4-2-Ap-A-ftc-concavity-AT.pg new file mode 100644 index 0000000000..c2e78622a5 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-4-2-Ap-A/13-4-2-Ap-A-ftc-concavity-AT.pg @@ -0,0 +1,52 @@ +## DESCRIPTION +## Apply the FTC and earlier knowledge to determine intervals of concavity of functions presented as integrals +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(2,9,1); + +$expr = LayoutTable( + [ + [ + '\(F(x)\) is concave up on'.$SPACE.labeled_ans_rule("answer1",10).$SPACE, + '\(F(x)\) is concave down (convex) on'.$SPACE.labeled_ans_rule("answer2",10).$SPACE + ] + ] +); + +BEGIN_PGML +Using the *Fundamental Theorem of Calculus*, find the intervals where the function +[```F(x) = \int_0^x{\left(\frac{t^2}{2} - [$a]t\right)dt}```] +is concave up or concave down (convex). +[$expr]* +END_PGML + +LABELED_ANS("answer1",Compute("(-Inf,$a)")->cmp()); +LABELED_ANS("answer2",Compute("($a,Inf)")->cmp()); + +BEGIN_PGML_SOLUTION +Using the **Fundamental Theorem of Calculus**, we can say that +[```F^{\prime}(x) = \frac{x^2}{2} - [$a]x,```] +where taking another derivative gives us +[```F^{\prime\prime}(x) = x - [$a].```] +This implies that our inflection point is at [`x = [$a]`], and by testing points in both [`(-\infty,[$a])`] and [`([$a],\infty)`], we find that [`F(x)`] is concave down on [`(-\infty,[$a])`] and concave up on [`([$a],\infty)`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-4-4-Ap-A/13-4-4-Ap-A-ftc-closed-interval-method-AT.pg b/Contrib/UCalgary/249-13-0-0-C/13-4-4-Ap-A/13-4-4-Ap-A-ftc-closed-interval-method-AT.pg new file mode 100644 index 0000000000..2f8bb1a60e --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-4-4-Ap-A/13-4-4-Ap-A-ftc-closed-interval-method-AT.pg @@ -0,0 +1,136 @@ +## DESCRIPTION +## Apply the FTC and the Closed Interval Method to find global extrema of functions presented as integrals on a closed interval +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Level(3) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$crit_a = 0; +$crit_zero = 0; +$left_endpnt = 0; +$right_endpnt = 0; + +while (has_duplicates($crit_a,$crit_zero,$left_endpnt,$right_endpnt)) { +$a = random(1,4,1); +while ($a == 0) { + $a = random(1,4,1); +} +$c = random(2,4,1); +$ac = $a*$c; +$A = random(-5,0,1); +$B = random(0,5,1); +while (($A == $B) || (abs($A - $B) < 3)) { + $A = random(-5,0,1); + $B = random(0,5,1); +} + +$crit_a = F($c,$a,$a); +$crit_zero = F($c,$a,0); +$left_endpnt = F($c,$a,$A); +$right_endpnt = F($c,$a,$B); +} + +$expr = LayoutTable( + [ + [ + 'The Global minimum is '.$SPACE.labeled_ans_rule("answer1",10).$SPACE.', which occurs at \(x = \)'.$SPACE.labeled_ans_rule("answer2",10) + ], + [ + 'The Global maximum is '.$SPACE.labeled_ans_rule("answer3",10).$SPACE.', which occurs at \(x = \)'.$SPACE.labeled_ans_rule("answer4",10) + ] + ] +); + +sub F { + my ($c,$a,$x) = @_; + return (1/6)*$c*$x*$x*(2*$x - 3*$a); +} + +sub has_duplicates { + my @array = @_; + my %seen; + + foreach my $element (@array) { + if (exists $seen{$element}) { + return 1; # Duplicate found + } + $seen{$element} = 1; # Mark element as seen + } + return 0; # No duplicates found +} + +BEGIN_PGML +Using the *Fundamental Theorem of Calculus* determine the global extrema of +[```F(x) = \int_0^x{([$c]t^2 - [$ac]t)dt}```] +on the closed interval [`[[$A],[$B]]`]. +[$expr]* +END_PGML + +if (($a <= $B) && ($a >= $A)) { + if ($crit_a > $crit_zero) { + LABELED_ANS("answer1",Compute($crit_zero)->cmp()); + LABELED_ANS("answer2",Compute(0)->cmp()); + LABELED_ANS("answer3",Compute($crit_a)->cmp()); + LABELED_ANS("answer4",Compute($a)->cmp()); + } else { + LABELED_ANS("answer3",Compute($crit_zero)->cmp()); + LABELED_ANS("answer4",Compute(0)->cmp()); + LABELED_ANS("answer1",Compute($crit_a)->cmp()); + LABELED_ANS("answer2",Compute($a)->cmp()); + } +} else { + if (($crit_zero > $left_endpnt) && ($crit_zero > $right_endpnt)) { + LABELED_ANS("answer3",Compute($crit_zero)->cmp()); + LABELED_ANS("answer4",Compute(0)->cmp()); + if ($left_endpnt > $right_endpnt) { + LABELED_ANS("answer1",Compute($right_endpnt)->cmp()); + LABELED_ANS("answer2",Compute($B)->cmp()); + } else { + LABELED_ANS("answer1",Compute($left_endpnt)->cmp()); + LABELED_ANS("answer2",Compute($A)->cmp()); + } + } else{ + if ($left_endpnt > $right_endpnt) { + LABELED_ANS("answer3",Compute($left_endpnt)->cmp()); + LABELED_ANS("answer4",Compute($A)->cmp()); + if ($right_endpnt < $crit_zero) { + LABELED_ANS("answer1",Compute($right_endpnt)->cmp()); + LABELED_ANS("answer2",Compute($B)->cmp()); + } else { + LABELED_ANS("answer1",Compute($crit_zero)->cmp()); + LABELED_ANS("answer2",Compute(0)->cmp()); + } + } else { + LABELED_ANS("answer3",Compute($right_endpnt)->cmp()); + LABELED_ANS("answer4",Compute($B)->cmp()); + if ($left_endpnt < $crit_zero) { + LABELED_ANS("answer1",Compute($left_endpnt)->cmp()); + LABELED_ANS("answer2",Compute($A)->cmp()); + } else { + LABELED_ANS("answer1",Compute($crit_zero)->cmp()); + LABELED_ANS("answer2",Compute(0)->cmp()); + } + } + } +} + +BEGIN_PGML_SOLUTION + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-1G-Ap-A-int-graph-inc-dec-1-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-1G-Ap-A-int-graph-inc-dec-1-jms.pg new file mode 100644 index 0000000000..5e61862c29 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-1G-Ap-A-int-graph-inc-dec-1-jms.pg @@ -0,0 +1,159 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl", "parserPopUp.pl"); + + +#intervals +# (-10,$a), ($a,$c), ($c,$e), and ($e,10) + +$a = random(-8,-6,1); +$b = $a + random(2,4,1); +$c = $b + random(2,3,1); +$d = $c + random(2,4,1); +$e = $d + random(2,3,1); + +# funciton values + +$fm10 = random(2,6,1)*random(-1,1,2); +$fa = 0; +$fb = random(2,6,1)*random(-1,1,2); +$fc = 0; +$fd = random(2,6,1)*random(-1,1,2); +$fe = 0; +$f10 = random(2,6,1)*random(-1,1,2); + +# make pop-ups + +if($fm10 < 0) +{$m10toa_incdec = 'decreasing'; +$m10toa_posneg = '<';} +else +{$m10toa_incdec = 'increasing'; +$m10toa_posneg = '>';} + +$m10toa = DropDown( + [ + 'increasing', + 'decreasing', + 'neither increasing nor decreasing' + ], + $m10toa_incdec +); + +if($fb < 0) +{$atoc_incdec = 'decreasing'; +$atoc_posneg = '<';} +else +{$atoc_incdec = 'increasing'; +$atoc_posneg = '>';} + +$atoc = DropDown( + [ + 'increasing', + 'decreasing', + 'neither increasing nor decreasing' + ], + $atoc_incdec +); + +if($fd < 0) +{$ctoe_incdec = 'decreasing'; +$ctoe_posneg = '<';} +else +{$ctoe_incdec = 'increasing'; +$ctoe_posneg = '>';} + +$ctoe = DropDown( + [ + 'increasing', + 'decreasing', + 'neither increasing nor decreasing' + ], + $ctoe_incdec +); + +if($f10 < 0) +{$eto10_incdec = 'decreasing'; +$eto10_posneg = '<'; +} +else +{$eto10_incdec = 'increasing'; +$eto10_posneg = '>';} + +$eto10 = DropDown( + [ + 'increasing', + 'decreasing', + 'neither increasing nor decreasing' + ], + $eto10_incdec +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) --($d,$fd); +\draw[red, very thick] ($d,$fd) -- ($e,$fe); +\draw[red, very thick] ($e,$fe) -- (10,$f10); +\filldraw[red, very thick] (-10,$fm10) circle (2.5 pt); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\filldraw[red, very thick] ($b,$fb) circle (2.5 pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5 pt); +\filldraw[red, very thick] ($d,$fd) circle (2.5 pt); +\filldraw[red, very thick] ($e,$fe) circle (2.5 pt); +\filldraw[red, very thick] (10,$f10) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the continuous function [`y=f(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +Define the function [`A`] by [``A(x) = \int_{[$a]}^{x} f(t) \, dt ``] for all [`x`] in the interval [`[-10,10].`] + ++ On the interval [`(-10,[$a])`] the function [`A`] is [_]{$m10toa} + ++ On the interval [`([$a],[$c])`] the function [`A`] is [_]{$atoc} + ++ On the interval [`([$c],[$e])`] the function [`A`] is [_]{$ctoe} + ++ On the interval [`([$e],10)`] the function [`A`] is [_]{$eto10} + +END_PGML + +BEGIN_PGML_SOLUTION +By the Fundamental Theorem of Calculus [``A'(x) = \frac{d}{dx} \int_{[$a]}^{x} f(t) \, dt = f(x),``] so [`A`] is increasing where [`f(x) >0`] and [`A`] is decreasing where [`f(x) < 0`]. + ++ Note that [`f(x) [$m10toa_posneg] 0`] on the interval [`(-10,[$a])`], so the function [`A`] is [$m10toa_incdec] on this interval. + ++ Note that [`f(x) [$atoc_posneg] 0`] on the interval [`([$a],[$c])`], so the function [`A`] is [$atoc_incdec] on this interval. + ++ Note that [`f(x) [$ctoe_posneg] 0`] on the interval [`([$c],[$e])`], so the function [`A`] is [$ctoe_incdec] on this interval. + ++ Note that [`f(x) [$eto10_posneg] 0`] on the interval [`([$e],10)`], so the function [`A`] is [$eto10_incdec] on this interval. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-1G-Ap-A-int-graph-inc-dec-2-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-1G-Ap-A-int-graph-inc-dec-2-jms.pg new file mode 100644 index 0000000000..2dd4f976b7 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-1G-Ap-A-int-graph-inc-dec-2-jms.pg @@ -0,0 +1,82 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(17 April 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-4,-3,1); +$b = $a + random(3,4,1); +$c = $b + random(2,3,1); +$k = random(-1,1,2); + +Context("Interval"); + +if($k < 0) +{ +$inc = List("(-5,$a)","($b,$c)"); +$dec = List("($a,$b)","($c,5)"); +} +else +{ +$dec = List("(-5,$a)","($b,$c)"); +$inc = List("($a,$b)","($c,5)"); +} + +$critical = List("$a","$b","$c"); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-7) grid (5,7); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-5}:{5}] (\x,{$k*(\x-$a)*(\x-$b)*(\x-$c)/20}); +\draw[red] ($b,1) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph [`y=f(x)`] of the function [`f`] on the interval [`(-5,5)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +Define the function [``A(x) = \int_{-4}^x f(t)\, dt ``] for all [`x \in (-5,5).`] + +Determine the open subintervals of [`(-5,5)`] on which the function [`A`] is increasing or decreasing. + + Enter the intervals that you find as a list separated by commas, if there are no such intervals enter [|None|]*. + + [`A`] is increasing on the interval(s): [_]{$inc}{20} + + [`A`] is decreasing on the interval(s): [_]{$dec}{20} + +[@helpLink('intervals')@]* + +END_PGML + +BEGIN_PGML_SOLUTION +[`A`] is increasing on intervals where [`A'(x)>0`] and [`A`] is decreasing on intervals where [`A'(x)<0`]. + +By the Fundamental Theorem of Calculus [``A'(x) = \frac{d}{dx}\int_{-4}^x f(t)\, dt = f(x) ``] + +[`A`] is increasing on the intervals [`[$inc]`] where [`f(x) > 0`]. + +[`A`] is decreasing on the intervals [`[$dec]`] where [`f(x) < 0`]. + +[`A`] has critical points at [`x = [$critical]`] because [`f([$a])=0, f([$b])=0`] and [`f([$c])=0`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-2G-Ap-A-int-graph-concave-1-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-2G-Ap-A-int-graph-concave-1-jms.pg new file mode 100644 index 0000000000..217f99bf43 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-2G-Ap-A-int-graph-concave-1-jms.pg @@ -0,0 +1,226 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +$a = random(-8,-4,1); +$b = $a + random(2,4,1); +$c = $b + random(2,4,1); +$d = $c + random(2,4,1); + +# ensure that consecutive values of the function are different to avoid a constant first derivative +$fm10 = non_zero_random(-3,3,1); +$fa = $fm10 + non_zero_random(-3,3,1); +$fb = $fa + non_zero_random(-3,3,1); +$fc = $fb + non_zero_random(-3,3,1); +$fd = $fc + non_zero_random(-3,3,1); +$f10 = $fd + non_zero_random(-3,3,1); + +$upper = max(max($fm10, $fa, $fb, $fc, $fd, $f10) + 1,2); +$lower = min(min($fm10, $fa, $fb, $fc, $fd, $f10) - 1,-2); + +# determine behaviour on small intervals; always inc/dec/constant +if($fm10 > $fa) +{$tentoa = 'is concave downward';} +elsif($fm10 < $fa) +{$tentoa = 'is concave upward';} + +if($fa > $fb) +{$atob = 'is concave downward';} +elsif($fa < $fb) +{$atob = 'is concave upward';} + +if($fb > $fc) +{$btoc = 'is concave downward';} +elsif($fb < $fc) +{$btoc = 'is concave upward';} + +if($fc > $fd) +{$ctod = 'is concave downward';} +elsif($fc < $fd) +{$ctod = 'is concave upward';} + +if($fd > $f10) +{$dtoten = 'is concave downward';} +elsif($fd < $f10) +{$dtoten = 'is concave upward';} + +# determine behavior on some concatenated intervals sometimes "neither" bevahiour +# use eq for string comparison == does not behave correctly for this comparison +if($tentoa eq $atob) +{$tentob = $tentoa;} +else +{$tentob = 'changes concavity at a point inside the interval';} + +if($atob eq $btoc) +{$atoc = $atob;} +else +{$atoc = 'changes concavity at a point inside the interval';} + +if($btoc eq $ctod) +{$btod = $btoc;} +else +{$btod = 'changes concavity at a point inside the interval';} + +#produce popups for each of the eight intervals above +$popup_tentoa = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity on a point inside the interval' + ], + $tentoa +); + +$popup_tentob = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $tentob +); + +$popup_atob = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $atob +); + +$popup_atoc = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $atoc +); + +$popup_btoc = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $btoc +); + +$popup_ctod = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $ctod +); + +$popup_btod = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $btod +); + +$popup_dtoten = DropDown( + [ + 'is concave upward', + 'is concave downward', + 'changes concavity at a point inside the interval' + ], + $dtoten +); + +# choose random subsets of intervals, paired with popup, to ask below +# use eq for string comparison == does not behave correctly for this comparison + +# one end -10 to a or d to 10 +$I1 = list_random("(-10,$a)","($d,10)"); + +if($I1 eq "(-10,$a)") +{$popup1 = $popup_tentoa;} +else +{$popup1 = $popup_dtoten;} + +# one interior a to b, b to c, or c to d +$I2 = list_random("($a,$b)","($b,$c)", "($c,$d)"); + +if($I2 eq "($a,$b)") +{$popup2 = $popup_atob;} +elsif($I2 eq "($b,$c)") +{$popup2 = $popup_btoc;} +else +{$popup2 = $popup_ctod;} + +# one concatenated -10 to b, a to c, or b to d +$I3 = list_random("(-10,$b)","($a,$c)", "($b,$d)"); + +if($I3 eq "(-10,$b)") +{$popup3 = $popup_tentob;} +elsif($I3 eq "($a,$c)") +{$popup3 = $popup_atoc;} +else +{$popup3 = $popup_btod;} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,$lower) -- (0,$upper) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,$lower) grid (10,$upper); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {$lower,...,-1,1,...,$upper} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) -- ($d,$fd); +\draw[->,red, very thick] ($d,$fd) -- (10,$f10); +\draw[red] (10,$f10) node [above right]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Suppose that [`f`] is a differentiable function with the graph [`y=f(x)`] given below. + +[@ image($graph_image, width => 700, tex_size => 800) @]* + +Define the function [``A(x) = \int_{[$b]}^{x} f(t) \, dt ``] for all [`x`] in the interval [`[-10,10].`] + +a) On the interval [`[$I1]`] the function [`A`] [_]{$popup1} + +a) On the interval [`[$I2]`] the function [`A`] [_]{$popup2} + +a) On the interval [`[$I3]`] the function [`A`] [_]{$popup3} + +END_PGML + +BEGIN_PGML_SOLUTION +By the Fundamental Theorem of Calculus [``A'(x) = \frac{d}{dx} \int_{[$b]}^{x} f(t) \, dt = f(x),``] and therefore [`A''(x) = f'(x).`] + ++ [`A`] is concave upward on intervals where [`A''(x)=f'(x)>0`] and this is equivalent to saying that [`f`] is increasing. + ++ [`A`] is concave downward on intervals where [`A''(x)=f'(x)<0`] and this is equivalent to saying that [`f`] is decreasing. + +We can read the above information off the given graph of [`y=f(x)`]. + +Note that the concavity of [`A`] will change inside an interval if the function [`f`] changes from increasing to decreasing at a point inside that interval. +END_PGML_SOLUTION + + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-2G-Ap-A-int-graph-concave-2-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-2G-Ap-A-int-graph-concave-2-jms.pg new file mode 100644 index 0000000000..3450c04197 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-2G-Ap-A-int-graph-concave-2-jms.pg @@ -0,0 +1,102 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(17 April 2025) +## Institution(Univeristy of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); +#roots +$a = random(-3,-2,1); +$b = $a + random(3,4,1); +$ab = $a*$b; +$k = random(-1,1,2); +# fix some problematic cases for the graph overflowing the grid +if($a == -3 && $k==1) +{$c = -6;} +elsif($a == -3 && $k== -1) +{$c = 6;} +elsif($a == -2 && $k== 1) +{$c = random(-3,-2,1);} +elsif($a == -2 && $k== -1) +{$c = random(2,3,1);} +else +{$c = random(1,2,1);} + +Context("Interval"); + +if($k < 0) +{ +$upward = "($a,$b)"; +$downward = List("(-5,$a)","($b,5)"); +} +else +{ +$downward= "($a,$b)"; +$upward = List("(-5,$a)","($b,5)"); +} + +$inflection = List("$a", "$b"); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-5,0) -- (5,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-5,-7) grid (5,7); +\foreach \x in {-4,-2,2,4} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<->,red, very thick, smooth] plot[domain={-5}:{5}] (\x,{$k*((\x*\x*\x)/18 - ($a/12)*(\x*\x) - ($b/12)*(\x*\x) + ($ab/6)*\x)+$c}); +\draw[red] (5,6) node [above right]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the graph [`y=f(x)`] of the differentiable function [`f`] on the interval [`(-5,5)`]. + +[@ image($graph_image, width => 500, tex_size => 800) @]* + +Define the function [``A(x) = \int_{-4}^x f(t)\, dt ``] for all [`x \in (-5,5).`] + +Determine the open subintervals of [`(-5,5)`] on which [`A`] is concave upward or concave downward. + + Enter the intervals that you find as a list separated by commas, if there are no such values enter [|None|]*. + + [`A`] is concave upward on the interval(s): [_]{$upward}{20} + + [`A`] is concave downward on the interval(s): [_]{$downward}{20} + + [@helpLink('intervals')@]* + +b) List the [`x`]-coordinates of the inflection points of [`A`] in the interval [`(-5,5)`], if any. + + Enter the [`x`]-values that you find as a list separated by commas, if there are no such values enter [|None|]*. + + [`A`] has inflection point(s) at [`x = \,`] [_]{$inflection}{15} + +END_PGML + +BEGIN_PGML_SOLUTION +By the Fundamental Theorem of Calculus [``A'(x) = \frac{d}{dx} \int_{-4}^x h(t)\, dt = f(x)``] and so [`A''(x) = f'(x).`] + ++ [`A`] is concave upward on intervals where [`A''(x)=f'(x)>0`] and this is equivalent to saying that [`f`] is increasing. + ++ [`A`] is concave downward on intervals where [`A''(x)=f'(x)<0`] and this is equivalent to saying that [`f`] is decreasing. + +a) [`f`] is increasing on the interval(s): [`[$upward]`], so [`A`] is concave upward on the interval(s): [`[$upward]`] + + [`f`] is decreasing on the interval(s): [`[$downward]`], so [`A`] is concave downard on the interval(s): [`[$downward]`] + +b) The function [`A`] has inflection points where the function is continuous and the concavity of [`A`] changes. The function [`A`] is continuous on [`(-5,5)`] because it is a differentiable function, and the concavity of [`A`] changes at [`x = [$inflection]`] so [`A`] has inflection points at [`x = [$inflection]`]. + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-3G-Ap-A-loc-ext-int-graph-1-jms.pg b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-3G-Ap-A-loc-ext-int-graph-1-jms.pg new file mode 100644 index 0000000000..2cc5fcbd75 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-3G-Ap-A-loc-ext-int-graph-1-jms.pg @@ -0,0 +1,146 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl","parserPopUp.pl"); + +#intervals +# (-10,$a), ($a,$c), ($c,$e), and ($e,10) + +$a = random(-8,-6,1); +$b = $a + random(2,3,1); +$c = $b + random(2,4,1); +$d = $c + random(2,3,1); +$e = $d + random(2,4,1); + +#funciton values + +$fm10 = random(2,7,1)*random(-1,1,2); +$fa = 0; +$fb = random(2,7,1)*random(-1,1,2); +$fc = 0; +$fd = random(2,7,1)*random(-1,1,2); +$fe = 0; +$f10 = random(2,7,1)*random(-1,1,2); + +# determine local extrema behavour at critical points $a, $c and $e +if($fm10 > 0 & $fb < 0) +{$a_maxmin = 'a local maximum';} +elsif($fm10 < 0 & $fb > 0) +{$a_maxmin = 'a local minimum';} +else +{$a_maxmin = 'neither a local maximum nor local minimum';} + +if($fb > 0 & $fd < 0) +{$c_maxmin = 'a local maximum';} +elsif($fb < 0 & $fd > 0) +{$c_maxmin = 'a local minimum';} +else +{$c_maxmin = 'neither a local maximum nor local minimum';} + +if($fd > 0 & $fm10 < 0) +{$e_maxmin = 'a local maximum';} +elsif($fd < 0 & $fm10 > 0) +{$e_maxmin = 'a local minimum';} +else +{$e_maxmin = 'neither a local maximum nor local minimum';} + +# produce popups for local max / local min / neither +$popup_a = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum' + ], + $a_maxmin +); + +$popup_c = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum' + ], + $c_maxmin +); + +$popup_e = DropDown( + [ + 'a local maximum', + 'a local minimum', + 'neither a local maximum nor local minimum' + ], + $e_maxmin +); + +# popup for critical / singular point + +$crit = DropDown( + [ + 'critical', + 'singular' + ], + 'critical' +); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[<-,red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) .. controls ($b,$fb) .. ($c,$fc); +\draw[red, very thick] ($c,$fc) .. controls ($d,$fd) .. ($e,$fe); +\draw[->,red, very thick] ($e,$fe) -- (10,$f10); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5 pt); +\filldraw[red, very thick] ($e,$fe) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the continuous function [`y=f(x).`] + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +Define the function [``A(x) = \int_{-4}^x f(t)\, dt ``] for all [`x\in(-10,10).`] + +a) The function [`A`] has a [_]{$crit} point and [_]{$popup_a} at [`x=[$a].`] + +b) The function [`A`] has a [_]{$crit} point and [_]{$popup_c} at [`x=[$c].`] + +c) The function [`A`] has a [_]{$crit} point and [_]{$popup_e} at [`x=[$e].`] + +END_PGML + +BEGIN_PGML_SOLUTION +By the Fundamental Theorem of Calculus, [``A'(x) = \frac{d}{dx} \int_{-4}^x f(t)\, dt = f(x) ``] + ++ [``f([$a]) = 0, f([$c]) = 0 ``] and [``f([$e]) = 0``], so [`x=[$a], x=[$c]`] and [`x=[$e]`] are all **critical points** of the function [`A.`] + ++ If [`A`] is increasing on the left and decreasing on the right of a critical point [`x=c`], then [`A`] has a local maximum at [`x=c.`] + ++ If [`A`] is decreasing on the left and increasing on the right of a critical point [`x=c`], then [`A`] has a local minimum at [`x=c.`] + ++ If [`A`] is increasing (repsectively, decreasing) to the left and right of a critical point [`x=c`], then [`f`] does not have a local extrema at [`x=c.`] + ++ [`A`] is increasing on intervals where [`f(x)>0,`] and [`A`] is decreasing on intervals where [`f(x)<0.`] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-4G-Ap-A-ftc-closed-int-jms-1.pg b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-4G-Ap-A-ftc-closed-int-jms-1.pg new file mode 100644 index 0000000000..293cdc04ef --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-4G-Ap-A-ftc-closed-int-jms-1.pg @@ -0,0 +1,134 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); + +#intervals +# (-10,$a), ($a,$c), ($c,$e), and ($e,10) + +$a = random(-7,-6,1); +$b = $a + random(2,3,1); +$c = $b + random(2,4,1); +$d = $c + random(2,3,1); +$e = $d + random(2,4,1); + +# funciton values + +$fm10 = random(2,7,1)*random(-1,1,2); +$fa = 0; +$fb = random(2,7,1)*random(-1,1,2); +$fc = 0; +# make sure that fb and fd have opposite sign +if($fb > 0) +{$fd = random(-7,-2,1);} +else +{$fd = random(2,7,1);} +$fe = 0; +# make sure that fm10 and f10 have opposite sign +if($fm10 > 0) +{$f10 = random(-7,-2,1);} +else +{$f10 = random(2,7,1);} + +# area values A(x) = int_$a ^x f(t) dt +# all shapes are triangles 1/2 base height +# base = interval length; height = function values +$Fm10 = Compute("1/2*(-10-$a)*$fm10"); +$Fa = 0; +$Fb = Compute("1/2*($b-$a)*$fb"); +$Fc = Compute("1/2*($c-$a)*$fb"); +$Fd = Compute("1/2*($c-$a)*$fb + 1/2*($d-$c)*$fd"); +$Fe = Compute("1/2*($c-$a)*$fb + 1/2*($e-$c)*$fd"); +$F10 = Compute("1/2*($c-$a)*$fb + 1/2*($e-$c)*$fd + 1/2(10-$e)*$f10"); + +$max = max($Fm10,$Fa,$Fb,$Fc,$Fd,$Fe,$F10); +$min = min($Fm10,$Fa,$Fb,$Fc,$Fd,$Fe,$F10); + +#ask aboout b or c and d or e +$pt1 = list_random($b,$c); +$pt2 = list_random($d,$e); + +if($pt1 == $b) +{$Apt1 = $Fb;} +else +{$Apt1 = $Fc;} + +if($pt2 == $d) +{$Apt2 = $Fd;} +else +{$Apt2 = $Fe;} + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) --($d,$fd); +\draw[red, very thick] ($d,$fd) -- ($e,$fe); +\draw[red, very thick] ($e,$fe) -- (10,$f10); +\filldraw[red, very thick] (-10,$fm10) circle (2.5 pt); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\filldraw[red, very thick] ($b,$fb) circle (2.5 pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5 pt); +\filldraw[red, very thick] ($d,$fd) circle (2.5 pt); +\filldraw[red, very thick] ($e,$fe) circle (2.5 pt); +\filldraw[red, very thick] (10,$f10) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the continuous function [`y=f(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +Define [``A(x) = \int_{[$a]}^{x} f(t) \, dt``] for all [`x`] in the closed interval [`[-10,10].`] + ++ The global (absolute) maximum value of [`A`] on the interval [`[-10,10]`] is [_]{$max}{5}. + ++ The global (absolute) minimum value of [`A`] on the interval [`[-10,10]`] is [_]{$min}{5}. + +END_PGML + +BEGIN_PGML_SOLUTION +We will apply the Closed Interval Method. + +By the Fundamental Theorem of Calculus, [``A'(x) = \frac{d}{dx}\int_{[$a]}^{x} f(t) \, dt = f(x).``] + +Therefore, [`A`] has critical points at [`x=[$a]`], [`[$c]`] and [`[$e]`]. + +Now, we will find the value of [`A`] at each of the critical points and the endpoints of the interval to find the global maximum and minimum. + ++ [``A(-10) = \int_{[$a]}^{-10} f(t) \, dt = -\int_{-10}^{[$a]} f(t) \, dt = [$Fm10]``] + ++ [``A([$a]) = \int_{[$a]}^{[$a]} f(t) \, dt = [$Fa]``] + ++ [``A([$c]) = \int_{[$a]}^{-10} f(t) \, dt = [$Fc]``] + ++ [``A([$e]) = \int_{[$a]}^{-10} f(t) \, dt = [$Fe]``] + ++ [``A(10) = \int_{[$a]}^{10} f(t) \, dt = [$F10]``] + +So the global (absolute) maximum value of [`A`] is [`[$max]`], and the global (absolute) minimum value of [`A`] is [`[$min].`] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-4G-Ap-A-ftc-closed-int-jms-2.pg b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-4G-Ap-A-ftc-closed-int-jms-2.pg new file mode 100644 index 0000000000..7fccf90de8 --- /dev/null +++ b/Contrib/UCalgary/249-13-0-0-C/13-4-G-Ap-A/13-4-4G-Ap-A-ftc-closed-int-jms-2.pg @@ -0,0 +1,125 @@ +## DESCRIPTION +## +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Fundamental theorem of calculus) +## Date(17 April 2025) +## Institution(University of Calgary) +## Author(Jerrod Smith) +## Level(3) + +DOCUMENT(); + +loadMacros("PGstandard.pl", "PGML.pl", "PGtikz.pl", "PGcourse.pl"); + +#intervals +$a = random(-8,-6,1); +$b = $a + random(2,4,1); +$c = $b + random(2,3,1); +$d1 = $c + random(1,2,1); +$d2 = $d1 + random(1,2,1); +$e = $d2 + random(2,3,1); + +# funciton values +$fm10 = random(2,6,1)*random(-1,1,2); +$fa = $fm10; +#make sure fb has same sign as fm10, fa +if($fm10 < 0) +{$fb = random(-7,-2,1);} +else +{$fb = random(2,7,1);} +$fc = 0; +# make sure that fb and fd have opposite sign +if($fb > 0) +{$fd = random(-6,-2,1);} +else +{$fd = random(2,6,1);} +$fe = 0; +# make sure that fe and f10 have the same sign +$f10 = random(2,7,1)*random(-1,1,2); + +# area values over sub-intervals +# all shapes are rectangles (base height) or triangles (1/2 base height) +# base = interval length; height = function values +$Am10toa = Compute("($a-(-10))*$fm10"); #rectangle +$Aatob = 1/2*($b-$a)*(max($fm10,$fb)-min($fm10,$fb)) +($b-$a)*min($fm10,$fb); #rectangle + trangle +$Abtoc = Compute("1/2*($c-$b)*$fb"); #triangle +$Actod1 = Compute("1/2*($d1-$c)*$fd");#triangle +$Ad1tod2 = Compute("($d2-$d1)*$fd"); #rectangle +$Ad2toe = Compute("1/2*($e-$d2)*$fd"); #triangle +$Aeto10 = Compute("1/2*(10-$e)*$f10"); #triangle + +# function values +$Fm10 = Compute("-$Am10toa-$Aatob"); +$Fc = Compute("$Abtoc"); +$Fe = Compute("$Abtoc + $Actod1 + $Ad1tod2 + $Ad2toe"); +$F10 = Compute("$Abtoc + $Actod1 + $Ad1tod2 + $Ad2toe + $Aeto10"); + +$max = max($Fm10,$Fc,$Fe,$F10); +$min = min($Fm10,$Fc,$Fe,$F10); + +$graph_image = createTikZImage(); +$graph_image->tikzLibraries("arrows.meta"); + +$graph_image->BEGIN_TIKZ +\draw[->,thick] (-10,0) -- (10,0) node[above left,outer sep=2pt]{\(x\)}; +\draw[->,thick] (0,-7) -- (0,7) node[below right,outer sep=2pt]{\(y\)}; +\draw[very thin,color=gray] (-10,-7) grid (10,7); +\foreach \x in {-8,-6,-4,-2,2,4,6,8} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; +\foreach \y in {-6,-4,-2,2,4,6} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; +\draw[red, very thick] (-10,$fm10) -- ($a,$fa); +\draw[red, very thick] ($a,$fa) -- ($b,$fb); +\draw[red, very thick] ($b,$fb) -- ($c,$fc); +\draw[red, very thick] ($c,$fc) -- ($d1,$fd); +\draw[red, very thick] ($d1,$fd) -- ($d2,$fd); +\draw[red, very thick] ($d2,$fd) -- ($e,$fe); +\draw[red, very thick] ($e,$fe) -- (10,$f10); +\filldraw[red, very thick] (-10,$fm10) circle (2.5 pt); +\filldraw[red, very thick] ($a,$fa) circle (2.5 pt); +\filldraw[red, very thick] ($b,$fb) circle (2.5 pt); +\filldraw[red, very thick] ($c,$fc) circle (2.5 pt); +\filldraw[red, very thick] ($d1,$fd) circle (2.5 pt); +\filldraw[red, very thick] ($d2,$fd) circle (2.5 pt); +\filldraw[red, very thick] ($e,$fe) circle (2.5 pt); +\filldraw[red, very thick] (10,$f10) circle (2.5 pt); +\draw[red] (10,$f10) node[above right, outer sep=2pt]{\(y=f(x)\)}; +END_TIKZ + +BEGIN_PGML +Consider the following graph of the continuous function [`y=f(x)`]. + +[@ image($graph_image, width => 800, tex_size => 800) @]* + +Define [``A(x) = \int_{[$b]}^{x} f(t) \, dt``] for all [`x`] in the closed interval [`[-10,10].`] + ++ The global (absolute) maximum value of [`A`] on the interval [`[-10,10]`] is [_]{$max}{5}. + ++ The global (absolute) minimum value of [`A`] on the interval [`[-10,10]`] is [_]{$min}{5}. + +END_PGML + +BEGIN_PGML_SOLUTION +We will apply the Closed Interval Method. + +By the Fundamental Theorem of Calculus, [``A'(x) = \frac{d}{dx}\int_{[$a]}^{x} f(t) \, dt = f(x).``] + +Therefore, [`A`] has critical points at [`x=[$c]`] and [`x=[$e]`]. + +Now, we will find the value of [`A`] at each of the critical points and the endpoints of the interval to find the global maximum and minimum. + ++ [``A(-10) = \int_{[$b]}^{-10} f(t) \, dt = - \int_{-10}^{[$b]} f(t) \, dt = [$Fm10]``] + ++ [``A([$c]) = \int_{[$b]}^{[$c]} f(t) \, dt = [$Fc]``] + ++ [``A([$e]) = \int_{[$b]}^{[$e]} f(t) \, dt = [$Fe]``] + ++ [``A(10) = \int_{[$b]}^{10} f(t) \, dt = [$F10]``] + +So the global (absolute) maximum value of [`A`] is [`[$max]`], and the global (absolute) minimum value of [`A`] is [`[$min].`] + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-1-R-C/14-0-1-R-C-infinite-interval-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-0-1-R-C/14-0-1-R-C-infinite-interval-AT.pg new file mode 100644 index 0000000000..e56b4df357 --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-0-1-R-C/14-0-1-R-C-infinite-interval-AT.pg @@ -0,0 +1,49 @@ +## DESCRIPTION +## Identify an integral as being improper because it is over an infinite interval +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Level(1) +## KEYWORDS() + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + 'parserRadioButtons.pl' +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$radio = RadioButtons( + + [ + '\(\displaystyle\int_1^{\infty}{e^{-x}dx}\)', + '\(\displaystyle\int_4^9{x\sqrt{x}dx}\)', + '\(\displaystyle\int_1^2{\frac{dx}{x^2}}\)', + '\(\displaystyle\int_{0}^3{\frac{dx}{\sqrt{1 + x}}}\)' + ], + '\(\displaystyle\int_1^{\infty}{e^{-x}dx}\)', # correct answer +); + +BEGIN_PGML +Identify which of the following integrals is **improper**: + +[_]{$radio} + +END_PGML + +BEGIN_PGML_SOLUTION +The integral +[```\displaystyle\int_1^{\infty}{e^{-x}dx}```] +is improper (even though it converges) because one of the limits of integration is infinite. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-2-U-C/14-0-2-U-C-asymptote-algebraic-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-0-2-U-C/14-0-2-U-C-asymptote-algebraic-AT.pg new file mode 100644 index 0000000000..f87e10f813 --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-0-2-U-C/14-0-2-U-C-asymptote-algebraic-AT.pg @@ -0,0 +1,46 @@ +## DESCRIPTION +## Identify an integral as improper because the function has a vertical asymptote in the domain of integration (algebraically) +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Level(2) +## KEYWORDS() + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + 'parserCheckboxList.pl' +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$checks = CheckboxList( + [ + "\(\displaystyle\int_0^1{\frac{dx}{x^{1/3}}}\)", + "\(\displaystyle\int_1^2{\frac{dx}{x^2}}\)", + "\(\displaystyle\int_{-1}^2{\frac{dx}{x^3}}\)", + "\(\displaystyle\int_0^1{\frac{dx}{1+x}}\)" + ], + [ 0, 2 ] +); + +BEGIN_PGML +Identify which integrals are improper because the integrand has a vertical asymptote in the domain of integration. + +[_]{$checks} + +END_PGML + +BEGIN_PGML_SOLUTION + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-3-U-C/14-0-3-U-C-asymptote-graphic-2-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-0-3-U-C/14-0-3-U-C-asymptote-graphic-2-AT.pg new file mode 100644 index 0000000000..ac07ddf9ff --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-0-3-U-C/14-0-3-U-C-asymptote-graphic-2-AT.pg @@ -0,0 +1,160 @@ +## DESCRIPTION +## Identify an integral as improper because the function has a vertical asymptote in the domain of integration (graphically) +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Level(2) +## KEYWORDS() + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + 'PGtikz.pl', + 'parserPopUp.pl', + 'niceTables.pl', + 'plots.pl', + 'parserCheckboxList.pl' +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$f1 = Compute("x^{-1}")->reduce; +$f2 = Compute("exp(-x)")->reduce; +$f3 = Compute("x^2")->reduce; +$f4 = Compute("1/(x-5)^{2}")->reduce; +$xmin = 0; +$xmax = 10; +$ymin = 0; +$ymax = 10; +$x0 = 0; +$x1 = 10; +$xtick_delta = 2; +$ytick_delta = 2; + +$plot1 = Plot( + xmin => $xmin, + xmax => $xmax, + ymin => $ymin, + ymax => $ymax, + xtick_delta => $xtick_delta, + ytick_delta => $ytick_delta +); +$plot1->add_function( + $f1, 'x', $x0, $x1, + color => 'blue', + name => 'A', + fill => 'xaxis', + fill_min => $x0, + fill_max => $x1, + fill_color => 'green', + fill_opacity => 0.5 +); + +$plot2 = Plot( + xmin => $xmin, + xmax => $xmax, + ymin => $ymin, + ymax => $ymax, + xtick_delta => $xtick_delta, + ytick_delta => $ytick_delta +); +$plot2->add_function( + $f2, 'x', $x0, $x1, + color => 'blue', + name => 'A', + fill => 'xaxis', + fill_min => $x0, + fill_max => $x1, + fill_color => 'green', + fill_opacity => 0.5 +); + +$plot3 = Plot( + xmin => $xmin, + xmax => $xmax, + ymin => $ymin, + ymax => $ymax, + xtick_delta => $xtick_delta, + ytick_delta => $ytick_delta +); +$plot3->add_function( + $f3, 'x', $x0, $x1, + color => 'blue', + name => 'A', + fill => 'xaxis', + fill_min => $x0, + fill_max => $x1, + fill_color => 'green', + fill_opacity => 0.5 +); + +$plot4 = Plot( + xmin => $xmin, + xmax => $xmax, + ymin => $ymin, + ymax => $ymax, + xtick_delta => $xtick_delta, + ytick_delta => $ytick_delta +); +$plot4->add_function( + $f4, 'x', $x0, $x1, + color => 'blue', + name => 'A', + fill => 'xaxis', + fill_min => $x0, + fill_max => $x1, + fill_color => 'green', + fill_opacity => 0.5 +); + +$checks = CheckboxList( + [ + ["\(y = \frac{1}{x}\)", + "\(y = \exp{(-x)}\)", + "\(y = x^2\)", + "\(y = \frac{1}{(x-5)^2}\)"], + ], + [ 0, 3 ], + separator => $BRBR +); + +BEGIN_PGML +Consider the following graphs of functions and their integrals which are represented by the shaded areas under the graphs. +[# + [. [`y = [$f1]`] .] + [. [`y = [$f2]`] .]* + [. [![$altText]!]{$plot1}{200} .] + [. [![$altText]!]{$plot2}{200} .]* + [. [`y = [$f3]`] .] + [. [`y = [$f4]`] .]* + [. [![$altText]!]{$plot3}{200} .] + [. [![$altText]!]{$plot4}{200} .]* +#]* + +If we integrated each function from [`x=[$xmin]`] to [`x=[$xmax]`], then which functions integral would be **improper**? + +[_]{$checks} + +END_PGML + +BEGIN_PGML_HINT +Consider the graphs and note if there is any kind of special **behaviour** that these functions might have that would make the integral improper. +END_PGML_HINT + +BEGIN_PGML_SOLUTION +The solution would be the functions [`y = [$f1]`] and [`y = [$f4]`]. + +You can see that the integrals of [`y = [$f2]`] and [`y = [$f3]`] would not be improper as there are no obvious **vertical asymptotes** in their intervals of integration. + +On the otherhand, the graphs of [`y=[$f1]`] and [`y=[$f4]`] have vertical asymptotes at [`x = 0`] and [`x=5`], respectively, which would result in their integrals being improper. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-3-U-C/14-0-3-U-C-asymptote-graphic-AT.pg.old b/Contrib/UCalgary/249-14-0-0-C/14-0-3-U-C/14-0-3-U-C-asymptote-graphic-AT.pg.old new file mode 100644 index 0000000000..1984754526 --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-0-3-U-C/14-0-3-U-C-asymptote-graphic-AT.pg.old @@ -0,0 +1,106 @@ +## DESCRIPTION +## Identify an integral as improper because the function has a vertical asymptote in the domain of integration (graphically) +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Level(2) +## KEYWORDS() + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + 'PGtikz.pl', + 'parserPopUp.pl', + 'niceTables.pl' +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +@all_plots = ( + { + form => 'pow(\x,-1/2)', + domain => '0.05:3' + }, + { + form => 'exp(-\x)', + domain => '0:10' + }, + { + form => 'pow(\x,2)', + domain => '0:3' + }, + { + form => 'exp(\x)', + domain => '-10:0' + }, +); + +for $i (0 .. $#all_plots) { + my $graph = createTikZImage(); + $graph->tikzLibraries('arrows.meta'); + $graph->BEGIN_TIKZ + \tikzset{>={Stealth[scale=1.5]}} + \filldraw[ + draw=LightBlue, + fill=white, + rounded corners=10pt, + thick,use as bounding box + ] (-4,-4) rectangle (4,4); + \draw[<->,thick] (-4,0) -- (4,0) node[above left,outer sep=3pt] {\(x\)}; + \foreach \x in {-3,...,-1,1,2,...,3} + \draw(\x,5pt) -- (\x,-5pt) node [below] {\(\x\)}; + \draw[<->,thick] (0,-4) -- (0,4) node[below right,outer sep=3pt] {\(y\)}; + \foreach \y in {-3,...,-1,1,2,...,3} + \draw (5pt,\y) -- (-5pt,\y) node[left] {\(\y\)}; + \draw[blue,ultra thick] plot[domain=$all_plots[$i]->{domain},smooth] (\x,{$all_plots[$i]->{form}}); +END_TIKZ + $all_plots[$i]->{graph} = $graph; +} + +$dropdown = DropDown(['A','B','C','D'], 'A'); + +$tab = LayoutTable( + [ + ['A', 'B'], + [ + map { + image( + $all_plots[$_]->{graph}, + width => 300, + tex_size => 400 + ) + } (0 .. 1) + ], + ['C', 'D'], + [ + map { + image( + $all_plots[$_]->{graph}, + width => 300, + tex_size => 400 + ) + } (2 .. 3) + ] + ], + align => 'cc' +); + +BEGIN_PGML +Which graph represents a function whose integral would be **Improper** in the graphs domain? [_]{$dropdown} + +[$tab]* +END_PGML + +BEGIN_PGML_SOLUTION + +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-2-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-2-AT.pg new file mode 100644 index 0000000000..c416921ee0 --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-2-AT.pg @@ -0,0 +1,82 @@ +## DESCRIPTION +## State the definition of convergence/divergence for an improper integral +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Date(6 May 2025) +## Author(Aiden Taylor) +## Level(1) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl", # DropDown routine + 'niceTables.pl', + 'answerHints.pl', + "PGunion.pl", + 'draggableProof.pl' +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$converge = DropDown( + [ + 'converge', + 'diverge', + ], + 'converge' +); +$diverge = DropDown( + [ + 'converge', + 'diverge', + ], + 'diverge' +); +$both = DropDown( + [ + 'both', + 'either', + ], + 'both' +); +$and = DropDown( + [ + 'and', + 'or', + ], + 'and' +); + +Context()->texStrings; +$integrals = + BeginTable(center=>1). + Row([ + '\(\displaystyle\int_{\infty}^c{f(x)dx}\)'.$SPACE.$SPACE.'and'.$SPACE.$SPACE.'\(\displaystyle\int_c^{\infty}{f(x)dx}\)'], + separation=>4). + EndTable(); + +BEGIN_PGML +Suppose [`f`] is a continuous function on the interval [`(-\infty,\infty)`] and let [`c`] be an arbitrary real number. + +If both +[$integrals]* +[_]{$converge}, then the improper integral of [`f`] over [`(-\infty,\infty)`] can be defined as +[```\int_{-\infty}^{\infty}{f(x)dx} = \int_{-\infty}^c{f(x)dx} + \int_c^{\infty}{f(x)dx}.```] +END_PGML + +BEGIN_PGML_SOLUTION +The solution is +[```\int_{-\infty}^{\infty}{f(x)dx} = \int_{-\infty}^c{f(x)dx} + \int_c^{\infty}{f(x)dx},```] +where the improper integral on the left diverges if either of the improper integrals on the right diverges. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-AT.pg new file mode 100644 index 0000000000..c34c554518 --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-AT.pg @@ -0,0 +1,126 @@ +## DESCRIPTION +## State the definition of convergence/divergence for an improper integral +## ENDDESCRIPTION + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Date(6 May 2025) +## Author(Aiden Taylor) +## Level(1) + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "parserPopUp.pl", # DropDown routine + 'niceTables.pl', + 'answerHints.pl', + "PGunion.pl", + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$lower_limit_1 = NEW_ANS_NAME(); +$upper_limit_1 = NEW_ANS_NAME(); +$lower_limit_2 = NEW_ANS_NAME(); +$upper_limit_2 = NEW_ANS_NAME(); + +$converge = DropDown([ 'converge(s)', 'diverge(s)', ], 'converge(s)'); + +$diverge = DropDown([ 'converge(s)', 'diverge(s)', ], 'diverge(s)'); + +$both = DropDown([ 'at least one', 'both', ], 'both'); + +Context("Numeric"); +Context()->variables->are( + a => "Real", + b => "Real", + c => "Real" +); + +Context()->texStrings; +$integral1 = BeginTable(center => 1) + . Row( + [ + '\(\displaystyle\int_{a}^{\infty}{f(x)dx}\)', + '\(=\)' + . $SPACE + . '\(\displaystyle\lim_{b\rightarrow \infty}\displaystyle\int\)', + labeled_ans_rule($upper_limit_1, 2) + . $BR + . $BR + . labeled_ans_rule($lower_limit_1, 2), + '\(f(x)dx,\)' + ], + separation => 2 + ) . EndTable(); + +$integral2 = BeginTable(center => 1) + . Row( + [ + '\(\displaystyle\int_{-\infty}^{b}{f(x)dx}\)', + '\(=\)' + . $SPACE + . '\(\displaystyle-\lim_{a\rightarrow -\infty}\displaystyle\int\)', + labeled_ans_rule($upper_limit_2, 2) + . $BR + . $BR + . labeled_ans_rule($lower_limit_2, 2), + '\(f(x)dx,\)' + ], + separation => 2 + ) . EndTable(); + +$integrals = BeginTable(center => 1) + . Row( + [ + '\(\displaystyle\int_{\infty}^c{f(x)dx}\)' + . $SPACE + . $SPACE + . 'or/and' + . $SPACE + . $SPACE + . '\(\displaystyle\int_c^{\infty}{f(x)dx}\)' + ], + separation => 4 + ) . EndTable(); + +BEGIN_PGML +Fill in the blanks to complete the following definitions. + ++ If [`f`] is continuous on [`[a,\infty)`], then [$integral1]* +where the improper integral [_]{$converge} if the limit exists. + ++ If [`f`] is continuous on [`(-\infty,b]`], then [$integral2]* +where the improper integral [_]{$diverge} if the limit does not exist. + ++ If [`f`] is continuous on [`(-\infty,\infty)`] and [`c`] is an arbitrary real number, then the improper integral of [`f`] over [`(-\infty,\infty)`] can be defined as +[```\int_{-\infty}^{\infty}{f(x)dx} = \int_{-\infty}^c{f(x)dx} + \int_c^{\infty}{f(x)dx}```] +as long as [_]{$both} of +[$integrals]* +[_]{$converge}. +END_PGML + +LABELED_ANS($lower_limit_1, Compute("a")->cmp()); +LABELED_ANS($upper_limit_1, Compute("b")->cmp()); +LABELED_ANS($lower_limit_2, Compute("b")->cmp()); +LABELED_ANS($upper_limit_2, Compute("a")->cmp()); + +BEGIN_PGML_SOLUTION +For the first point, the solution is +[```\int_a^{\infty}{f(x)dx} = \lim_{b\rightarrow\infty}\int_a^b{f(x)dx},```] +where the improper integral converges if the limit exists. + +For the second point, the solution is +[```\int_{-\infty}^{b}{f(x)dx} = -\lim_{a\rightarrow-\infty}\int_b^a{f(x)dx},```] +where the improper integral diverges if the limit does not exist (note the negative sign infront of the limit). + +For the last point, the solution is that both improper integrals have to converge in order to define the improper integral in such a way. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/MATH249SpecificationGrading.zip b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/MATH249SpecificationGrading.zip new file mode 100644 index 0000000000000000000000000000000000000000..da9895727fa232fa40c6f678e71b13bbe5ab2ef1 GIT binary patch literal 12801 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 S3Y^&B&p09gfJJlu?SBBLdR^oI literal 0 HcmV?d00001 diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/course_info.txt b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/course_info.txt new file mode 100644 index 0000000000..c7cdd07dcd --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/course_info.txt @@ -0,0 +1 @@ +Put information about your course here. Click the edit button above to add your own message. diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/demoCourse.lst b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/demoCourse.lst new file mode 100644 index 0000000000..5df34bb02d --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/demoCourse.lst @@ -0,0 +1,9 @@ +practice1 ,PRACTICE1 ,JANE ,C, , , , ,practice1, ,-5 +practice2 ,PRACTICE2 ,JANE ,C, , , , ,practice2, ,-5 +practice3 ,PRACTICE3 ,JANE ,C, , , , ,practice3, ,-5 +practice4 ,PRACTICE4 ,JANE ,C, , , , ,practice4, ,-5 +practice5 ,PRACTICE5 ,JANE ,C, , , , ,practice5, ,-5 +practice6 ,PRACTICE6 ,JANE ,C, , , , ,practice6, ,-5 +practice7 ,PRACTICE7 ,JANE ,C, , , , ,practice7, ,-5 +practice8 ,PRACTICE8 ,JANE ,C, , , , ,practice8, ,-5 +practice9 ,PRACTICE9 ,JANE ,C, , , , ,practice9, ,-5 diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.def b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.def new file mode 100644 index 0000000000..48afedf1c9 --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.def @@ -0,0 +1,86 @@ +assignmentType = default +openDate = 01/10/1998 at 06:00am EST +reducedScoringDate = 01/01/2006 at 02:00am EST +dueDate = 01/01/2006 at 02:00am EST +answerDate = 01/01/2006 at 02:00am EST +enableReducedScoring = N +paperHeaderFile = setDemo/paperHeaderFile1.pg +screenHeaderFile = setDemo/screenHeaderFile1.pg +description = +restrictProbProgression = 0 +emailInstructor = 0 + +problemListV2 +problem_start +problem_id = 1 +source_file = setDemo/srw1_9_4.pg +value = 1 +max_attempts = -1 +showMeAnother = -1 +counts_parent_grade = 0 +att_to_open_children = 1 +problem_end +problem_start +problem_id = 2 +source_file = setDemo/limits.pg +value = 1 +max_attempts = -1 +showMeAnother = -1 +counts_parent_grade = 0 +att_to_open_children = 1 +problem_end +problem_start +problem_id = 3 +source_file = setDemo/s2_2_1.pg +value = 1 +max_attempts = -1 +showMeAnother = -1 +counts_parent_grade = 0 +att_to_open_children = 1 +problem_end +problem_start +problem_id = 4 +source_file = setDemo/c4s5p2.pg +value = 1 +max_attempts = -1 +showMeAnother = -1 +counts_parent_grade = 0 +att_to_open_children = 1 +problem_end +problem_start +problem_id = 5 +source_file = setDemo/sample_units_ans.pg +value = 1 +max_attempts = -1 +showMeAnother = -1 +counts_parent_grade = 0 +att_to_open_children = 1 +problem_end +problem_start +problem_id = 6 +source_file = setDemo/nsc2s10p2.pg +value = 1 +max_attempts = -1 +showMeAnother = -1 +counts_parent_grade = 0 +att_to_open_children = 1 +problem_end +problem_start +problem_id = 7 +source_file = setDemo/prob5.pg +value = 1 +max_attempts = -1 +showMeAnother = -1 +counts_parent_grade = 0 +att_to_open_children = 1 +problem_end +problem_start +problem_id = 8 +source_file = setDemo/sample_myown_ans.pg +value = 1 +max_attempts = -1 +showMeAnother = -1 +counts_parent_grade = 0 +att_to_open_children = 1 +problem_end + diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.zip b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.zip new file mode 100644 index 0000000000000000000000000000000000000000..32b27ac7680fba1aceb6041bfa9724093b6101c4 GIT binary patch literal 19573 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 literal 0 HcmV?d00001 diff --git a/Contrib/UCalgary/249-14-0-0-C/14-1-1-Ap-I/14-1-1-Ap-I-compute-improper-int-inf-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-1-1-Ap-I/14-1-1-Ap-I-compute-improper-int-inf-AT.pg new file mode 100644 index 0000000000..60b04eb8f5 --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-1-1-Ap-I/14-1-1-Ap-I-compute-improper-int-inf-AT.pg @@ -0,0 +1,48 @@ +## DESCRIPTION +## Give a value for pi +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Level(3) +## KEYWORDS('template', 'pi') + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + 'parserSolutionFor.pl' +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(0,4,1); +$b = random(2,4,1); + +$integral = LayoutTable( + [ + [ + '\(\displaystyle \int_'.$a.'^{\infty}{\frac{dx}{x^'.$b.'}} = \)'.$SPACE.labeled_ans_rule("answer",4).$SPACE.'.' + ] + ] +); + +BEGIN_PGML +Evaluate +[$integral]* +END_PGML + +LABELED_ANS("answer",Compute((1/(1 - $b))*(-$a**(-$b + 1)))->cmp()); + +BEGIN_PGML_SOLUTION +This integral can be computed as +[```\int_{[$a]}^{\infty}{\frac{dx}{x^{[$b]}}} = \left.\frac{1}{(-[$b] + 1)x^{[$b]-1}}\right\vert_{[$a]}^{\infty} = \frac{1}{(-[$b] + 1)}\lim_{x\rightarrow \infty}{\left(\frac{1}{x^{[$b]-1}} - \frac{1}{[$a]^{[$b]-1}}\right)} = -\frac{1}{(-[$b] + 1)[$a]^{[$b]-1}}.```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-1-2-Ap-I/14-1-2-Ap-I-compute-improper-int-AT-PREMOD.pg b/Contrib/UCalgary/249-14-0-0-C/14-1-2-Ap-I/14-1-2-Ap-I-compute-improper-int-AT-PREMOD.pg new file mode 100644 index 0000000000..9b75c58484 --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-1-2-Ap-I/14-1-2-Ap-I-compute-improper-int-AT-PREMOD.pg @@ -0,0 +1,37 @@ +## DESCRIPTION +## Compute improper integrals over a finite interval where a function has a vertical asymptote +## ENDDESCRIPTION + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Level(3) +## KEYWORDS() + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(1, 4, 1); +$b = random(2, 4, 1); + +BEGIN_PGML +Evaluate +[`` \int_0^{[$a]}{\frac{dx}{x^{[$b]}}} ``] = [_]{Compute("inf")}{4} +END_PGML + +BEGIN_PGML_SOLUTION +The integrand has an infinite discontinuity at [`x = 0`], +which can be computed as +[```\int_{0}^{[$a]}{\frac{dx}{x^{[$b]}}} = \left.\frac{1}{(-[$b]+1)x^{[$b]-1}}\right\vert_{0}^{[$a]} = \frac{1}{(-[$b]+1)}\left(\frac{1}{[$a]^{[$b]-1}} - \lim_{x\rightarrow 0^+}{\frac{1}{x^{[$b]-1}}}\right) = \infty.```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-1-2-Ap-I/14-1-2-Ap-I-compute-improper-int-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-1-2-Ap-I/14-1-2-Ap-I-compute-improper-int-AT.pg new file mode 100644 index 0000000000..9b75c58484 --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-1-2-Ap-I/14-1-2-Ap-I-compute-improper-int-AT.pg @@ -0,0 +1,37 @@ +## DESCRIPTION +## Compute improper integrals over a finite interval where a function has a vertical asymptote +## ENDDESCRIPTION + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Level(3) +## KEYWORDS() + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$a = random(1, 4, 1); +$b = random(2, 4, 1); + +BEGIN_PGML +Evaluate +[`` \int_0^{[$a]}{\frac{dx}{x^{[$b]}}} ``] = [_]{Compute("inf")}{4} +END_PGML + +BEGIN_PGML_SOLUTION +The integrand has an infinite discontinuity at [`x = 0`], +which can be computed as +[```\int_{0}^{[$a]}{\frac{dx}{x^{[$b]}}} = \left.\frac{1}{(-[$b]+1)x^{[$b]-1}}\right\vert_{0}^{[$a]} = \frac{1}{(-[$b]+1)}\left(\frac{1}{[$a]^{[$b]-1}} - \lim_{x\rightarrow 0^+}{\frac{1}{x^{[$b]-1}}}\right) = \infty.```] +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-2-1-R-I/14-2-1-R-I-comparison-test-def-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-2-1-R-I/14-2-1-R-I-comparison-test-def-AT.pg new file mode 100644 index 0000000000..e9b3983dd3 --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-2-1-R-I/14-2-1-R-I-comparison-test-def-AT.pg @@ -0,0 +1,65 @@ +## DESCRIPTION +## State the Comparison Test for improper integrals +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Level(1) +## KEYWORDS() + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + "parserPopUp.pl", +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +# TODO: +# - Write a solution? +# - Might be a little too simple. + +$converge = DropDown( + [ + 'converges', + 'diverges', + ], + 'converges' +); + +$diverge = DropDown( + [ + 'converges', + 'diverges', + ], + 'diverges' +); + +BEGIN_PGML +Let [`f`] and [`g`] be functions such that [`0 \leq g(x) \leq f(x)`] on the interval [`[a,\infty)`]. + +The **Comparison Test for Improper Integrals** states that: + +1. If [`\displaystyle\int_a^{\infty}{f(x)dx}`] [_]{$converge}, then so does [`\displaystyle\int_a^{\infty}{g(x)dx}`]. + +2. If [`\displaystyle\int_a^{\infty}{g(x)dx}`] [_]{$diverge}, then so does [`\displaystyle\int_a^{\infty}{f(x)dx}`]. +END_PGML + +BEGIN_PGML_SOLUTION +The solutions are: + +1. If [`\displaystyle\int_a^{\infty}{f(x)dx}`] *converges*, then so does [`\displaystyle\int_a^{\infty}{g(x)dx}`]. + +2. If [`\displaystyle\int_a^{\infty}{g(x)dx}`] *diverges*, then so does [`\displaystyle\int_a^{\infty}{f(x)dx}`]. + +Informally, 1. implies that if the area under the graph of the larger function is finite, then the area under the graph of the smaller function should also be finite, and 2. implies that if the area under the graph of the smaller function is infinite, then the area under the graph of the larger function should also be infinite. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-2-2-Ap-A/14-2-2-Ap-A-use-comparison-test-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-2-2-Ap-A/14-2-2-Ap-A-use-comparison-test-AT.pg new file mode 100644 index 0000000000..9bb49af2be --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-2-2-Ap-A/14-2-2-Ap-A-use-comparison-test-AT.pg @@ -0,0 +1,52 @@ +## DESCRIPTION +## Use the Comparison Test to evaluate the convergence/divergence of explicit improper integrals +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Level(3) +## KEYWORDS() + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + 'parserRadioButtons.pl', + 'parserPopUp.pl' +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$radio = RadioButtons( + [ "True", "False" ], + "False", # correct answer +); +$true = DropDown([ 'True', 'False'], 'True'); +$false = DropDown([ 'True', 'False'], 'False'); + +BEGIN_PGML +Consider the improper integral +[```\int_{1}^{\infty}{\frac{1}{1+ x^2}dx}.```] + +**True** or **False**, the above integral diverges. [_]{$false} +END_PGML + +BEGIN_PGML_HINT +Use the **Comparison Test**. +END_PGML_HINT + +BEGIN_PGML_SOLUTION +The statement is False. If we compare the function [`f(x) = \frac{1}{1+x^2}`] to [`g(x) = \frac{1}{x^2}`] for [`x \geq 1`], then we find that [`0 \leq f(x) \leq g(x)`], implying that +[```\int_{1}^{A}{\frac{1}{1+x^2}dx} = \int_{1}^{A}{f(x)dx} \leq \int_{1}^{A}{g(x)} = \int_{1}^{A}{\frac{1}{x^2}dx},```] +where we know that the improper integral +[```\lim_{A\rightarrow \infty}\int_{1}^{A}{g(x)dx} = \lim_{A \rightarrow\infty}{\int_{1}^{A}\frac{1}{x^2}dx}```] +converges. So, by the Comparison Test, the above integral must also converge. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/249-14-0-0-C/14-2-3-Ap-I/14-2-3-Ap-I-abstract-comparison-test-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-2-3-Ap-I/14-2-3-Ap-I-abstract-comparison-test-AT.pg new file mode 100644 index 0000000000..5adcc60ad7 --- /dev/null +++ b/Contrib/UCalgary/249-14-0-0-C/14-2-3-Ap-I/14-2-3-Ap-I-abstract-comparison-test-AT.pg @@ -0,0 +1,47 @@ +## DESCRIPTION +## Use the Comparison Test to evaluate the convergence/divergence of abstract improper integrals +## ENDDESCRIPTION + + +## DBsubject(Calculus - single variable) +## DBchapter(Integrals) +## DBsection(Improper integrals) +## Level(6) +## KEYWORDS() + +DOCUMENT(); + +loadMacros( + "PGstandard.pl", # Standard macros for PG language + "PGML.pl", # PGML markup and Math Objects + "PGcourse.pl", # Customization file for the course + 'parserPopUp.pl' +); + +# Uncomment the following if you don't want to show which +# answers are correct and which are incorrect +#$showPartialCorrectAnswers = 0; + +$true = DropDown([ 'True', 'False'], 'True'); +$false = DropDown([ 'True', 'False'], 'False'); + +BEGIN_PGML +Let [`f`] and [`g`] be functions such that [`0\leq g(x) \leq f(x)`] on the interval [`[a,\infty)`]. + +Determine if the following statements are **True** or **False**. + +1. If [`\displaystyle\int_{a}^{\infty}{f(x)dx} = 1`], then [`\displaystyle\int_a^{\infty}{g(x)dx}`] converges. [_]{$true} + +2. If [`\displaystyle\int_a^{\infty}{f(x)dx} = \infty`], then [`\displaystyle\int_a^{\infty}{g(x)dx} = \infty`]. [_]{$false} + +END_PGML + +BEGIN_PGML_SOLUTION +The solutions are: + +1. *True*, because the *Comparison Test* for improper integrals tells us that if the improper integral of the larger function converges, then the improper integral of the smaller function also converges. + +2. *False*. Consider when [`f(x) = \frac{1}{x}`], [`g(x) = \frac{1}{x^2}`], and [`a = 1`]. +END_PGML_SOLUTION + +ENDDOCUMENT(); diff --git a/Contrib/UCalgary/README.md b/Contrib/UCalgary/README.md index 4e5542a1b8..3f8f2bcd88 100644 --- a/Contrib/UCalgary/README.md +++ b/Contrib/UCalgary/README.md @@ -12,7 +12,7 @@ WeBWork users may use and copy material in this repository under the following l - NonCommercial: Users may not use the material for commercial purposes. - ShareAlike: If users remix, transform, or build upon the material, users must only distribute their contributions under the same license as the original. -Material within this repository (UCalgary/Specifications-Calculus-WeBWork-2026) may only be modified by users: smith36j and dlglin. +Material within this repository (UCalgary/) may only be modified by users: smith36j and dlglin. MATH_249_Revised_Learning_Outcomes_F25.xlsx contains detaile dlearning outcomes, classification based on Bloom's taxonomy and the WeBWork problem classification scheme. Course learning outcomes (CLOs) are used to organize and name WeBWork problems. From 331ba2e3a8ceeafe052476abc1c08300dc9c7210 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 13:29:13 -0600 Subject: [PATCH 08/29] Add files via upload --- .../14-0-4-R-I-improper-conv-div-2-AT.pg | Bin 1949 -> 1949 bytes .../14-0-4-R-I-improper-conv-div-AT.pg | Bin 3867 -> 3867 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-2-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-2-AT.pg index c416921ee0b3c67e617597268022448b4f563c86..001f13d4832919fb37f72c2985eebddc7572d725 100644 GIT binary patch literal 1949 ccmZQz7zLvtFd71*Aut*OqaiRF0)r|900*4_0RR91 literal 1949 zcmcIlQE%EX5Pr|EIF(9-jk2}c_A<3n3y2{>iwZme1(P_zo3SI?DP>jv`_6VkSwVf; zcpz}T@BI1u&X-CBTJ2%;zB?Fo?{0%i1%`$g3T8zirU?_wFeyML5J~Y!RZ2xfKgF#4 z35ird1h93cWJVP*VQ8udx24**t^MMGjkRuczWhle6E+Eta-M5A1IOj}ISxFUMvzQ7Pku8_X#e4LT z^6 z)m=rO7b}vc7CcZ=CbmFe#jC(rL~^~R!Z>P)SJg${@^jPRxpUOVaX*i9U&N$g>v*mP(h33!rotW**L-d@4Pqp~zWm>B?PKSf*X1jb~!^Q`(W5uF} zvfN&=S9dkVo8#`*<<%EYu`Oax-8S}3yVJd$+q)YK^DL8^!eo&wX27sv?R><0l}j9G zNiN)k0-T)oa#}^yBjK1Hp7{gS{iB9x>j|d@7bE<)q!_?XUoxYJ+Jd5p6Zv{cRU-(x z30O0O$*an<55Z(Ud*1c>OWp2SZ2WdY+ClC)OPt`x`9!!svT)O%#z1s1Su7Ubje`Bl zfsoi$Z!&gOj>`rwkbn6d qywFNBIZX@{_f*@F=C7Sq)_MI_a$N!yOINSR#_rs&XSJdI_s}2i#a|8p diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-AT.pg index c34c554518c5f9a422518c1046b5ceff59ec9f0c..43975cd8712a32563076f1bfc408c9a20940c846 100644 GIT binary patch literal 3867 mcmeIufdBvi0K=g9Qy=7oP+`D;0RsjM7%*VKfB^#rt_KDW8vp?S literal 3867 zcmcIn+iv1W5PkPoln4@Lhh%2Z?!K%h5+O`BQbJHJ+6O|QZ8y+6#%*=mA#9X?-_vay zn@c8H?Mz-`%3YVPQ>UtYa6qTMo9^}b;P(8g?;IS^O~MjR$(&Qbry>%GkP*o#`7(Os zYQ`ghZMI;unk}+2#qJ+;B3yrB>|Fmk{h)z#*>iy0A#O<=sPs3ExA!!lK zLQaoN3Fd{onH}`!EKay`&vT19muqMvCii^XWqttRyT8*VTT%N{`!}o9Nt3x$Zbt+> zqFc5KrLyu1{>Vf3bJKB7uex`az5cD+{KIiV$%0GfE2&+F@K+n0>4ZfAQ^8Rj)>=kJ zHd9tc3wze4VsJ(wi)JaC@j~_TqExb)P#v6IUO-KKOJig&K(xu6u54m-rWZ4%xf;m$ zE?%o6eMs`DTt=j1nusX#(TIf4Z%yVjjy77>K!Zhk$k9eY1bU+5DeslzW< z<4`O_GX4xv41_0q zCL&wcu8#^sbAcC-)sX0juH`awZhj7}&^(#H#=UzV2pxxPrIS_2?_qWP%w8Uz@ia|V zFV9o=sTn-I+yjqo%`Xsc$d0IfGw5`CTf!YDsJ-#Ccdx{3o-n0Q>bbX_Sa#fo%;O;s z#^A(Qr6G4WtF=Y#?AF=!%C3x^w$1F|BG2M&%*R(U!8704Ulv zf+nKrML~v>t-At4!;v41;bETAhiC7nfOvRsQDjvV3!ncN#`aHv(ONAL%FF*p!f0CT z4~DTo(XSA3yPWrNZa)#F`iL3&F4FEdu&-VC`wZq0^v=%vV>9)guObYw zCE0oDVORL3&1l3FjYFOg$QbSnw)6p-^a?UYp%?RJw)@V2$J+H^tiy7bMoE@jcpM=H|@s@u#CrZm3?Fpd$ zo&fR*w&g#NTvH^IERgrdvCf9wD~1z4%Nw>;raX}-rdFgdvnWaz9#?tJ_U8u+aF%$9 z%@>dB%a%@j820k5nFqwQGn`B&c#qjr^pKsR0=KqKtT{m+vRAv62(u%HX$mDaE&R9O znfd*KMcpYu*U0%MutyGd@~jS>i_S^!qIYVxBzJRtYEc*Em|~Bvu^L9czlhx?TKk5^ z#y(Zi@LtuZP9L@jZ5ds`i6Pze21cT723_d=0!6Zl#>cF^EdqGrfw! zvoU)Q?ENw4T-*wIlZ)hnmRU=Q_za7|BgeJ8eqSoWX_dmsv(lCzUDyCn2=m^0f|!gF5x+#PB(?DtS Date: Fri, 26 Jun 2026 13:29:51 -0600 Subject: [PATCH 09/29] Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/MATH249SpecificationGrading.zip --- .../14-0-4-R-I/MATH249SpecificationGrading.zip | Bin 12801 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/MATH249SpecificationGrading.zip diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/MATH249SpecificationGrading.zip b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/MATH249SpecificationGrading.zip deleted file mode 100644 index da9895727fa232fa40c6f678e71b13bbe5ab2ef1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12801 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 S3Y^&B&p09gfJJlu?SBBLdR^oI From dfa6f6b04fdf0ed23e4321f756782bf6f133a17a Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 13:30:00 -0600 Subject: [PATCH 10/29] Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/course_info.txt --- Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/course_info.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/course_info.txt diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/course_info.txt b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/course_info.txt deleted file mode 100644 index c7cdd07dcd..0000000000 --- a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/course_info.txt +++ /dev/null @@ -1 +0,0 @@ -Put information about your course here. Click the edit button above to add your own message. From d83b4f76916f727ca818fa25512ba7c1aaa1af0e Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 13:30:08 -0600 Subject: [PATCH 11/29] Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/demoCourse.lst --- Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/demoCourse.lst | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/demoCourse.lst diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/demoCourse.lst b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/demoCourse.lst deleted file mode 100644 index 5df34bb02d..0000000000 --- a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/demoCourse.lst +++ /dev/null @@ -1,9 +0,0 @@ -practice1 ,PRACTICE1 ,JANE ,C, , , , ,practice1, ,-5 -practice2 ,PRACTICE2 ,JANE ,C, , , , ,practice2, ,-5 -practice3 ,PRACTICE3 ,JANE ,C, , , , ,practice3, ,-5 -practice4 ,PRACTICE4 ,JANE ,C, , , , ,practice4, ,-5 -practice5 ,PRACTICE5 ,JANE ,C, , , , ,practice5, ,-5 -practice6 ,PRACTICE6 ,JANE ,C, , , , ,practice6, ,-5 -practice7 ,PRACTICE7 ,JANE ,C, , , , ,practice7, ,-5 -practice8 ,PRACTICE8 ,JANE ,C, , , , ,practice8, ,-5 -practice9 ,PRACTICE9 ,JANE ,C, , , , ,practice9, ,-5 From 4a5a5f4c7c0063080624e37de2c91dbd9f53ede7 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 13:30:16 -0600 Subject: [PATCH 12/29] Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.def --- .../249-14-0-0-C/14-0-4-R-I/setDemo.def | 86 ------------------- 1 file changed, 86 deletions(-) delete mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.def diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.def b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.def deleted file mode 100644 index 48afedf1c9..0000000000 --- a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.def +++ /dev/null @@ -1,86 +0,0 @@ -assignmentType = default -openDate = 01/10/1998 at 06:00am EST -reducedScoringDate = 01/01/2006 at 02:00am EST -dueDate = 01/01/2006 at 02:00am EST -answerDate = 01/01/2006 at 02:00am EST -enableReducedScoring = N -paperHeaderFile = setDemo/paperHeaderFile1.pg -screenHeaderFile = setDemo/screenHeaderFile1.pg -description = -restrictProbProgression = 0 -emailInstructor = 0 - -problemListV2 -problem_start -problem_id = 1 -source_file = setDemo/srw1_9_4.pg -value = 1 -max_attempts = -1 -showMeAnother = -1 -counts_parent_grade = 0 -att_to_open_children = 1 -problem_end -problem_start -problem_id = 2 -source_file = setDemo/limits.pg -value = 1 -max_attempts = -1 -showMeAnother = -1 -counts_parent_grade = 0 -att_to_open_children = 1 -problem_end -problem_start -problem_id = 3 -source_file = setDemo/s2_2_1.pg -value = 1 -max_attempts = -1 -showMeAnother = -1 -counts_parent_grade = 0 -att_to_open_children = 1 -problem_end -problem_start -problem_id = 4 -source_file = setDemo/c4s5p2.pg -value = 1 -max_attempts = -1 -showMeAnother = -1 -counts_parent_grade = 0 -att_to_open_children = 1 -problem_end -problem_start -problem_id = 5 -source_file = setDemo/sample_units_ans.pg -value = 1 -max_attempts = -1 -showMeAnother = -1 -counts_parent_grade = 0 -att_to_open_children = 1 -problem_end -problem_start -problem_id = 6 -source_file = setDemo/nsc2s10p2.pg -value = 1 -max_attempts = -1 -showMeAnother = -1 -counts_parent_grade = 0 -att_to_open_children = 1 -problem_end -problem_start -problem_id = 7 -source_file = setDemo/prob5.pg -value = 1 -max_attempts = -1 -showMeAnother = -1 -counts_parent_grade = 0 -att_to_open_children = 1 -problem_end -problem_start -problem_id = 8 -source_file = setDemo/sample_myown_ans.pg -value = 1 -max_attempts = -1 -showMeAnother = -1 -counts_parent_grade = 0 -att_to_open_children = 1 -problem_end - From 7bdcf755da1771dfcab19d527006d4ebe293b091 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 13:30:24 -0600 Subject: [PATCH 13/29] Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.zip --- .../249-14-0-0-C/14-0-4-R-I/setDemo.zip | Bin 19573 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.zip diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.zip b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/setDemo.zip deleted file mode 100644 index 32b27ac7680fba1aceb6041bfa9724093b6101c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19573 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 From 3675d71ccdd106cd4551e10ee56819c45a02f59b Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 13:33:25 -0600 Subject: [PATCH 14/29] Delete Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-evt-jms_DO_NOT_USE.pg --- .../3-7-0-Ap-I-evt-jms_DO_NOT_USE.pg | 46 ------------------- 1 file changed, 46 deletions(-) delete mode 100644 Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-evt-jms_DO_NOT_USE.pg diff --git a/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-evt-jms_DO_NOT_USE.pg b/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-evt-jms_DO_NOT_USE.pg deleted file mode 100644 index 7d60f3cbf7..0000000000 --- a/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-evt-jms_DO_NOT_USE.pg +++ /dev/null @@ -1,46 +0,0 @@ -## DESCRIPTION -## -## ENDDESCRIPTION - -## KEYWORDS() - -## DBsubject('') -## DBchapter('') -## DBsection('') -## Date('24 February 2025') -## Author('Jerrod Smith') -## Institution('University of Calgary') - -DOCUMENT(); - -loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); - -# Uncomment the following if you don't want to show which -# answers are correct and which are incorrect -#$showPartialCorrectAnswers = 0; - -$EVT = DropDown( - [ - 'Extreme Value Theorem', - 'Intermediate Value Theorem', - 'Mean Value Theorem' - ], - 'Intermediate Value Theorem' -); - -$a = random(-5,-3,1); -$b = random(1,3,1); - -BEGIN_PGML -Consider the following calculus problem. - -+ "Let [`f(x) = xe^{x/2}`]. Find the global (absolute) maximum and minimum values of [`f`] on the interval [`[[$a],[$b]]`] if they exist." - -Which of the following "value theorems" would be most helpful in solving the given problem? - -[_]{$EVT} - -END_PGML - - -ENDDOCUMENT(); From 60919630c1a0c9c755f0ed73414f07781a33eb8b Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 13:33:34 -0600 Subject: [PATCH 15/29] Delete Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-ivt-jms_DO_NOT_USE.pg --- .../3-7-0-Ap-I-ivt-jms_DO_NOT_USE.pg | 43 ------------------- 1 file changed, 43 deletions(-) delete mode 100644 Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-ivt-jms_DO_NOT_USE.pg diff --git a/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-ivt-jms_DO_NOT_USE.pg b/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-ivt-jms_DO_NOT_USE.pg deleted file mode 100644 index da4611b343..0000000000 --- a/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-ivt-jms_DO_NOT_USE.pg +++ /dev/null @@ -1,43 +0,0 @@ -## DESCRIPTION -## -## ENDDESCRIPTION - -## KEYWORDS() - -## DBsubject('') -## DBchapter('') -## DBsection('') -## Date('24 February 2025') -## Author('Jerrod Smith') -## Institution('University of Calgary') - -DOCUMENT(); - -loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); - -# Uncomment the following if you don't want to show which -# answers are correct and which are incorrect -#$showPartialCorrectAnswers = 0; - -$IVT = DropDown( - [ - 'Extreme Value Theorem', - 'Intermediate Value Theorem', - 'Mean Value Theorem' - ], - 'Intermediate Value Theorem' -); - -BEGIN_PGML -Consider the following calculus problem. - -+ "For which values of the unknown constant [`A`] is the equation [``Axe^x - 1 = 0``] guaranteed to have a solution in the interval [`[0,1]`]? You do not need to solve the equation for [`x \in [0,1]`]." - -Which of the following "value theorems" would be most helpful in solving the given problem? - -[_]{$IVT} - -END_PGML - - -ENDDOCUMENT(); From 2fc23ae6ab1ca9c3270e993fa9f09963e27199cb Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 13:33:43 -0600 Subject: [PATCH 16/29] Delete Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-mvt-jms_DO_NOT_USE.pg --- .../3-7-0-Ap-I-mvt-jms_DO_NOT_USE.pg | 49 ------------------- 1 file changed, 49 deletions(-) delete mode 100644 Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-mvt-jms_DO_NOT_USE.pg diff --git a/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-mvt-jms_DO_NOT_USE.pg b/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-mvt-jms_DO_NOT_USE.pg deleted file mode 100644 index 8a251db837..0000000000 --- a/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-mvt-jms_DO_NOT_USE.pg +++ /dev/null @@ -1,49 +0,0 @@ -## DESCRIPTION -## -## ENDDESCRIPTION - -## KEYWORDS() - -## DBsubject('') -## DBchapter('') -## DBsection('') -## Date('24 February 2025') -## Author('Jerrod Smith') -## Institution('University of Calgary') - -DOCUMENT(); - -loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); - -# Uncomment the following if you don't want to show which -# answers are correct and which are incorrect -#$showPartialCorrectAnswers = 0; - -$MVT = DropDown( - [ - 'Extreme Value Theorem', - 'Intermediate Value Theorem', - 'Mean Value Theorem' - ], - 'Mean Value Theorem' -); - -$a = non_zero_random(-9,9,1); -$c = random(2,5,1); -$b = $a+$c; -$m1 = non_zero_random(2,9,1); -$m2 = $m1+$c-1; -$val = non_zero_random(-9,9,1); -BEGIN_PGML -Consider the following calculus problem. - -+ "Suppose that [`f`] is a differentiable function and [`[$m1] \leq f'(x) \leq [$m2]`] on the interval [`[[$a],[$b]]`]. If [`f([$b]) = [$val]`], what are the smallest and largest possible values for [`f([$a])`]?" - -Which of the following "value theorems" would be most helpful in solving the given problem? - -[_]{$MVT} - -END_PGML - - -ENDDOCUMENT(); From e8dd11d659975ea4db26245976e8f445106e4ec7 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 13:35:15 -0600 Subject: [PATCH 17/29] Delete Contrib/UCalgary/MATH249-WeBWork-2026.zip --- Contrib/UCalgary/MATH249-WeBWork-2026.zip | Bin 499944 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Contrib/UCalgary/MATH249-WeBWork-2026.zip diff --git a/Contrib/UCalgary/MATH249-WeBWork-2026.zip b/Contrib/UCalgary/MATH249-WeBWork-2026.zip deleted file mode 100644 index c6316c0a62ce0249dfcbf5486b5563f6bb36764a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499944 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%0D9n9h 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

  • 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

    3^wTU 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 R?Aqxa58osLYGTk7g~k)MVtQ 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�>Y!ay;SX; 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 z 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 G`TqeBw5ad^ From 82ec3747f2898568f17efa7732822aec27a8de5d Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 13:38:17 -0600 Subject: [PATCH 18/29] Delete Contrib/UCalgary/MATH_249_CLO_(High-level).docx --- Contrib/UCalgary/MATH_249_CLO_(High-level).docx | Bin 25450 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Contrib/UCalgary/MATH_249_CLO_(High-level).docx diff --git a/Contrib/UCalgary/MATH_249_CLO_(High-level).docx b/Contrib/UCalgary/MATH_249_CLO_(High-level).docx deleted file mode 100644 index 25fa857a1149b9088353f2f0bce7a1863cdb4834..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25450 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 Date: Fri, 26 Jun 2026 13:38:27 -0600 Subject: [PATCH 19/29] Delete Contrib/UCalgary/MATH_249_Revised_Learning_Outcomes_F25.xlsx --- .../MATH_249_Revised_Learning_Outcomes_F25.xlsx | Bin 64924 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Contrib/UCalgary/MATH_249_Revised_Learning_Outcomes_F25.xlsx diff --git a/Contrib/UCalgary/MATH_249_Revised_Learning_Outcomes_F25.xlsx b/Contrib/UCalgary/MATH_249_Revised_Learning_Outcomes_F25.xlsx deleted file mode 100644 index d7c86ca567e670f39486505cb24649b6a462587d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64924 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 Date: Fri, 26 Jun 2026 13:38:55 -0600 Subject: [PATCH 20/29] Add files via upload --- .../UCalgary/MATH_249_CLO_(High-level).rtf | 116 +++++++++++ ...MATH_249_Revised_Learning_Outcomes_F25.csv | 184 ++++++++++++++++++ 2 files changed, 300 insertions(+) create mode 100644 Contrib/UCalgary/MATH_249_CLO_(High-level).rtf create mode 100644 Contrib/UCalgary/MATH_249_Revised_Learning_Outcomes_F25.csv diff --git a/Contrib/UCalgary/MATH_249_CLO_(High-level).rtf b/Contrib/UCalgary/MATH_249_CLO_(High-level).rtf new file mode 100644 index 0000000000..7a6827724c --- /dev/null +++ b/Contrib/UCalgary/MATH_249_CLO_(High-level).rtf @@ -0,0 +1,116 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2822 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\froman\fcharset0 TimesNewRomanPSMT; +} +{\colortbl;\red255\green255\blue255;\red0\green0\blue0;} +{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;} +\margl1440\margr1440\vieww11520\viewh8400\viewkind0 +\deftab720 +\pard\pardeftab720\sl340\partightenfactor0 + +\f0\b\fs29\fsmilli14667 \cf2 \expnd0\expndtw0\kerning0 +MATH 249 Introductory Calculus +\f1\b0\fs32 \ + +\f0\b\fs29\fsmilli14667 Revise Course Learning Outcomes (high-level outcomes for syllabus) +\f1\b0\fs32 \ + +\f0\b\fs29\fsmilli14667 January 2025 +\f1\b0\fs32 \ + +\f0\b\fs29\fsmilli14667 \'a0 +\f1\b0\fs32 \ +\pard\pardeftab720\sl340\sa213\partightenfactor0 + +\fs29\fsmilli14667 \cf2 After completing MATH 249, learners will be able to: +\fs32 \ +\pard\pardeftab720\li960\fi-480\sl340\partightenfactor0 + +\f0\b\fs29\fsmilli14667 \cf2 1. +\f2\b0\fs18\fsmilli9333 \'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 +\f1\fs29\fsmilli14667 work with functions algebraically, graphically and symbolically; identify and interpret key features of functions (slope, intercepts, equations) +\f0\b #1-0-0-C; functions +\f1\b0\fs32 \ + +\fs29\fsmilli14667 2. +\f2\fs18\fsmilli9333 \'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 +\f1\fs29\fsmilli14667 develop fluency working with variables and equations using algebra to solve equations +\f0\b #2-0-0-C; equations +\f1\b0\fs32 \ + +\fs29\fsmilli14667 3. +\f2\fs18\fsmilli9333 \'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 +\f1\fs29\fsmilli14667 identify appropriate calculus concept or tool to solve a variety of abstract and concrete problems +\f0\b #3-0-0-C; problem-solving +\f1\b0\fs32 \ + +\f0\b\fs29\fsmilli14667 4. +\f2\b0\fs18\fsmilli9333 \'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 +\f1\fs29\fsmilli14667 use a variety of approximation techniques to solve abstract and concrete approximation problems +\f0\b #4-0-0-I; approximation; application domain +\f1\b0\fs32 \ + +\fs29\fsmilli14667 5. +\f2\fs18\fsmilli9333 \'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 +\f1\fs29\fsmilli14667 explain the concept of "limit" and how it arises in various calculus concepts; in particular continuity and the Intermediate Value Theorem +\f0\b #5-0-0-C; limits +\f1\b0\fs32 \ + +\fs29\fsmilli14667 6. +\f2\fs18\fsmilli9333 \'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 +\f1\fs29\fsmilli14667 articulate the concept of the "derivative" in terms of "rates of change" and "slope" and give a precise definition +\f0\b #6-0-0-C; derivative +\f1\b0\fs32 \ + +\fs29\fsmilli14667 7. +\f2\fs18\fsmilli9333 \'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 +\f1\fs29\fsmilli14667 identify necessary differentiation rules (product, quotient, chain) and carry out these computations for explicit and abstract functions +\f0\b #7-0-0-C; differentiation rules +\f1\b0\fs32 \ + +\fs29\fsmilli14667 8. +\f2\fs18\fsmilli9333 \'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 +\f1\fs29\fsmilli14667 interpret information about the shape/graph of a function by using information about the first and second derivative +\f0\b #8-0-0-C; graphs +\f1\b0\fs32 \ + +\fs29\fsmilli14667 9. +\f2\fs18\fsmilli9333 \'a0\'a0\'a0\'a0\'a0\'a0\'a0\'a0 +\f1\fs29\fsmilli14667 identify maximum/minimum values of a function on a given interval and solve single-variable constrained optimization problems +\f0\b #9-0-0-C; optimization +\f1\b0\fs32 \ + +\f0\b\fs29\fsmilli14667 10. +\f2\b0\fs18\fsmilli9333 \'a0\'a0 +\f1\fs29\fsmilli14667 state the Mean Value Theorem, interpret the statement of the theorem in terms of "rates of change" and "slope", and solve problems using the Mean Value Theorem +\f0\b #10-0-0-I; MVT; application domain +\f1\b0\fs32 \ + +\fs29\fsmilli14667 11. +\f2\fs18\fsmilli9333 \'a0\'a0 +\f1\fs29\fsmilli14667 state the definition of an antiderivative of a function, explain the relationship between antiderivatives, and compute antiderivatives of common functions # +\f0\b 11-0-0-C; antiderivatives +\f1\b0\fs32 \ + +\fs29\fsmilli14667 12. +\f2\fs18\fsmilli9333 \'a0\'a0 +\f1\fs29\fsmilli14667 explore the process of estimating areas under the graph of a function and develop the definition of the Riemann integral +\f0\b #12-0-0-C; area +\f1\b0\fs32 \ + +\fs29\fsmilli14667 13. +\f2\fs18\fsmilli9333 \'a0\'a0 +\f1\fs29\fsmilli14667 state the Fundamental Theorem of Calculus and explore/demonstrate the relationship between differentiation and integration +\f0\b #13-0-0-C; FTC +\f1\b0\fs32 \ +\pard\pardeftab720\li960\fi-480\sl340\sa213\partightenfactor0 + +\fs29\fsmilli14667 \cf2 14. +\f2\fs18\fsmilli9333 \'a0\'a0 +\f1\fs29\fsmilli14667 define and identify improper integrals, evaluate two types of improper integrals by direct computation and comparison +\f0\b #14-0-0-C; improper integrals +\f1\b0\fs32 \ +\pard\pardeftab720\sl340\sa213\partightenfactor0 + +\f0\b\fs29\fsmilli14667 \cf2 Learning Outcomes 4 and 10 are \'93application domain\'94 CLOs, all other learning outcomes are \'93core\'94 CLOs. To pass the course learners must demonstrate proficiency in 10 out of 12 of the core CLOs (at least 8 at the \'93met level\'94, at least two more at the \'93basic level\'94 or higher), and 1 or more of the application domain CLOs. +\f1\b0\fs32 \ +} \ No newline at end of file diff --git a/Contrib/UCalgary/MATH_249_Revised_Learning_Outcomes_F25.csv b/Contrib/UCalgary/MATH_249_Revised_Learning_Outcomes_F25.csv new file mode 100644 index 0000000000..18e806b8c5 --- /dev/null +++ b/Contrib/UCalgary/MATH_249_Revised_Learning_Outcomes_F25.csv @@ -0,0 +1,184 @@ +CLO Identifier (auto),CLO Number (edit),"Bloom's Taxonomy (R=Remembering, U=Understanding, Ap=Applying, An=Analyzing, E=Evaluating, C=Creating)","CLO Level (C=core, I=intermediate, A=advanced) (edit)",WeBWork Level Classification of CLO,Course Learning Outcome (CLO),Notes / topics / questions,Week / Meeting,WeBWork 1 (question name and type),WeBWork 2 (question name and type), WeBWork 3 (question name and type) ... 2 Q's each should be enough for most outcomes ...,WeBWork 4 +1-0-0-C,1-0-0,,C,,"work with functions algebraically, graphically and symbolically; identify and interpret key features of functions (slope, intercepts, equations)",High-level outcome (for course outline); short name: #1-0-0-C; functions,,No. of 1-0-0-C problems --- >>>,19,, +1-7-0-C-A,1-7-0,C,A,N/A,create functions that satisfy a given set of properties,,W1-M2,,,, +1-1-0-An-C,1-1-0,An,C,4,interpret key features and properties from the graph of a function,,W1-M1,1-1-0-An-C-interpret-graph1.pg; numeric and intervals; no randomization,1-1-0-An-C-graph-interval-jms.pg; interval list; read intervals of increase/decrease off the graph of a random parabola,"1-1-0-An-C-quad-linear-jms.pg; drop down; determine if graph is a linear or quadratic, if linear determine if slope is +/-", +1-2-0-An-C,1-2-0,An,C,4,switch between different representations of functions,,W1-M1,1-2-0-An-C-mc1-jms.pg; multiple choice; set builder and function notation,1-2-0-An-C-fcn-sub-jms.pg; function answer; make subsitutions of numbrers and variables in function,, +1-3-1-Ap-C,1-3-1,Ap,C,3,solve problems and make calculations involving trigonometric functions,,,1-3-1-Ap-C-eval-cos-sin-AT.pg,1-3-1-AP-C-solve-for-theta-AT.pg,, +1-3-2-Ap-C,1-3-2,Ap,C,3,solve problems and make calculations involving logarithmic functions,,,1-3-2-Ap-C-log-to-exp-jms.pg; numeric and function; given log equation write exponential equation,1-3-2-Ap-C-exp-to-log-jms.pg; numeric and function; givenexp equation write logarithm,, +1-3-3-Ap-C,1-3-3,Ap,C,3,solve problems and make calculations involving exponential functions,,,,,, +1-3-4-Ap-C,1-3-4,Ap,C,3,solve problems and make calculations involving piecewise functions,,W1-M2,,,, +1-3-5-Ap-C,1-3-5,Ap,C,3,solve problems and make calculations involving polynomial and algebraic functions,,,,,, +1-4-0-U-C,1-4-0,U,C,2,identify different classes of common functions ,,W1-M1,1-4-0-U-C-rational1-jms.pg; multiselect; choose rational functions,1-4-0-U-C-drop-down-jms_1.pg; drop down; choose best description of type of function,, +1-6-0-U-C,1-6-0,U,C,2,"identify components of a function (domain, codomain, definition, image)",,W1-M1,1-6-0-U-C-rational-dom-jms.pg; interval (union); find domain of rational function,1-6-0-U-C-alg-dom-dg.pg; interval (union); find domain of algebraic function (Danny's template example),, +1-1-1-U-C,1-1-1,U,C,2,identify the slope and intercept from the graph of a linear function,,W1-M2,"1-1-1-U-C-slope-int-1-jms.pg; numeric; identify slope, x and y intercepts from a random linear graph (positive slope)","1-1-1-U-C-slope-int-2-jms.pg; numeric; identify slope, x intercepts from a random linear graph + calculuate y-int (negative slope)",, +1-10-0-U-C,1-10-0,U,C,2,identify when a function is invertible,,W1-M2,,,, +1-1-3-U-C,1-1-3,U,C,2,interpret the meaning of a slope algebraically in terms of change in dependent/independent variables,"e-g-, if m = 3 and Delta x = 2, then Delta y = 6",W1-M2,"1-1-3-U-C-delta-slope-jms.pg; numeric; random line, calculate change in x and y given random changes (one increase, one decrease) in two parts",1-1-3-U-C-point-slope-jms.pg; numeric and function; find slope and equation of line joining two randomly generated points,, +1-1-4-U-C,1-1-4,U,C,2,interpret the meaning of an intercept algebraically in terms of solutions to equations,"e-g-, if the x intercept of y=f(x) is x = 2, then f(2) = 0",W1-M2,1-1-4-U-C-num-int-jms.pg; numeric; fill in interpretation of x and y intercepts given unknown function and random values,1-1-4-U-C-int-from-eq-jms.pg; drop down + numeric; given equations identify intercepts,, +1-5-0-E-I,1-5-0,E,I,4,identify appropriate types of functions for various calculus problems/applications,,,,,, +1-2-1-E-I,1-2-1,E,I,4,identify appropriate representations of functions for communicating information,,W1-M1,,,, +1-2-2-An-I,1-2-2,An,I,4,conceptualize functions as transformations or operations,,W1-M1,,,, +1-8-0-C-I,1-8-0,C,I,N/A,do math with bad pictures (develop intuitive sense of salient features of a function graphically),,,,,, +2-0-0-C,2-0-0,,C,,develop fluency working with variables and equations using algebra to solve equations,"High-level outcome (for course outline); short name #2-0-0-C; equations ** This really should be a course ""in-come""",,No. of 2-0-0-C problems --- >>>,17,Make 3 each here!, +2-1-0-Ap-C,2-1-0,Ap,C,3,factor polynomial functions of degree less than or equal to 3,,,2-1-0-Ap-C-factor-root-jms.pg; numeric list; factor non-monic quadratic to find distinct roots,2-1-0-Ap-C-factor-root-v2-jms.pg; numeric list; factor monic cubic with root x=0 to find distinct roots of resulting monic quadratic,2-1-0-Ap-C-factor-blanks-jms.pg; numeric; fill-in coefficients to factor quadratic based on a pre-determined pattern (x+b)(cx+a),2-1-0-Ap-C-factor-blanks-v2-jms.pg; numeric; fill-in variable or coefficients to factor cubic based on a pre-determined pattern x(x+b)(cx+a) +2-2-0-Ap-C,2-2-0,Ap,C,3,solve equations involving common functions in the course,,,2-2-0-Ap-C-quad-log-jms.pg; numeric list; solve quadratic equation with log variable,2-2-0-Ap-C-abs-quad-jms.pg; numeric list; solve equation with absolute value and quadratic,, +2-2-1-Ap-C,2-2-1,Ap,C,3,solve equations involving polynomial functions,,,"2-2-1-Ap-C-poly-int-jms.pg; list of points; find intersection point of quadratic and linear; sometimes no solution, integer solutions, one case of irrational solutions",2-2-1-Ap-C-poly-int-v2-jms.pg; numeric list; find intersection to two quadratics; integer solutions (sometimes large) or no solutions; revised version of other problem,2-2-1-Ap-C-quad-lin-int-jms.pg; find intersection point of quadratic and linear; integer solutions or no solutions; same problem as poly-int-v2 but with f and g changed, +2-2-2-Ap-C,2-2-2,Ap,C,3,solve equations involving logarithmic and exponential functions,,,2-2-2-Ap-C-quad-log-dist-jms.pg; numeric; solve quadratic equation with log variable with distinct roots ordered large to small,2-2-2-Ap-C-exp-log-jms.pg; list; no solutions to a log/exp equation,2-2-2-Ap-C-lin-log-jms.pg; numeric list; linear factor with log variable; x=0 not in the domain so only one solution, +2-2-3-Ap-C,2-2-3,Ap,C,3,solve equations involving trigonometric functions (with or without domain restrictions),,,"2-2-3-Ap-C-sin-eq-jms.pg; numeric or numeric list; solve sin(x) = sin(2x) or sin(x) = sin(3x) for x in (0,pi)","2-2-3-Ap-C-cos-eq-jms.pg; numeric; solve cos(x) = cos(2x) or cos(x) = cos(3x) for x in (0,pi)","2-2-3-Ap-C-trig-x-jms.pg; numeric or numeric list; solve either x+sin(2x) = x or x+cos(2x) = x for x in (0,pi)", +2-3-0-An-C,2-3-0,An,C,4,translate between symbolic equations and information presented in other ways,,,"249-2-0-0-C/2-3-0-An-C/2-3-0-An-C-tnslt-ineq-cmm.pg; multiple choice; sentence invovling sqr rt, inequality, and multiplication with two variables x and y; translate sentence into symbolic equation .","249-2-0-0-C/2-3-0-An-C/2-3-0-An-C-tnslt-eqtn-cmm.pg; multiple choice; symbolic euqation given with inequality, root, and power; translate symbolic equation into sentence. ",, +2-3-1-U-C,2-3-1,U,C,2,"represent solutions to equations graphically (intersections, roots, intercepts)",,,,,, +3-0-0-C,3-0-0,,C,,identify appropriate calculus concept or tool to solve a variety of abstract and concrete problems,High-level outcome (for course outline); short name #3-0-0-C; problem-solving,,No. of 3-0-0-C problems --- >>>,10,, +3-3-0-C-A,3-3-0,C,A,N/A,create problems that do/do not involve calculus in their solution,,,,,, +3-1-0-Ap-I,3-1-0,Ap,I,5,translate a word problem into an abstract calculus problem,,,"3-1-0-Ap-I-opt-funct-jms.pg; function, given an optimization problem, choose the correct objective function to optimize; drop down; choose the type of problem this is (to see if learners would know where to look for additional information on how to solve...)","3-1-0-Ap-I-approx-funct-jms.pg; given a numerical approximation problem, choose a function to use for a Taylor Polynomial calcultation at a given centre; choose the type of problem from a drop down",, +3-2-0-E-I,3-2-0,E,I,4 or 5,"identify practical, concrete situations where calculus is a useful tool",WeBWork level 5 = word problems,,,,, +3-4-0-E-I,3-4-0,E,I,4,"choose an appropriate approximation technique to approximate values of functions, roots of functions, or (percentage) change in functions","values of functions (linear or taylor polynomial), roots of functions (IVT or Newton's method), change in a function (differentials)",,"3-4-0-E-I-approx-choice-jms.pg; drop down, choosing approximation method given two specific approximation problems","3-4-0-E-I-approx-choice-v2-jms.pg (versioned question); drop down, choosing approximation method given two specific approximation problems",, +3-5-1-Ap-I,3-5-1,Ap,I,3,choose an appropriate optimization technique to solve abstract optimization problems,"Make sure students know the language ""Closed Interval Method"" and ""Global Interval Method"" in the case of one critical point for optimization problems, given domain and number of critical points should influence choice of method",,"3-5-1-Ap-I-opt-choice-jms.pg; drop down (yes/no); given an abstract or standard box optimization problem, determine if the Closed Interval Method can be used.",3-5-1-Ap-I-second-der-test-jms.pg; drop down and numeric; given data about two critical points choose correct method and conclusion abuout an extrema,3-5-1-Ap-I-first-der-test-jms.pg; drop down and numeric; given data about one critical and intervals choose correct method and conclusion abuout an extrema between First Derivative Test / Global Interval Method, +3-5-2-Ap-I,3-5-2,Ap,I,5,choose an appropriate optimization technique to solve optimization word problems,"will typically involve finding a domain first, then doing above",,,,, +3-6-0-Ap-I,3-6-0,Ap,I,3,choose between using derivatives or antiderivatives (integrals) to solve problems involving rates of change,,,"3-6-0-Ap-I-drop-down-jms.pg; drop down; generic problem description choose ""derivative"" ""integral"" or ""no calculus required""","3-6-0-Ap-I-drop-down-detail-jms.pg; drop down; specific/detailed problem description choose ""derivative"" ""indefinite integral"" or ""definite integral""",, +3-7-0-Ap-I,3-7-0,Ap,I,3,"identify when a major ""value"" theorem (EVT, IVT, MVT) can be used to solve a problem",,,3-7-0-Ap-I-drop-down-jms.pg; drop down; choose correct name for each of the value theorems with statements given,3-7-0-Ap-I-value-choice-jms.pg; drop-down; randomly chooses on of the three problems to the right of this entry,3-7-0-Ap-I-mvt-jms.pg; drop down; given abstract problem choose the best theorem to help solve the problem (MVT),3-7-0-Ap-I-ivt-jms.pg; drop down; given abstract problem choose the best theorem to help solve the problem (IVT) +4-0-0-I,4-0-0,,I,,use a variety of approximation techniques to solve abstract and concrete approximation problems,High-level outcome (for course outline); short name #4-0-0-I; approximation,,No. of 4-0-0-C problems --- >>>,21,, +4-1-1-Ap-C,4-1-1,Ap,C,3,implement linear approximation to approximate numerical values of a function,,,4-1-1-Ap-C-root-jms.pg.; numeric; linear approximation of a square root of a number given a function and the point to approximate at,4-1-1-Ap-C-power-jms.pg.tmp; numeric; approximate (integer + x/100)^power with linear approximation; no function or point given,4-1-1-Ap-C-log-jms.pg; numeric; linear approximation of ln(a+x/100) with a close to 1, +4-2-1-Ap-C,4-2-1,Ap,C,3,implement Taylor Polynomial approximation to approximate numerical values of a function,,,4-2-1-Ap-C-taylor-poly-approx-AT.pg,,, +4-2-2-Ap-I,4-2-2,Ap,I,3,use Taylor's Remainder Theorem to estimate the error in a Taylor Polynomial approximation,,,4-2-2-Ap-I-taylor-remainder-approx-AT.pg,,, +4-2-3-Ap-I,4-2-3,Ap,I,3,use Taylor's Remainder Theorem to identify the degree of Taylor Polynomial approximation required to reach a given error threshold,,,4-2-3-Ap-I-taylor-poly-degree-AT.pg,,, +4-1-2-E-I,4-1-2,E,I,4,determine if a linear approximation is an over/under estimate by using the second derivative and concavity,Need to know about concavity to do first two problems; last problem can be done earlier since a graph is given,,4-1-2-E-I-poly-over-under-jms.pg; drop down; determine over or under value of odd deg polynomial for point left/right of IP; solution using second derivative,4-1-2-E-I-abstract-over-under-jms.pg; drop down; determine over or under for unknown function given information about f' and f'' on an interval; solution uses concavity,4-1-2-E-I-graph-overunder-jms.pg; multiple choice and drop down; given graph choose correct linear approximation and determine if over/under estimate, +4-3-1-Ap-I,4-3-1,Ap,I,3,implement differential approximation to estimate the change in a function given the change in the independent/dependent variable,Related to 11-5-4-Ap-C; using differentials in the context of integration by substitution,,4-3-1-Ap-I-demand-change-jms.pg; numeric; given demand function find approximate change in demand given a price decrease,4-3-1-Ap-I-fcn-change1-jms.pg; function and numeric; compute differential of polynomial and then compute approximate change and actual change in f given initial and final values of x,"4-3-1-Ap-I-fcn-change-2-jms.pg; fundtion and numeric; given initial point and change in x, find differential, approximate change in x and actual change in x.","4-3-1-Ap-I-fcn-change-3-jms; function and numeric; with a square root of (x-a); differential, approximate change in f, and actual change in x and f" +4-3-2-Ap-I,4-3-2,Ap,I,3,implement differential approximation to estimate the percent change in a function given the percent change in the independent variable,Related to 11-5-4-Ap-C; using differentials in the context of integration by substitution,,"4-3-2-Ap-I-percent-sphere-jms.pg; numeric; given percent change in surface area of sphere, find corresponding percentage change in radius and volume; phrased as a physics application","4-3-2-Ap-I-percent-change-jms; numeric and drop down; given quantity that depends on power of x (pos/neg) and percent change in x, find percent change in A and determine inc/dec","4-3-2-Ap-I-percent-change-2-jms.pg; given y = f(x) and percent change in x (inc/dec), determine percent change in y (signed +/-)", +4-3-3-Ap-I,4-3-3,Ap,I,3,use the Intermediate Value Theorem as a coarse method of approximating roots of functions,,,4-3-3-Ap-I-ivt-mc-jms.pg; multiple choice; given data table choose smallest interval where IVT gives a solution to 0=f(x),"4-3-3-Ap-I-ivt-mc-no-sol-jms.pg; same as 4-3-3-Ap-I-ivt-mc-jms.pg; multiple choice; given data table choose smallest interval where IVT gives a solution to 0=f(x) but all function values have the same sign so ""none of the above"" is correct",, +4-4-0-Ap-C,4-4-0,Ap,C,3,use Newton's Method to approximate roots of functions,,,4-4-0-Ap-C-nm-exp-jms.pg; numeric; 3 iterations of Newton's Method. Similar equation to one that appears in a 3-0-0-C question where they need to choose the method. ,4-4-0-Ap-C-nm-cubic-jms.pg; three iterations of Newton's Method to approximate root of a cubic. Similar to one that appears in a 3-0-0-C question where they need to choose the method.,4-4-0-Ap-C-nm-log-jms.pg; numeric; 3 iterations of Newton's Method; have to rearrange to get function first; will always be accurate to 5 decimal places after 4 iterations (highlighted in the solution), +4-4-1-E-I,4-4-1,E,I,4,"evaluate situations where Newton's Method fails to approximate a root of a function due to a poor initial estimate (e.g., oscillation between two roots), arriving at a derivative that is equal to zero, or the fact that there is no root",,,,,, +5-0-0-C,5-0-0,,C,,"explain the concept of ""limit"" and how it arises in various calculus concepts; in particular continuity and the Intermediate Value Theorem",High-level outcome (for course outline); short name: #5-0-0-C; limits,,No. of 5-0-0-C problems --- >>>,42,, +5-6-3-An-A,5-6-3,An,A,4,explore how the assumption of continuity is necessary to apply the Intermediate Value Theorem,,,,,, +5-1-1-R-C,5-1-1,R,C,1,state a precise definition of what it means for a limit to exist,Any quiz should only have at most one of the following questions; solution not provided,,5-1-1-R-C-defn-mc-jms.pg; mutliple choice; definition of a limit; abstract function random explicit value,5-1-1-R-C-defn-inf-mc-jms.pg; multiple choice; definition of a limit at infinity; abstract function random explicit value,5-1-1-R-C-defn-neg-inf-mc-jms.pg; multiple choice; definition of a limit at infinity; abstract function random explicit value,"5-1-1-R-C-defn-inf-lim-mc-jms.pg; multiple choice, definition of infinite limit; abstract function random value to approach" +5-2-1-An-C,5-2-1,An,C,4,determine if the limit of a function (including piecewise) exists graphically,,,5-2-1-An-C-limit-graph-1-jms.pg; numeric; randomly generated graph of piecewise function; either asks about one-sided and two-sided limits at -2 or 2; two-sided limit may or may not exist (getting at notational issues with +/- 2 and one-sided),"5-2-1-An-C-limit-graph-2-jms.pg; numeric; one-sided limits, two-sided limit DNE, asks for value of function at -3 or 1; randomly generated piecewie function graph given","5-2-1-An-C-limit-graph-3-jms.pg; graph with a removable discontinuity; asks for two-sided limit, value of the function; and either the right or left limit at a point with a jump discontintuity", +5-2-2-An-C,5-2-2,An,C,4,defermine if the limit of a function exists analytically/algebraically,,,5-2-2-An-C-compute-limits-1-jms.pg; numeric; two limits; both exist; one direct subsitution (Danny's template); one one-sided factor and cancel with an absolute value to deal with,5-2-2-An-C-compute-limits-2-jms.pg; numeric; ratio of quadratics (answer is always 0); absolute value two-sided (answer is always DNE),5-2-2-An-C-compute-limits-3-inf-jms.pg; reciprocal of a difference of squares; one-sided limits and two sided; one sided will be +/- inf and two sided will not exist, +5-2-3-An-C,5-2-3,An,C,4,determine if the limit of a piecewise function exists analytically,,,5-2-3-An-C-pw-limit-1-jms.pg; numeric; piecewise function with two pieces; compute two one-sided limits always using two different pieces,5-2-3-An-C-pw-limit-2-jms.pg; numeric; piecewise function (similar to last example); compute one and two sided limits at one point; two sided limit may or may not exist (exists ~15% of cases),5-2-3-An-C-pw-limit-3-jms.pg; numeric; piecewise funciton with 3 pieces; two two-sided limits; first limit exists 33% of the time; second exists 50% of the time, +5-3-1-U-C,5-3-1,U,C,2,determine if L'Hopital's Rule can be applied to compute a given limit,L'Hôpital's Rule will be covered later in the semester than other limit problems,,5-3-1-U-C-ms-lhop-jms.pg; multiselect; choose limits where L'Hopital's Rule can be applied,5-3-1-U-C-ms-lhop-v2-jms.pg; multiselect; choose limits where L'Hopital's Rule can be applied,, +5-3-2-Ap-C,5-3-2,Ap,C,3,use L'Hopital's Rule to compute a limit of Type 0/0 or infinity/infinity,L'Hôpital's Rule will be covered later in the semester than other limit problems,,5-3-2-Ap-C-compute-lhop-1-jms.pg; numeric; two limits; one type 0/0 and one inf/inf; second is always 0,5-3-2-Ap-C-compute-lhop-2-jms.pg; numeric; both exist; both type 0/0; need to use L'Hôpital twice for second limit,5-3-2-Ap-C-compute-lhop-3-jms.pg ; numeric; Both type inf/inf but L'Hoptial is not the best approach; algebraic funciton sqrt(x^2)/x to pm infty; solution does not use L'Hopital, +5-3-5-E-I,5-3-5,E,I,4,recognize that L'Hoptial's Rule has been applied incorrectly in a given calculation,L'Hôpital's Rule will be covered later in the semester than other limit problems,,,,, +5-4-1-U-C,5-4-1,U,C,2,explain the relationship between limits and vertical/horizontal asymptotes of a function,,,5-4-1-U-C-asymp-dd-jms.pg; drop down and numeric; given information about two limits choose if funciton has a horizontal/vertical asymptote; choose equation as x/y = numeric blank,5-4-1-U-C-asymp-num-dd-jms.pg; given simple function; compute two limits and identify type of asymptote and equation; simiilar to other quesiton here but adds one additional step but less versioning,, +5-4-2-Ap-C,5-4-2,Ap,C,3,identify the vertical/horizontal asmptoes of a function by computing limits,,,5-4-2-Ap-C-asymp-vert-jms.pg; numeric; given rational function identify point where there is a vertical asymptote and compute a one-sided limit; identify a point where the funciton is undefined but there is no vertical asymptote,5-4-2-Ap-C-asymp-horiz-jms.pg; numeric; given rational function with equal largest power in numerator and denominator find limit at +/- infinity and state equation of horizontal asymptote.,5-4-2-Ap-C-asymp-horiz-2-jms.pg; numeric; compute limit at infinity of function with exp(-x) and state horizontal asymptote equation y = L, +5-4-5-U-C,5-4-5,U,C,2,"recognize that a function may ""cross"" its horizontal asymptotes",,,5-4-5-U-C-t-f-asmp-1-jms.pg; drop down with graph of function (sine) and asymptote; true or false limit at infinity (Squeeze Theorem) and statement about horizontal asymptote,5-4-5-U-C-t-f-asmp-2-jms.pg; drop down with graph of function (cosine) and asymptote; true or false limit at infinity (Squeeze Theorem) and statement about horizontal asymptote,, +5-5-0-R-C,5-5-0,R,C,1,state a precise definition of what it means for a function to be continuous at a point,,,5-5-0-R-C-cont-def-dd-jms.pg; drop down and numeric; table of values given for a function and continuity at a point definition is asked for,,, +5-5-1-U-C,5-5-1,U,C,2,"recognize types of discontinuities (removable, jump, infinite) given the graph of a function",Using same graph code as 5-2-1-An-C questions above; question changed to drop-down; two bold questions are likely enough and capture more situations with randomization / question design,,"5-5-1-U-C-discon-graph-1-jms.pg; dropdown; given graph of piecewise function, either has a jump discontinuity or is continuous at +/-2",5-5-1-U-C-dicon-graph-2-jms.pg; drop down and numeric; jump and infinite discontinuity at -3 and 1 respectively; also asks for numeric answers for limits from the graph to give the justification for the type of discontinuity.,"5-5-1-U-C-discon-graph-3-jms.pg; drop down; one point always a removable discontinuity; other point is either a jump, removable or is continuous", +5-5-2-U-C,5-5-2,U,C,2,"recognize types of discontinuities (removable, jump, infinite) given an algebraic or piecewise expression for a function",,,5-5-2-U-C-pw-cont-1-jms.pg; drop down; piecewise function from 5-2-3-An-C-pw-limit-3-jms.pg; either continuous or jump discontinuity,5-5-2-U-C-pw-cont-2-jms.pg; two pieces; internal to two intervals there are removable / infinite discontinuity (switches places); do not ask about points where pieces join intentionally,, +5-5-4-Ap-C,5-5-4,Ap,C,3,find the intervals where a given piecewise function is continuous,,,"5-5-4-Ap-C-cont-int-1-jms.pg; interval; piecewise with two parts; one part has a discontinuity inside its interval of defn; very rarely randomization will make the function continuous at the point where the two parts are joined (a=1,b=6,c=-2,m=3)","5-5-4-Ap-C-cont-int-2-jms.pg; interval; piecewise with two functions and a point defined; one piece always infinite discontinuity at 0; at point where functions join could be continuous, removable or jump.",, +5-6-2-Ap-C,5-6-2,Ap,C,3,apply the Intermediate Value Theorem to make conclusion about the roots of continuous functions,Question from 4-0-0-C above,,4-3-3-Ap-I-ivt-mc-jms.pg; problem can also be used for 5-6-2-Ap-C,,, +5-3-0-R-I,5-3-0,R,I,1,state L'Hopital's Rule,L'Hôpital's Rule will be covered later in the semester than other limit problems,,,,, +5-3-3-Ap-I,5-3-3,Ap,I,3,manipulate an indeterminate limit into a Type 0/0 or infinity/infinity limit,L'Hôpital's Rule will be covered later in the semester than other limit problems,,249-5-0-0-C/5-3-3-Ap-I/5-3-3-Ap-I-manip-lhop-1-cmm.pg; infinity times 0 type; asked to re-write as infinity/infinity form and enter the numerator/denominator expressions,249-5-0-0-C/5-3-3-Ap-I/5-3-3-Ap-I-manip-lhop-2-cmm.pg; 1^{infinity} type; asked to re-write as infinity/infinity form and enter the numerator/denominator expressions ,, +5-3-4-Ap-I,5-3-4,Ap,I,3,use L'Hopital's Rule to compute an indeterminate limit that is not presented as Type 0/0 or infinity/infinity,L'Hôpital's Rule will be covered later in the semester than other limit problems,,5-3-4-Ap-I-compute-lhop-power-jms.pg; numeric; gives one of two limits of Type 1^inf; one needs L'Hopital once the other twice,5-3-4-Ap-I-compute-lhop-product-jms.pg; infinity times 0 type with trig function; answer is nonzero and finite,5-3-4-Ap-I-compute-lhop-difference-jms.pg; infinity - infinity; use L'Hop twice; answer is coefficient/2, +5-5-3-R-I,5-5-3,R,I,1,"state the precise definition of different types of discontinuities (removable, jump, infinite)",,,5-5-3-R-I-discon-defn-jms.pg; drop-down; match name of discontinuity to the given definition,,, +5-5-5-Ap-I,5-5-5,Ap,I,3,find unknown constants in a given piecewise function in order to make the function continuous everwhere,,,5-5-5-Ap-I-const-cont-1-jms.pg; numeric list; solve a quadratic to find all values that make a piecewise function continuous at x=-1,"5-5-5-Ap-I-const-cont-2-jms.pg; solve a quadratic to find all values that make a piecewise function continuous at 2, 3, 4 or 5; allows for a repeated root to be entered only once",5-5-5-Ap-I-const-cont-3-jms.pg; numeric; piecewise with three pieces; solve two quadratics with only one root in common that makes the function continuous everwhere, +5-6-1-R-I,5-6-1,R,I,1,state the Intermediate Value Theorem,,,,,, +6-0-0-C,6-0-0,,C,,"articulate the concept of the ""derivative"" in terms of ""rates of change"" and ""slope"" and give a precise definition",High-level outcome (for course outline); short name #6-0-0-C; derivative,,No. of 6-0-0-C problems --- >>>,24,, +6-1-0-U-C,6-1-0,U,C,2,interpret rates of change in practical/applied contexts as the derivative of a function,,,"6-1-0-U-C-vel-acc-dd-jms.pg; drop-down, numeric and function; derivative of position is velocity; find when velocity is zero for a polynomial position function; asks for acceleration as a funciton of t",6-1-0-U-C-reaction-dd-jms.pg; drop-down and interval; given function that describes concentration; need to know/interpret increasing and decreasing in terms of sign; given intervals where inceasing/decreasing given simple derivative with e^x(x-a),6-1-0-U-C-cost-dd-jms.pg; drop down and numeric; marginal cost as inst rate of change; compute change in cost; interpret marginal cost as C(x+1)-C(x),6-1-0-U-C-pop-dd-jms.pg; drop down only; population; includes question about the graph and slope; asks to inperpret population as increasing/decreasing +6-1-1-R-C,6-1-1,R,C,1,state a precise definition of the derivative of a function at a point,,,6-1-1-R-C-defn-pt-1-jms.pg; numeric and function; power of x and sqrt(x),,, +6-1-2-R-C,6-1-2,R,C,1,state a precise definition of the derivative of a function as a function in its own right,,,6-1-2-R-C-defn-fcn-1-jms.pg; function; +sin(x) +/- ln(x),6-1-2-R-C-defn-fcn-2-jms.pg; function; ln(x) - cos(x),, +6-3-0-Ap-C,6-3-0,Ap,C,3,compute derivatives of simple algebraic functions by using the definition of the derivative,,,,,, +6-3-1-Ap-C,6-3-1,Ap,C,3,compute the equation of the tangent line to the graph of a function at a given point,,,"6-3-1-Ap-C-fcn-to-line-1-jms.pg; numeric; function; find derivative, find slope, find equation of line and find point on the graph",6-3-1-Ap-C-slope-1-jms.pg; numeric; find slope of a secant line and slope of a tangent line to a polynomial (neat: integer points will always give integer slope of secant lines),"6-3-1-Ap-C-fcn-to-line-2-jms.pg; numeric; function; GIVEN derivative, slope, equation of tangent line and point; trigonometric function", +6-9-1-U-C,6-9-1,U,C,2,"interpret ""slope of functions"" using the derivative analytically/algebraically",,,6-9-1-U-C-line-to-fcn-1-jms.pg; numeric; given equation of the tangent line find f(a) and f'(a),"6-9-1-U-C-line-to-fcn-2-jms.pg; numeric; given equation of the tangent line find f(a) and f'(a); includes ""pi"" in the slope to make it look superficially different",, +6-9-2-U-C,6-9-2,U,C,2,"interpret ""slope of functions"" using the derivative graphically",,,6-9-2-U-C-der-from-graph-1-jms.pg; numeric; function; given graph of piecewise function (all line segments); find slope and equation of tangent line to one of four points,"6-9-2-U-C-der-dne-graph-1-jms.pg; numeric list; given piecewise linear graph find points where derivative does not exist, could be 2, 1 or 0 (somtimes hard to see!); hint and solution provided",6-9-2-U-C-der-zero-graph-1-jms.pg; numeric list; given graph of a cubic find the two points where the derivative is equal to 0; always two distinct points ... easier to get the graph to appear reasonable this way,6-9-2-U-C-der-zero-graph-2-jms.pg; given graph of a cubic find the ONE points where the derivative is equal to 0; ... easier to get the graph to appear reasonable this way +6-10-1-Ap-C,6-10-1,Ap,C,3,calculate values and derivatives of the inverse of a function (abstractly),,,6-10-1-Ap-C-inv-table-1-jms.pg; numeric; given table of values find f^{-1}(pt) and (f^{-1})'(pt); 4 random points; picks one point to ask fo,"6-10-1-Ap-C-inv-table-2-jms.pg; numeric; fill in table of values for f, f-inv, fder, f-inv-der; some values of the table are unknown; probably HARD because there are 9 blanks and 3 DNE?",6-10-1-Ap-C-inv-der-from-graph-1-jms.pg; given graph of piecewise decreasing function find derivative of function and inverse funciton where you need to use two different line segments for each derivative, +6-10-2-Ap-C,6-10-2,Ap,C,3,calculate values and derivatives of the inverse of a trigonometric function,,,"6-10-2-Ap-C-inv-trig-1-jms.pg; numeric; two values of inverse trig functions one sin^-1(special), cos^-1(sin)=cos^-1(-1), one derivative of sin^-1",6-10-2-Ap-C-inv-trig-2-jms.pg; numeric; derivative of cos^-1 and tan^-1 at the same point,, +6-2-0-U-I,6-2-0,U,I,2,recognize when a given limit is equal to the derivative of a function,,,,,, +6-2-1-Ap-I,6-2-1,Ap,I,3,compute sophisticated limits by recognizing them as derivatives and using the derivative to evaluate the limit,,,249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-1-cmm.pg; find the derivative using the chain rule; involves the sine function; presented as a limit calculation using the limit definition of the derivative. ,249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-2-cmm.pg; find the derivative using the chain rule; involves e^x; presented as a limit calculation using the limit definition of the derivative.,249-6-0-0-C/6-2-1-Ap-I/6-2-1-Ap-I-trkylmt-deriv-3-cmm.pg; find the derivative using the chain rule; involves a*ln(X); presented as a limit calculation using the limit definition of the derivative. , +7-0-0-C,7-0-0,,C,,"identify necessary differentiation rules (product, quotient, chain) and carry out these computations for explicit and abstract functions",High-level outcome (for course outline); short name: #7-0-0-C; differentiation rules,,No. of 7-0-0-C problems --- >>>,16,Make 3 each here!, +7-1-0-U-C,7-1-0,U,C,2,identify necessary differentiation rules to evaluate the derivative of a given function,,,,,, +7-2-1-Ap-C,7-2-1,Ap,C,3,compute the derivative of a function with the product rule,,,7-2-1-Ap-C-simple-prod1-mlb.pg; function; product derive of poly*trig,7-2-1-Ap-C-simple-prod2-mlb.pg; function; product derive of poly*trig,7-2-1-Ap-C-prod-mlb.pg; function; product derive of (poly+trig)*(poly+exp), +7-2-2-Ap-C,7-2-2,Ap,C,3,compute the derivative of a function with the quotient rule,,,7-2-1-Ap-C-simple-quo1-mlb.pg; function; product derive of poly/poly,7-2-1-Ap-C-simple-quo2-mlb.pg; function; product derive of poly/trig,7-2-1-Ap-C-quo-mlb.pg; function; product derive of (poly + exp)/(poly + trig), +7-2-3-Ap-C,7-2-3,Ap,C,3,compute the derivative of a funciton with the chain rule,,,7-2-3-Ap-C-simple-chain1-mlb.pg; function; power rule - poly^int,7-2-3-Ap-C-simple-chain2-mlb.pg; function; power rule - tri(poly),, +7-2-4-Ap-I,7-2-4,Ap,I,3,compute the derivative of a function requiring multiple applications of the product rule,,,249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-1-cmm.pg; function; multiple uses of the product rule; trig and polys. ,249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-2-cmm.pg; function; multiple uses of the product rule; e^x and polys. ,249-7-0-0-C/7-2-4-Ap-I/7-2-4-Ap-I-mtpl-prod-3-cmm.pg; function; multiple uses of the product rule to find f'(a) at a given value x=a. , +7-2-5-Ap-I,7-2-5,Ap,I,3,compute the derivative of a function requiring multiple applications of the chain rule,,,249-7-0-0-C/7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-1-cmm.pg; function; multiple uses of the chain rule; ()^pwr + e^((x)^a). ,"249-7-0-0-C/7-2-5-Ap-I/7-2-5-Ap-I-mtpl-chain-2-cmm.pg; function; multiple uses of the chain rule to find g'(x) at x=a with f(a), f'(a) provided.",, +7-2-6-Ap-I,7-2-6,Ap,I,3,compute the derivative of a function requiring a combination of the product/quotient and chain rules,,,249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-1-cmm.pg; function; quotient rule; multiple uses of the chain rule. ,249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-2-cmm.pg; function; product rule; multiple uses of the chain rule. ,249-7-0-0-C/7-2-6-Ap-I/7-2-6-Ap-I-mtpl-prod-chain-3-cmm.pg; function; quotient rule; multiple uses of the chain rule to find the derivative of f(x) at a given x=a. , +8-0-0-C,8-0-0,,C,,interpret information about the shape/graph of a function by using information about the first and second derivative,High-level outcome (for course outline); short name: #8-0-0-C; graphs,,No. of 8-0-0-C problems --- >>>,27,, +8-1-2-U-C,8-1-2,U,C,2,identify intervals where a function is increasing/decreasing given the graph of the original function,,,1-1-0-An-C-graph-interval-jms.pg; interval list; read intervals of increase/decrease off the graph of a random parabola,"8-1-2-U-C-pw-inc-dec-1-jms.pg; dropdown; random piecewise linear generated; askes about three intervals (at random); one using and enpoint, one small interior (inc/dec/constant), one concatenated interval (inc/dec/constant/NEITHER)",8-1-2-U-C-cubic-inc-dec-jms.pg; interval; given graph of cubic; find intervals of increase/decrase; uses the same cubic graph as 6-9-2-U-C-der-zero-graph-1-jms.pg,8-1-2-U-C-quart-inc-dec-jms.pg; interval; find intervals of increase/decrase given graph of a generic quartic (derivative with distinct roots) +8-1-3-U-C,8-1-3,U,C,2,identify intervals where a function is increasing/decreasing given the graph of the derivative,,,8-1-3-U-C-pw-der-inc-dec-1-jms.pg; dropdown; piecewise linear graph of derivative; two of four intervals randomly chosen; asked about f inc/dec with justification,"8-1-3-U-C-pw-der-inc-dec-2-jms.pg; piecewise smooth version of question; two of four intervals randomly chosen (one on end, one in middle); asked about f inc/dec with justification","8-1-3-U-C-der-cubic-inc-dec-jms.pg; interval and numeric; given graph of a cubic that is the derivative of a function, find intervals of increase/decrease",8-1-3-U-C-der-quart-inc-dec-jms.pg; intervals; given graph of a quartic that is the derivative of a function; find intervals of increase/decrease; one repeated root so two intervals next to each other with the same behaviour +8-1-1-R-C,8-1-1,R,C,1,state what it means for a function to be increasing/decreasing in terms of the derivative,Ask only one of 8-1-1-R-C-state-der-inc-dec-jms.pg or 8-1-1-R-C-state-der-inc-dec-2-jms.pg on an assessment.,,8-1-3-U-C-pw-der-inc-dec-1-jms.pg; dropdown; from above includes this outcome as well as interpreting the graph of the derivative,8-1-1-R-C-state-der-inc-dec-jms.pg; dropdown; given increasing/decreasing choose pos/neg for deriative; includes choosing the universal quantifier,8-1-1-R-C-state-der-inc-dec-2-jms.pg; given derivative pos/negative choose if function is increasing/decreasing; includes choosing the universal quantifier, +8-2-3-U-C,8-2-3,U,C,2,identify intervals where a function is concave up/down given the graph of the original function,,,8-2-3-U-C-concave-original-1-jms.pg; intervals; graph of cubic with nonzero integer inflection point,8-2-3-U-C-concave-original-2-jms.pg; interal; graph of quartic with two distinct nonzero integer inflection points,, +8-2-5-U-C,8-2-5,U,C,2,identify intervals where a function is concave up/down given the graph of the second derivative,,,"8-2-5-U-C-pw-second-der-concave-1-jms.pg; dropdown; piecewice smooth second derivative graph; determine concave up/down on two of four random intervals (one on end, one in middle); indicate sign of second derivative (modified version of code from 8-1-3-U-C-pw-der-inc-dec-1-jms.pg)",8-2-5-U-C-sec-der-quart-conc-jms.pg; intervals and numeric; quartic graph given as graph of the second derivative; determine intervals where original function is concave up/down and list x-values of inflection points; one repeated root so two intervals next to each other with the same behaviour (modified from code 8-1-3-U-C-der-quart-inc-dec-jms.pg),, +8-1-4-Ap-C,8-1-4,Ap,C,3,identify intervals where a function is increasing/decreasing by algebraically determining the sign of the derivative,,,8-1-4-Ap-C-danny-1.pg; interval list; Danny's template problem,8-1-4-Ap-C-abstract-1-jms.pg; interval; given derivative involving an uknown function with a fixed sign; find intervals where original funciton is increasing / decreasing,8-1-4-Ap-C-log-2-jms.pg; interval; given function and its derivative involving log(x); find intervals of increase and decrease,8-1-4-Ap-C-poly-3-jms.pg; interval; quartic given; derivative is a cubic with one repeated root +8-2-6-Ap-C,8-2-6,Ap,C,3,identify intervals where a function is concave up/down by algebraically determining the sign of the second derivative,,,8-2-6-Ap-C-poly-1-jms.pg; interval; quartic function; second derivative is a quadratic has can have distinct or repeated roots and either a pos/neg constant factor,8-2-6-Ap-C-rational-2-jms.pg; interval; simple rational function +/-(x-a)^(-1); determine intervals where concave up / concave down; modified version of 8-1-4-Ap-C-danny-1.pg,8-2-6-Ap-C-abstract-3-jms.pg; interval; modified version of 8-1-4-Ap-C-abstract-1-jms.pg; given SECOND derivative involving an uknown function with a fixed sign; find intervals where original funciton is CU/CD,8-2-6-Ap-C-exp-3-jms.pg; interval; f''(x) = x(x-a)e^x; given f need to compute f'' using the product rule +8-1-0-R-I,8-1-0,R,I,1,state the definition what it means for a function to be increasing/decreasing,,,8-1-0-R-I-defn-inc-dec-jms.pg; dropdown; given increasing/decreasing fill in quantifier and one of two inequalities to complete the two definitions,8-1-0-R-I-defn-inc-dec-2-jms.pg; given technical definition match the correct word,, +8-2-4-U-I,8-2-4,U,I,2,identify intervals where a function is concave up/down given the graph of the first derivative,,,"8-2-4-U-I-pw-frst-der-concave-jms.pg; dropdown; piecise linear graph of first derivative (always non-constant on small intervals); determine if function is concave up, concave down, or if concavity changes on three randomly selected intervals (modified version of 8-1-2-U-C-pw-inc-dec-1-jms.pg;)","8-2-4-U-I-cubic-first-der-concave-jms.pg; given graph of first derivative that is a cubic, determine where original function is concave upward/downward and find inflection points",, +8-2-0-R-I,8-2-0,R,I,1,state the definition what it means for a function to be concave up/down; and what it means to be concave up/down in terms of the second derivative,,,8-2-0-R-I-defn-conc-jms.pg; dropdown; define concaity in terms of the graph and tangent lines,8-2-0-R-I-conc-defn-2-jms.pg; dropdown; identify concacve up / down in terms of the second derivative; also includes universal quantifier,, +9-0-0-C,9-0-0,,C,,identify maximum/minimum values of a function on a given interval and solve single-variable constrained optimization problems,High-level outcome (for course outline); short name: #9-0-0-C; optimization,,No. of 9-0-0-C problems --- >>>,32,, +9-2-4-C-A,9-2-4,C,A,N/A,create an example of a function with a critical/singular point that is not a local extrema,,,,,, +9-1-5-C-A,9-1-5,C,A,N/A,create an example of a function where the Second Derivative Test is inconclusive,,,,,, +9-4-1-R-A,9-4-1,R,A,1,state the Extreme Value Theorem,,,9-4-1-R-A-evt-jms.pg; dropdown; complete the statement of the theorem (non-technical); 4 dropdowns,,, +9-4-2-An-A,9-4-2,An,A,4,explain the relationship between the Extreme Value Theorem and the Closed Interval Method,,,,,, +9-1-0-R-C,9-1-0,R,C,1,state the definiton of a local maximum/minimum,,,9-1-0-R-C-loc-ext-def-jms.pg; dropdown; given inequality choose local/max or local min and indicate 'near',9-1-0-R-C/9-1-0-R-C-loc-ext-def-2-jms.pg; dropdown; given maxmin choose correct inequality (f(x) and f(c) positions reversed from other version) and indicate 'near',, +9-1-1-U-C,9-1-1,U,C,2,identify a local maximum/minimum given the graph of the original function,**Note Definition 3.5.3 of CLP-1 allows endpoints of intervals to be local extrema (this is inconsistent with what we have done in 249/265 over the last few years),,"9-1-1-U-C-pw-loc-ext-1-jms.pg; dropdown; piecewise linear function; choose local max or local min / neither for interior singular points; CODE HAS OPTION TO INCLUDE AN ADDITIONAL POINT: domain is open interval so indicate ""neither"" at one of two endpoints",9-1-1-U-C-quart-ext-jms.pg; numeric (list); indiate numerical locations of local maximum and minimum given a graph of a quartic; code adapted from 8-1-2-U-C-quart-inc-dec-jms.pg,, +9-1-3-Ap-C,9-1-3,Ap,C,3,identify local maximum/minimums by using the First Derivative Test analytically/algebraically,,,9-1-4-Ap-C-danny-1.pg; drop-down; randomly generated parabola; depends on approach,9-1-3-Ap-C-fdt-jms-1.pg; dropdown and numeric; given f and f'; force using first derivative test by asking inc/dec; could be max/min,"9-1-3-Ap-C-fdt-abs-jms-1.pg; given function f with f'(x) = g'(x)(x-a)(x-b); find local max/min; given g continuous differentiable with one critical point and a local max/min; ten different cases occur; allows a=b, but avoids a=c and b=c", +9-2-1-R-C,9-2-1,R,C,1,state the definition of a critical point,,,9-2-1-R-C-crit-sing-def-jms.pg; identify difference between critical and singular points from their definitions; uses local maximum and local minimum as distractors,,, +9-1-4-Ap-C,9-1-4,Ap,C,3,identify local maximum/minimums by using the Second Derivative Test analytically/algebraically,,,9-1-4-Ap-C-danny-1.pg; drop-down; randomly generated parabola; depends on approach,"9-1-4-Ap-C-sdt-jms-1.pg; numeric; dropdown; given quartic and critical point find value of f'', determine sign of f'', indicate max/min and find value of function","9-1-4-Ap-C-sdt-jms-2.pg; numeric; given a cubic with an unknown parameter find the value of the constant that gives a local max/min; get two possible critical points, but only one gives desired max/min",9-1-4-Ap-C-sdt-jms-3.pg; dropdown; given table of values determine if max/min/neither or inconclusive; points may or may not be critical points +9-3-0-R-C,9-3-0,R,C,1,state the definition of a global maximum/minimum,,,9-3-0-R-C-glob-ext-def-jms.pg; dropdown; given inequality; choose global max/min and correct quantifier to make a correct definition,9-3-0-R-C-glob-ext-def-2-jms.pg; dropdown; given global max/min choose inequality and quantifier to complete definition; positions of f(x) and f(c) reversed from other version and opposite to local questions,, +9-3-1-U-C,9-3-1,U,C,2,explain the difference between a local/global extrema,Jerrod is not sure how to make this in WeBWork ... other than the question with a graph that I've made for 9-3-2-U-C,,,,, +9-3-2-U-C,9-3-2,U,C,2,recognize the difference between a local/global extreme by interpreting the graph of a given function,,,9-3-2-U-C-pw-loc-glob-ext-1-jms.pg; dropdown; piecewise linear; ask about global max/min AND local max/min for two out of four interior singular points; does not ask about endpoints but they are included on the graph in the closed interval; combines code from 9-1-1-U-C-pw-loc-ext-1-jms.pg and 9-3-3-U-C-pw-glob-ext-1-jms.pg,9-3-2-U-C-loc-glob-ext-ms-cmm.pg; multiple select; evaluation of statements about global/local extrema on a closed interval of a graph of a function. SOLUTION NOT DONE YET,, +9-3-4-U-C,9-3-4,U,C,2,identify a global maxumum/minimum given the graph of the derivative of a function,,,9-3-4-U-C-pw-der-glob-ext-jms.pg; dropdown; piecewise graph with one critical point; determine extrema type of critical point (could be neither); determine if global max/min occur at a critical point or endpoint,,, +9-4-3-Ap-C,9-4-3,Ap,C,3,implement the Closed Interval Method to find the absolute extrema of a continuous function on a closed interval,,,9-4-3-Ap-C-closed-int-jms-1.pg; numeric; cubic; one critical point in the interval and one outside; find the location and value of the global extrema,9-4-3-Ap-C-closed-int-jms-2.pg; numeric; xe^x type function; one critical point; find location and value of absolute max/min; HARD,, +9-5-1-An-C,9-5-1,An,C,4,translate a given optimization problem into an abstract mathematical problem; in particular: use a constraint to eliminate secondary variables in order to produce a single-variable optimization problem,,,"9-5-1-An-C-box-cost-jms.pg; dropdown and function; cost of box with a lid; indicate ""minimize""; identify constraint; find cost as function of one variable",9-5-1-An-C-fence-set-up-jms.pg; dropdown and function; indicate minimize; find perimeter as function of one variable,9-5-1-An-C-open-box-set-up-jms.pg; dropdown and function; box with an open top by cutting squares from a square sheet; no constraint; maxmimize,9-5-1-An-C-cylinder-set-up-jms.pg; dropdown and function; indidicate minimize surface area; set up function to minimize the amount of material used for a cylinder of a fixed volume +9-5-2-Ap-C,9-5-2,Ap,C,5,solve optimization word problems,,,9-5-2-Ap-C-box-cost-full-jms.pg; numeric; solve a version of 9-5-1-An-C-box-cost-jms.pg with a reworded context; four versions with simplified numbers from an old 249 midterm exam 2021,9-5-2-Ap-C-fence-full-jms.pg; numeric; solvea version of the problem 9-5-1-An-C-fence-set-up-jms.pg so that critical values are integers; ask for the minimum amount of fencing (the minimum value instead of the dimensions),9-5-2-Ap-C-open-box-full-jms.pg; numeric; ask for maximum volume and the critical point; solving the problem 9-5-1-An-C-open-box-set-up-jms.pg,9-5-2-Ap-C-cylinder-cost-jms.pg; numeric; given cost function and fixed volume of a cylindrical container; find radius of the cylinder that minimizes the cost function +9-5-3-An-C,9-5-3,An,C,4,interpret the results of optimization proceedures into an answer to a given optimization problem,,,,,, +9-1-2-U-C,9-1-2,U,C,2,identify a local maxumum/minimum given the graph of the derivative of a function,,,9-1-2-U-C-pw-der-ext-1-jms.pg; dropdown; piecewise graph given with three critical points; choose local max/min/neither for each point and include justification about the funciton increasing/decreasing to the left/right of the critical point on specific intervals; uses code from 8-1-3-U-C-pw-der-inc-dec-2-jms.pg,"9-1-2-U-C-pw-der-ext-2-no-int-jms.pg; dropdown; same critical points, etc. as 9-1-2-U-C-pw-der-ext-1-jms.pg; however, does not ask for increasing/decrasing justification; instead asks students to identify that the three points are all critical points (since they are looking at the graph of the derivative)",, +9-3-3-U-I,9-3-3,U,I,2,identify a global maximum/minimum given the graph of the original function,,,9-3-3-U-C-pw-glob-ext-1-jms.pg; dropdown; piecewise linear function on closed interval; choose global max or global min / neither for random subset of one endpoint and two interior singular points,,, +9-5-4-E-I,9-5-4,E,I,4,communicate an approach to solving an optimization problem and the results of the process to an appropriate audience,,,,,, +9-2-2-R-I,9-2-2,R,I,1,state the definition of a singular point,,,9-2-1-R-C-crit-sing-def-jms.pg; identify difference between critical and singular points from their definitions; uses local maximum and local minimum as distractors,,, +9-2-3-U-I,9-2-3,U,I,2,recognize that local extrema occur at critical/singular points but that not all critical/singular points are local extrema,"The problems first two problems for 9-1-2-U-C touch on this outcome (for critical points), depending on the randomization...",,9-2-3-U-I-crit-sing-tf-jms.pg; dropdown; true or false; two statements about the relationship between critical/singular points and local extrema; both are false,"9-2-3-U-I-fermat-evt-jms.pg; dropdown; if you have a local max, then crit or sing; if you have global max on closed interval, then crit/sing/endpoint.",, +10-0-0-I,10-0-0,,I,,"state the Mean Value Theorem, interpret the statement of the theorem in terms of ""rates of change"" and ""slope"", and solve problems using the MVT","High-level outcome (for course outline); short name: #10-0-0-I; MVT; WeBWork Quiz for 10-0-0-I will consist of one problem from 10-0-2-U-C, two problems from 10-1-1-Ap-C (one upper/lower and one big/small), one problem from 10-1-2-Ap-C, and one problem from 10-0-1-R-I",,No. of 10-0-0-C problems --- >>>,13,, +10-2-0-E-A,10-2-0,E,A,4,"use the Mean Value Theorem, and Intermediate Value Theorem, to make conclusions about the existence/number of roots of a differentiable function","""Show there is exactly one real root ---""",,,,, +10-0-2-U-C,10-0-2,U,C,2,"interpret the statement of the Mean Value Theorem in terms of ""rates of change"" and ""slope""",,,10-0-2-U-C-mvt-meaning-1-jms.pg; numeric and drop down; calculate average rate of change and indicate that instantaneous rate of change must euqal this also with quantifier; uses context of reaction rate from 6-1-0-U-C-reaction-dd-jms.pg,10-0-2-U-C-mvt-meaning-2-jms.pg; drop down and numeric; indicate that information provided allows computation of average velocity; indicate that mean value theorem is a statement about the instantaneous velocity; use similar context to 6-1-0-U-C-vel-acc-dd-jms.pg,"10-0-2-U-C-mvt-meaning-3-jms.pg; numeric and drop down; given points find function values, slope of secant line, and interpret mean value theorem.","10-0-2-U-C-mvt-meaning-4-jms.pg; numeric and drop down; given point, slope of secant line, and second x-value; find funciton values, equation of secant line, indicate interval on wich MVT applies and indidicate parallell lines have equal slopes" +10-1-1-Ap-C,10-1-1,Ap,C,3,use the Mean Value Theorem to find upper/lower limits for values of a function given upper/lower limits on the derivative,,,10-1-1-Ap-C-mvt-upper-lower-1-jms.pg; dropdown and numeric; choose that MVT applies; given upper and lower bounds on f'(x) find upper and lower bounds for f(a),10-1-1-Ap-C-mvt-upper-lower-2-jms.pg; dropdown and numeric; choose that MVT applies; given upper and lower bounds on f'(x) find upper and lower bounds for f(b),10-1-1-Ap-C-mvt-big-small-1-jms.pg; numeric; given value of f(b) and upper/lower limits on f'(x) find the largest/smallest value of f(a) (versioned on biggest/smallest); ask for funciton that achieves this value,10-1-1-Ap-C-mvt-big-small-2-jms.pg; numeric; given value of f(a) and upper/lower limits on f'(x) find the largest/smallest value of f(a) (versioned on biggest/smallest); ask for funtion that achieves this value +10-1-2-Ap-C,10-1-2,Ap,C,3,use the Mean Value Theorem to solve practical problems about rates of change,Need unit conversions to solve this problem; then students compare a computed average to a given limit/record to determin if MVT can help give a conclusion,,"10-1-2-Ap-C-mvt-speeding-tickets-jms.pg; find average velocity for a car trip, compare to a speed limit and attempt to use the MVT to determine if they were speeding or not. Sometimes no determination can be made since average speed is lower than the posted limit.",10-1-2-Ap-C-mvt-solar-jms.pg; find average velocity for a test vehicle compare to a record speed and attempt to use the MVT to determine if the record was broke. Sometimes no determination can be made since average speed is lower than the record.,"10-1-2-Ap-C-mvt-sound-jms.pg; same idea as other problems, but requires coverting kilometers/minute to metres/second as well", +10-0-1-R-I,10-0-1,R,I,1,precisely state the Mean Value Theorem,,,10-0-1-R-I-state-mvt-jms.pg; dropdown and numeric; complete statement of MVT for a specific interval and an unknown function,10-0-1-R-I-state-mvt-spec-jms.pg; dropdown and numeric; complete specific statement of MVT for a polynomial function,, +11-0-0-C,11-0-0,,C,,"state the definition of an antiderivative of a function, explain the relationship between antiderivatives, and compute antiderivatives of common functions",High-level outcome (for course outline); short name: #11-0-0-C; antiderivatives,,No. of 11-0-0-C problems --- >>>,21,, +11-2-4-E-A,11-2-4,E,A,4,justify that two antiderivatives differ by a constant by using the Mean Value Theorem,,,,,, +11-1-1-An-C,11-1-1,An,C,4,determine if a given function is an antiderivative of another,multiselect questions here also cover 11-2-1-R-C,,11-1-1-An-C-anti-der-ms-1-jms.pg; multiselect; find all antiderivatives of x^3 + sin(x) + b,11-1-1-An-C-anti-der-ms-2-jms.pg; multiselect; find all antiderivatives of 1/sqrt(x) and cos(x),11-1-1-An-C-anti-mc-1-jms.pg; multiple choice; find antiderivative with e^x and 1/x, +11-1-0-R-C,11-1-0,R,C,1,state the definition of the antiderivative of a function,,,11-1-0-R-C-anti-der-defn-jms.pg; dropdown; given equation f'(x) = g state relationship between two functions; two different orders randomized,,, +11-1-2-Ap-C,11-1-2,Ap,C,3,"compute the antiderivative of a given function (polynomial, exp, trigonometric)",Without requiring substitution,,"11-1-2-Ap-C-fcn-anti-der-1-jms.pg; function; power of x, e^(-x), cos(x)","11-1-2-Ap-C-fcn-anti-der-2-jms.pg; function; x^2 or x^3, 1/x, sin(x)",11-1-2-Ap-C-fcn-anti-der-3-jms.pg; function; sqrt(x) and sec^2(x), +11-2-1-R-C,11-2-1,R,C,1,recognize that two antiderivatives only differ by a constant,11-1-1-An-C ms problems also include this aspect,,11-2-1-R-C-two-anti-der-1-jms.pg; dropdown; given two abstract antiderivatives indicate what F-G and F'-G' are equal to; random order of bullets,,, +11-2-2-U-C,11-2-2,U,C,2,"explain what the fact that ""two antiderivatives differ by a constant"" means graphically",,,11-2-2-U-C-two-anti-der-gph-jms.pg; dropdown; given two different antiderivatives'; indicate that they will have the same slope for each x but different y-intercpepts,,, +11-2-3-U-C,11-2-3,U,C,2,"explain what the fact that ""two antiderivatives differ by a constant"" means algebraically",,,11-2-3-U-C-two-anti-der-mc-jms.pg; multiple choice; choose best statement (with quantifiers) that reprsens what it menas for two antiderivatives to differ by a constant,,, +11-4-1-An-C,11-4-1,An,C,4,recognize when a practical problem requires a derivative or an antiderivative to be solved,Covered by 3-6-0-Ap-I above (two problems),,,,, +11-5-1-Ap-C,11-5-1,Ap,C,3,implement integration by substitution to evaluate antiderivatives of composite functions,,,11-5-1-Ap-C-sub-anti-der-1-jms.pg; function; indicate best subsitution to make and evaluate indefinite integral (large power of binomial),"11-5-1-Ap-C-sub-anti-der-2-jms.pg; function; indicate best substiution, differential and evaluate indefinite integral (large power of sin or cos)","11-5-1-Ap-C-sub-anti-der-3-jms.pg; function; indicate best substitution, differential and evaluate indefinite integral (square root of e^x + b or ln(x) + b)",11-5-1-Ap-C-sub-anti-der-4-mc-jms.pg; multiple choice; u-sub with unknown function +11-5-2-U-C,11-5-2,U,C,2,explain the relationship between the chain rule and integration by substitution,,,11-5-2-U-C-chain-sub-jms.pg; dropdown; indidiate that substitution is antiderivative version of chain rule,,, +11-5-4-Ap-C,11-5-4,Ap,C,3,compute the differential of a given function ,,,11-5-4-Ap-C-dx-1-jms.pg; function; given exp and trig function; compute du with chain rule; dx added as a varible so the learner must include it,11-5-4-Ap-C-dx-2-jms.pg; function; product rule and chain rule with ln; compute du with chain rule; dx added as a varible so the learner must include it,11-5-4-Ap-C-dx-3-jms.pg; function; square root of polynomial; compute du with chain rule; dx added as a varible so the learner must include it, +11-3-1-Ap-I,11-3-1,Ap,I,3,solve initial value problems given information about the second derivative of a function,,,"11-3-1-Ap-I-ivp-1-jms.pg; function; given f''(x), f'(0) and f(0) find f(x); f''(x) = asin(x) +bcos(x)","11-3-1-Ap-I-ivp-2-jms.pg; function; given f''(x), f'(0) and f(0) find f(x); f''(x) = ae^x +be^(-x)","11-3-1-Ap-I-ivp-3-jms.pg; function; given f'(x) and f(a), find f(x); a*sqrt(x) + b/sqrt(x)", +11-5-3-R-I,11-5-3,R,I,1,state the definition of the differential of a function,Related to 4-3-1-Ap-I; differential approximation; Need to know this in order to complete 11-5-4-Ap-C outcomes,,,,, +12-0-0-C,12-0-0,,C,,explore the process of estimating areas under the graph of a function and develop the definition of the Riemann integral,High-level outcome (for course outline); short name: #12-0-0-C; area,,No. of 12-0-0-C problems --- >>>,14,Make 3 each here!, +12-1-1-R-A,12-1-1,R,A,1,state the precise definition of the Riemann integral of a continuous function,,,,,, +12-1-3-U-A,12-1-3,U,A,2,recognize when a given limit of a sum is the definite integral of a function,,,,,, +12-1-2-U-C,12-1-2,U,C,2,state the intuitive interpretation of the definite integral in terms of areas,,,"12-1-2-U-C-def-int-idea-1-jms.pg; multiple choice; does not use the phrase ""net area""",12-1-2-U-C-def-int-idea-2-jms.pg; multiple choice; asks about |f(x)|,12-1-2-U-C-application-1-jms.pg; interpret meaning of definite integral, +12-2-1-An-C,12-2-1,An,C,4,"interpret the definite integral on an interval [a, x] as a function of x",,,12-2-1-An-C-area-function-1-jms.pg; dropdown and numeric; indicate that A(x) is a funciton of x and find two of its values given a graph of f,"12-2-1-An-C-area-function-2-jms.pg; dropdown and numeric; integral of absolute value; indicate that A(x) is a function of x, and find two of its values given graph of f",, +12-3-1-Ap-C,12-3-1,Ap,C,3,evaluate the definite integral of a function given the graph of the function,,,12-3-1-Ap-C-area-graph-1-jms.pg; numeric; given piecewise linear function; evaluate four definite integrals; one right-to-left; all with same lower limit of integration,"12-3-1-Ap-C-area-graph-2-jms.pg; numeric; piecewise linear graph with regions that are triangles, rectangles, or a triangle + rectangle; evaluate two definite integral",12-3-1-Ap-C-area-graph-3-jms.pg; numeric; piecewise with a quarter circle; ask for quarter circle only and one other integral which involves using 5-sub-interval, +12-3-2-Ap-C,12-3-2,Ap,C,3,evaluate the definite integral of a piecewise function (without the fundamental theorem of calculus),,,12-3-2-Ap-C-pw-def-no-ftc-1-jms.pg; numeric; function is linear and semicircle (both either pos/neg); solution evaluates with a graph; requires area as a rectangle + triangle and quarter circle,12-3-2-Ap-C-pw-def-no-ftc-2-jms.pg; numeric; peicewise function; graph is linear wtih y-int 0 and semicricle with centre on x-axis; requires triangle and half-circle area,12-3-2-Ap-C-pw-def-no-ftc-3-jms.pg; numeric; peicewise function; graph is piecewise linear; one part horizontal; one with nonzero slope; function changes definition at nonzero point (EASIER!), +12-3-4-An-C,12-3-4,An,C,4,calculate definite integrals using properties of the integral and given limited information about other integrals,,,12-3-4-An-C-abstract-int-1-jms.pg; numeric; find two definite integrals of one function using given integrals; just about manipulating intervals and splitting up integrals; scaffolded,12-3-4-An-C-abstract-int-2-jms.pg; numeric; find two definite integrals; given information about one function; second involves a scalar multiple and a constant function; scaffolded order,12-3-4-An-C-abstract-int-3-jms.pg; numeric; given information about two functions; find integrals of linear combinations; one uses two integrals given directly; the second involves splitting the two integrals up in to different ways but only as a to b and b to c and adding, +12-3-3-Ap-I,12-3-3,Ap,I,3,evaluate the definite integral of odd/even functions by using symmetry,,,,,, +13-0-0-C,13-0-0,,C,,state the Fundamental Theorem of Calculus and explore/demonstrate the relationship between differentiation and integration,High-level outcome (for course outline); short name: #13-0-0-C; FTC,,No. of 13-0-0-C problems --- >>>,34,, +13-4-1-Ap-A,13-4-1,Ap,A,3,apply the FTC and earlier knowledge to determine intervals of increase/decrease of functions presented as integrals,,,13-4-1-Ap-A-ftc-increase-decrease-AT.pg,,, +13-4-2-Ap-A,13-4-2,Ap,A,3,apply the FTC and earlier knowledge to determine intervals of concavity of functions presented as integrals,,,13-4-2-Ap-A-ftc-concavity-AT.pg,,, +13-4-3-Ap-A,13-4-3,Ap,A,3,apply the FTC and the First Derivative Test to find local extrema of functions presented as integrals,,,,,, +13-4-4-Ap-A,13-4-4,Ap,A,3,apply the FTC and the Closed Interval Method to find global extrema of functions presented as integrals on a closed interval,,,13-4-4-Ap-A-ftc-closed-interval-method-AT.pg,,, +13-4-G-Ap-A,,,,,Folder containing questions for next four graph-based FTC learning outcomes,,,,,, +13-4-1G-Ap-A,13-4-1G,Ap,A,3,apply the FTC and earlier knowledge to determine intervals of increase/decrease of functions presented as integrals WITH INTEGRAND GIVEN AS A GRAPH,In folder 13-4-G-Ap-A,,13-4-1G-Ap-A-int-graph-inc-dec-1-jms.pg; drop down; for each interval choose increasing or decreasing'; graph is piecewise linear; rewritten version of 12-3-1-Ap-C-area-graph-1-jms.pg,13-4-1G-Ap-A-int-graph-inc-dec-2-jms.pg; rewritten version of 8-1-3-U-C-der-cubic-inc-dec-jms.pg,, +13-4-2G-Ap-A,13-4-2G,Ap,A,3,apply the FTC and earlier knowledge to determine intervals of concavity of functions presented as integrals WITH INTEGRAND GIVEN AS A GRAPH,In folder 13-4-G-Ap-A,,13-4-2G-Ap-A-int-graph-concave-1-jms.pg; dropdown; rewritten version of 8-2-4-U-I-pw-frst-der-concave-jms.pg,13-4-2G-Ap-A-int-graph-concave-2-jms.pg; interval; rewritten versionof 8-2-4-U-I-cubic-first-der-concave-jms.pg,, +13-4-3G-Ap-A,13-4-3G,Ap,A,3,apply the FTC and the First Derivative Test to find local extrema of functions presented as integrals WITH INTEGRAND GIVEN AS A GRAPH,In folder 13-4-G-Ap-A,,13-4-3G-Ap-A-loc-ext-int-graph-1-jms.pg; drop down; rewritten version of 9-1-2-U-C-pw-der-ext-2-no-int-jms.pg,,, +13-4-4G-Ap-A,13-4-4G,Ap,A,3,apply the FTC and the Closed Interval Method to find global extrema of functions presented as integrals on a closed interval WITH INTEGRAND GIVEN AS A GRAPH,In folder 13-4-G-Ap-A,,13-4-4G-Ap-A-ftc-closed-int-jms-1.pg; numeric; piecewise linear; 3 critical points; find value of global max and global min (not x-values); rewritten version of 12-3-1-Ap-C-area-graph-1-jms.pg,13-4-4G-Ap-A-ftc-closed-int-jms-2.pg; numeric; rewritten version of 12-3-1-Ap-C-area-graph-2-jms.pg,, +13-0-1-R-C,13-0-1,R,C,1,state the Fundamental Theorem of Calculus (FTC),,,13-0-1-R-C-state-ftc-jms.pg; dropdown and numeric; indicate partial area function is an anitiderivative; indicate that any antiderivative can be used for computing definite integrals.,,, +13-0-2-C-C,13-0-2,C,C,N/A,"demonstrate the relationship between differentiation and integration by using examples (e-g-, f(x) = x, f(x) = x^2)",,,13-0-2-C-C-cpt-anti-der-int-jms-1.pg; function; evaluate explicit antierivative given in terms of integrals; evaluate derivative of integral; integrand is binomial quadratic or linear,13-0-2-C-C-cpt-anti-der-int-jms-2.pg; same question with trig and exponential,, +13-1-1-Ap-C,13-1-1,Ap,C,3,apply the FTC to evaluate definite integrals of polynomial functions,,,13-1-1-Ap-C-poly-definite-jms-1.pg; numeric; evaluate two definite integrals of polynomial functions; one binomial and one trinomial,13-1-1-Ap-C-poly-definite-jms-2.pg; same question with powers and intervals slightly adjusted,, +13-1-2-Ap-C,13-1-2,Ap,C,3,apply the FTC to evaluate definite integrals of exponential functions,,,"13-1-2-Ap-C-exp-definite-jms-1.pg; evaluate to integrals of exponential functions; one e^x + c, one e^x + e^-x",13-1-2-Ap-C-exp-ln-definite-jms-2.pg; exp and log (integral of 1/x); modified from ver 1,, +13-1-3-Ap-C,13-1-3,Ap,C,3,apply the FTC to evaluate definite integrals of trigonometric functions,,,"13-1-3-Ap-C-trig-definite-jms-1.pg; integral of Acos+B and Asin+Bcos, first quardrant special angles only, second from 0 to positive angle","13-1-3-Ap-C-trig-definite-jms-2.pg; integral of Acos and Asin first quardrant special angles only, first - to + (symmetric); second from 0 to positive angle",, +13-1-4-Ap-C,13-1-4,Ap,C,3,apply the FTC to evaluate definite integrals of piecewise functions,,,13-1-4-Ap-C-pw-def-int-1-jms.pg; numeric; linear function and scalar multiple of square root,13-1-4-Ap-C-pw-def-int-2-jms.pg; numeric; polynomial and 1/sqrt(x) + const,13-1-4-Ap-C-pw-def-int-3-jms.pg; numeric; exponential and cos,13-1-4-Ap-C-pw-def-int-4-jms.pg; numeric; exponential(-x) and sin +13-2-1-Ap-C,13-2-1,Ap,C,3,apply the FTC and integration by substitution to evalute definite integrals,,,13-2-1-Ap-C-definite-sub-jms-1.pg; numeric; e^sqrt(x)/sqrt(x) and (ln(x) + r)^2/x,13-2-1-Ap-C-definite-sub-jms-2.pg; numeric; xcos(x^2+a) and cos(x)sqrt(sin(x)),13-2-1-Ap-C-definite-sub-jms-3-abstract.pg; numeric; uknown function; use substitution twice to relate to given integrals, +13-2-2-U-C,13-2-2,U,C,2,recognize that the limits of integration in a definite integral change when using a substitution,,,"13-2-2-U-C-def-sub-mc-1-jms.pg; multiple choice; u=ax+b; integrand is unknown function; simple distractors (error in differential, not changing limits)",13-2-2-U-C-def-sub-mc-2-jms.pg; multiple choice; u = ax^2 and unknown function,13-2-2-U-C-def-sub-mc-3-jms.pg; multiple choice; u = sin(x) with square root of sin^2+b,13-2-2-U-C-def-sub-mc-4-jms.pg; multiple choice; u = ln(x) + b with squre root of ln(x) + b +13-3-1-Ap-I,13-3-1,Ap,I,3,apply the FTC to compute derivatives of functions presented as integrals,,,13-3-1-Ap-I-der-int-jms-1.pg; function; derivative of a definite and intedefinite integral; cannot integrate either of the functions presented with MATH 249 techniques,13-3-1-Ap-I-der-int-jms-2.pg; function; derivative of a definite and intedefinite integral; cannot integrate either of the functions presented with MATH 249 techniques; order reversed from other verson,, +13-3-2-Ap-I,13-3-2,Ap,I,3,apply the FTC and the chain rule to compute derivatives of functions presented as integrals,,,13-3-2-Ap-I-ftc-chain-1-jms.pg; function; one is with x^2 and the other has x in upper and lower limits of integration,"13-3-2-Ap-I-ftc-chain-2-jms.pg; function; one has e^x as upper limit, the second requires chain rule twice",, +14-0-0-C,14-0-0,,C,,"define and identify improper integrals, evaluate two types of improper integrals by direct computation and comparison",High-level outcome (for course outline); short name: #14-0-0-C; improper integrals,,No. of 14-0-0-C problems --- >>>,9,, +14-2-2-Ap-A,14-2-2,Ap,A,3,use the Comparison Test to evaluate the convergence/divergence of explicit improper integrals,,,14-2-2-Ap-A-use-comparison-test-AT.pg,,, +14-0-1-R-C,14-0-1,R,C,1,identify an integral as being improper because it is over an infinite interval,,,14-0-1-R-C-infinite-interval-AT.pg,,, +14-0-2-U-C,14-0-2,U,C,2,identify an integral as improper because the function has a vertical asymptote in the domain of integration (algebraically),,,14-0-2-U-C-asymptote-algebraic-AT.pg,,, +14-0-3-U-C,14-0-3,U,C,2,identify an integral as improper because the function has a vertical asymptote in the domain of integration (graphically),,,14-0-3-U-C-asymptote-graphic-2-AT.pg,,, +14-0-4-R-I,14-0-4,R,I,1,state the definition of convergence/divergence for an improper integral,,,14-0-4-R-I-improper-conv-div-AT.pg;,,, +14-1-1-Ap-I,14-1-1,Ap,I,3,compute improper integrals over an infinite interval,,,14-1-1-Ap-I-compute-improper-int-inf-AT.pg,,, +14-1-2-Ap-I,14-1-2,Ap,I,3,compute improper integrals over a finite interval where a function has a vertical asymptote,,,14-1-2-Ap-I-compute-improper-int-AT.pg; ,,, +14-2-1-R-I,14-2-1,R,I,1,state the Comparison Test for improper integrals,,,14-2-1-R-I-comparison-test-def-AT.pg,,, +14-2-3-Ap-I,14-2-3,Ap,I,3,use the Comparison Test to evaluate the convergence/divergence of abstract improper integrals,,,14-2-3-Ap-I-abstract-comparison-test-AT.pg,,, \ No newline at end of file From 02c7aa8dcf1c43aaddacd51a3f8fe7bd26770f12 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Fri, 26 Jun 2026 13:39:47 -0600 Subject: [PATCH 21/29] Update README.md --- Contrib/UCalgary/README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Contrib/UCalgary/README.md b/Contrib/UCalgary/README.md index 3f8f2bcd88..ed8e0b4407 100644 --- a/Contrib/UCalgary/README.md +++ b/Contrib/UCalgary/README.md @@ -14,10 +14,8 @@ WeBWork users may use and copy material in this repository under the following l Material within this repository (UCalgary/) may only be modified by users: smith36j and dlglin. -MATH_249_Revised_Learning_Outcomes_F25.xlsx contains detaile dlearning outcomes, classification based on Bloom's taxonomy and the WeBWork problem classification scheme. Course learning outcomes (CLOs) are used to organize and name WeBWork problems. +MATH_249_Revised_Learning_Outcomes_F25.csv contains detaile dlearning outcomes, classification based on Bloom's taxonomy and the WeBWork problem classification scheme. Course learning outcomes (CLOs) are used to organize and name WeBWork problems. - MATH_249_CLO_(High-level).docx contain course learning outcomes (CLOs) used to organize assessments. - - WeBWork Problems are in the archive MATH249-WeBWork-2026.zip + MATH_249_CLO_(High-level).rtf contain course learning outcomes (CLOs) used to organize assessments. Folders 249-N-0-0-C/I contain WeBWork problems. Folder and file names correspond to course learning outcomes. From 519fcc71164fc14f86d7eb9fe735bdfc2e4f9737 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Thu, 30 Jul 2026 16:38:44 -0600 Subject: [PATCH 22/29] Update README.md --- Contrib/UCalgary/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contrib/UCalgary/README.md b/Contrib/UCalgary/README.md index ed8e0b4407..e039c6d07e 100644 --- a/Contrib/UCalgary/README.md +++ b/Contrib/UCalgary/README.md @@ -14,7 +14,7 @@ WeBWork users may use and copy material in this repository under the following l Material within this repository (UCalgary/) may only be modified by users: smith36j and dlglin. -MATH_249_Revised_Learning_Outcomes_F25.csv contains detaile dlearning outcomes, classification based on Bloom's taxonomy and the WeBWork problem classification scheme. Course learning outcomes (CLOs) are used to organize and name WeBWork problems. +MATH_249_Revised_Learning_Outcomes_F25.csv contains detailed learning outcomes, classification based on Bloom's taxonomy and the WeBWork problem classification scheme. Course learning outcomes (CLOs) are used to organize and name WeBWork problems. MATH_249_CLO_(High-level).rtf contain course learning outcomes (CLOs) used to organize assessments. From d6fc031ac26db201300cfb6cffa40171a9b4e6be Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Mon, 3 Aug 2026 12:11:35 -0600 Subject: [PATCH 23/29] Delete Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-value-choice-jmsW2026.pg Deleted file in response to comment 4. The problem: UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-value-choice-jmsW2026.pg doesn't show anything. I don't think this is complete. --- .../3-7-0-Ap-I-value-choice-jmsW2026.pg | 33 ------------------- 1 file changed, 33 deletions(-) delete mode 100644 Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-value-choice-jmsW2026.pg diff --git a/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-value-choice-jmsW2026.pg b/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-value-choice-jmsW2026.pg deleted file mode 100644 index 13da4a8ad4..0000000000 --- a/Contrib/UCalgary/249-3-0-0-C/3-7-0-Ap-I/3-7-0-Ap-I-value-choice-jmsW2026.pg +++ /dev/null @@ -1,33 +0,0 @@ -## DESCRIPTION -## -## ENDDESCRIPTION - - -## DBsubject(Calculus - single variable) -## DBchapter(Limits and continuity) -## DBsection(Continuity - intermediate value theorem) -## Date(24 February 2025) -## Institution(University of Calgary) -## Author(Jerrod Smith) -## Level(3) - -DOCUMENT(); - -loadMacros("PGstandard.pl", "PGML.pl", "parserPopUp.pl", "PGcourse.pl",); - -# Uncomment the following if you don't want to show which -# answers are correct and which are incorrect -#$showPartialCorrectAnswers = 0; - - -$MVT = DropDown( - [ - 'Extreme Value Theorem', - 'Intermediate Value Theorem', - 'Mean Value Theorem' - ], - 'Mean Value Theorem' -); - - -ENDDOCUMENT(); From 331573107cb397139e3e5c8e92c006bf4d9a5035 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Mon, 3 Aug 2026 12:13:53 -0600 Subject: [PATCH 24/29] Delete Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.pg Deleted in response to comment 7. I noticed in: UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.pg that the plot doesn't look the same and then looking at the code it's calling R but not doing anything. This problem should be updated to use PGML too. --- .../9-3-2-U-C-loc-glob-ext-ms-cmm.pg | 87 ------------------- 1 file changed, 87 deletions(-) delete mode 100644 Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.pg diff --git a/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.pg b/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.pg deleted file mode 100644 index c9caede841..0000000000 --- a/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.pg +++ /dev/null @@ -1,87 +0,0 @@ -## DBsubject(Calculus - single variable) -## DBchapter(Applications of differentiation) -## DBsection(Global extrema) -## Level(2) -######################################################### -DOCUMENT(); -## Initializations: (Required) -loadMacros( -"PG.pl", -"PGcourse.pl", -"PGstandard.pl", -"MathObjects.pl", -"parserRadioButtons.pl", -"parserPopUp.pl", -"PGchoicemacros.pl", -"weightedGrader.pl", -"RserveClient.pl", - "parserMultiAnswer.pl", - -); - -install_weighted_grader(); -Context->("Numeric"); - - -######################################################## -# START R -######################################################## -rserve_start(); - - -rserve_finish(); -######################################################## -# END R -######################################################## -################################################ - -TEXT(beginproblem()); - -# Show which parts of the question the student got right -$showPartialCorrectAnswers = 1; - -$mc1=new_checkbox_multiple_choice(); -$mc1->qa( -#Enter the question text here: -"Select ALL statements that are $BBOLD TRUE $EBOLD about \(f(x)\) on the closed interval \([A,C]\) based on this graph. $BR", -# Enter the text of the correct answer here -"\(f(x)\) has a global minimum at a critical point", -"\(f(x)\) has a global maximum at an endpoint", -); - -$mc1->extra( -# Enter any additional incorrect answers here: -"\(f(x)\) has exactly one global extrema", -"\(f(x)\) has a global maximum at \(C\)", -"\(f(x)\) has no local extrema on \([A,C]\)", -); - -# Question Preamble: -BEGIN_TEXT -The following is a graph of the function \(f(x)\). -$BR -$BR -\{ image( "9-3-2-U-C-loc-glob-ext-ms-cmm.png", width=>448, height=>672, -tex_size=>700 ) \} -$BR -$BR -END_TEXT - -BEGIN_TEXT -$BR -\{ $mc1->print_q() \} -\{ $mc1->print_a() \} -$BR -END_TEXT - -Context("Numeric"); - - -#WEIGHTED_ANS(Real(5)-> cmp(tolType => 'absolute', tolerance => 0.00009,) , 100 ); -#ANS($multipart->cmp( tolerance => 0.0001), ); -#ANS( checkbox_cmp( $mc1->correct_ans() ) ); -ANS( checkbox_cmp( $mc1->correct_ans() ) ); -##################################################### - -ENDDOCUMENT(); # This should be the last executable line in the problem. - From 8ec715a2fd1b3b3bfee6f61484fd236ff6620739 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Mon, 3 Aug 2026 12:14:29 -0600 Subject: [PATCH 25/29] Delete Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.png Delated in reponse to comment 7. I noticed in: UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.pg that the plot doesn't look the same and then looking at the code it's calling R but not doing anything. This problem should be updated to use PGML too. --- .../9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.png | Bin 15431 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.png diff --git a/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.png b/Contrib/UCalgary/249-9-0-0-C/9-3-2-U-C/9-3-2-U-C-loc-glob-ext-ms-cmm.png deleted file mode 100644 index ef9463da0732c1b7f066458bb5a7fb95f4b800fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15431 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 VZJoJx9|C^vC~7Da+%|vm{{er^69fPN From 7c4d4bdf5ecf1e1b40627f9594aad589886b9f52 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Mon, 3 Aug 2026 12:15:08 -0600 Subject: [PATCH 26/29] Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-2-AT.pg Deleted corrupted file. --- .../14-0-4-R-I-improper-conv-div-2-AT.pg | Bin 1949 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-2-AT.pg diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-2-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-2-AT.pg deleted file mode 100644 index 001f13d4832919fb37f72c2985eebddc7572d725..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1949 ccmZQz7zLvtFd71*Aut*OqaiRF0)r|900*4_0RR91 From 9e7b8f3d4a9637efb54a601942aa214960b8a346 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Mon, 3 Aug 2026 12:15:31 -0600 Subject: [PATCH 27/29] Delete Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-AT.pg Deleted corrupted file. --- .../14-0-4-R-I-improper-conv-div-AT.pg | Bin 3867 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-AT.pg diff --git a/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-AT.pg b/Contrib/UCalgary/249-14-0-0-C/14-0-4-R-I/14-0-4-R-I-improper-conv-div-AT.pg deleted file mode 100644 index 43975cd8712a32563076f1bfc408c9a20940c846..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3867 mcmeIufdBvi0K=g9Qy=7oP+`D;0RsjM7%*VKfB^#rt_KDW8vp?S From 55086f59a7d7f7ff2dad1b0c822f06e44f2c72c8 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Mon, 3 Aug 2026 12:22:31 -0600 Subject: [PATCH 28/29] Update 5-4-5-U-C-t-f-asmp-1-jms.pg Added samples =250 to tikz code --- .../UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-1-jms.pg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-1-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-1-jms.pg index 74e0b4613b..f0e4a650eb 100644 --- a/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-1-jms.pg +++ b/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-1-jms.pg @@ -55,7 +55,7 @@ $graph_image->BEGIN_TIKZ \draw[very thin,color=gray] (-1,-5) grid (15,5); \foreach \x in {2,4,...,12} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; \foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; -\draw[<->,red, very thick, smooth] plot[domain={-1}:{15}] (\x,{($c*sin(2*\x r))/(\x)-$a}) node[right] {\(y=f(x)\)}; +\draw[<->,red, very thick, smooth,samples =250] plot[domain={-1}:{15}] (\x,{($c*sin(2*\x r))/(\x)-$a}) node[right] {\(y=f(x)\)}; \draw[dashed ,blue, very thick] plot[domain={1}:{15}] (\x,{-$a}); END_TIKZ From 6b201f6b398da70f29f4b4af8a32ac8d5f21e072 Mon Sep 17 00:00:00 2001 From: Jerrod Smith Date: Mon, 3 Aug 2026 12:23:02 -0600 Subject: [PATCH 29/29] Update 5-4-5-U-C-t-f-asmp-2-jms.pg Added samples =250 to tikz code --- .../UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-2-jms.pg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-2-jms.pg b/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-2-jms.pg index 0131b95305..a9aa9b3d5f 100644 --- a/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-2-jms.pg +++ b/Contrib/UCalgary/249-5-0-0-C/5-4-5-U-C/5-4-5-U-C-t-f-asmp-2-jms.pg @@ -54,7 +54,7 @@ $graph_image->BEGIN_TIKZ \draw[very thin,color=gray] (-1,-5) grid (15,5); \foreach \x in {2,4,...,12} \draw[thin] (\x,5pt) -- (\x,-5pt) node[below]{\(\x\)}; \foreach \y in {-4,-2,2,4} \draw[thin] (5pt,\y) -- (-5pt,\y) node[left]{\(\y\)}; -\draw[<->,red, very thick, smooth] plot[domain={.5}:{15}] (\x,{($c*cos(pi*\x r))/(\x)-$a}) node[right] {\(y=f(x)\)}; +\draw[<->,red, very thick, smooth,samples =250] plot[domain={.5}:{15}] (\x,{($c*cos(pi*\x r))/(\x)-$a}) node[right] {\(y=f(x)\)}; \draw[dashed ,blue, very thick] plot[domain={1}:{15}] (\x,{-$a}); END_TIKZ