פורסם 2010 באפריל 115 שנים אני צריך לצור תוכנית פשוטה שמחשבת אינטגרל של sinx+cosxבעזרת Riemann Sumsפעם אחת בשימוש FOR ופעם אחת בשימוש WHILEאני התחלתי לכתוב משהו אבל לא יודע איך לקשר לפה לולאה...מקווה שתוכלו לעזור לי
פורסם 2010 באפריל 115 שנים אהלן , אם אני זוכר נכון בסכומי ריימן אתה מחלק את השטח שמתחת לפונקציה למלבנים(כמה שיותר מלבנים , כך התוצאה תהיה יותר מדויקת) מחשב את השטח של המלבנים ומחבר את סכום השטחים של המלבנים - אתה תצטרך לולאה על מנת לחשב סכום כל מלבן - ואז לחבר את התוצאות שקיבלת.
פורסם 2010 באפריל 215 שנים מחבר כתבתי את זה אבל משום מה לא יוצא לי נכוןpublic static void main(String[] args) { double a = Double.parseDouble(args[0]); double b = Double.parseDouble(args[1]); double s = 0; // שטח מלבן double sum = 0; // סכום השטחים של המלבנים double dx = 1e-6; // מרווח בין מלבן למלבן double y = 0; // נקודה על ציר Y if (a>b) for(double xp = b; xp <= a; xp = xp+dx) // XP זה התקדמות של האיקס y = (Math.sin(xp))+(Math.cos(xp)); s = dx*y; sum = sum+s; if(a<b) for(double xp = a; xp <= b; xp = xp+dx) y = (Math.sin(xp))+(Math.cos(xp)); s = dx*y; sum = sum+s; System.out.println("the S is: " +sum);
פורסם 2010 באפריל 215 שנים שים לב שאתה לא שם סוגריים מסולסלים לאחר הלולאות שלך ולאחר ה - if כך ש - s = dx*y sum = sum+s; מתבצעים בכל מקרה אפילו עם A קטן מ Bאותו דבר בלולאה השנייה ,חוץ מזה - 1E-6 - אתה מתכוון ל e = 2.71 ? כי אם כך אז המרווח יוצא מס' שלילי
פורסם 2010 באפריל 215 שנים אין לי מושג מה אתה מנסה לגלות ככה שאני לא ממש יודע איך לעזור לך לכתוב את הקוד כדי שהוא יפתור את הבעיה, אבל יש לי כמה הערות (נראה לי) שאולי יעזרו לך?מה אתה עושה ב2 השורות הראשונות? מה זה a ו b ?למה אתה עושה לולאות if ליחס בין a ו b אם הם לא משתנים בין כה וכה בכל הקוד? ובלולאות פור, איך xp=b וגם xp=משהו אחר? לא ממש הבנתי מה אתה רוצה לפתור אבל בתור התחלה (גם אני מתחיל אז אם אני טועה תקנו אותי):double a = Double.parseDouble(args[0]);אתה רוצה להפוך את הדבל לאינט? אבל הוא כבר מוגדר כדבל, לא הבנתיאני אנסה לכתוב את הקוד רגיל כשa=0 וb=1 ואז תשנה מה שרצית לשנותהקוד עובר קומפילציה, אבל הוא בחיים לא יעבור הרצה כי בפור הראשון (וגם בשני, פשוט לשני הוא בחיים לא יגיע כי a וb לא משתנים כל הלולאה) xp=b=1? תמיד יהיה גדול מa (שמוגדר כ0 ולא משתנה בכל הקוד שלך)public class aa{public static void main(String[] args) { double a = 0; double b = 1; double s = 0; // שטח מלבן double sum = 0; // סכום השטחים של המלבנים double dx = 1e-6; // מרווח בין מלבן למלבן double y = 0; // נקודה על ציר Y { if (a<b) { for( double xp = b; xp <= a; xp = xp+dx) // XP זה התקדמות של האיקס y = (Math.sin(xp))+(Math.cos(xp)); s = dx*y; sum = sum+s; // xp is the same all the way הלולאה בחיים לא תסתיים if(a>b) for(double xp = a; xp <= b; xp = xp+dx) y = (Math.sin(xp))+(Math.cos(xp)); s = dx*y; sum = sum+s; System.out.println("the S is: " +sum); }}}}
פורסם 2010 באפריל 215 שנים מחבר double a = Double.parseDouble(args[0]); double b = Double.parseDouble(args[1]);ככה קולטים תוים מהמשתמש ולא כמו שחשבת שזה מגדיר את A בתור 0 ואת B בתור 1אוקיאז ככהאני רוצה לחש סכום של אינגרל שלsin(x) +cos(x) a ו- b זה התחום של האינטגרל שזה משתמש מכניס לפי רצונו 0 1 או 4 5 וכו'מה שאני רוצה לעשות זה לחשב את כל השטחים ולחבר אותם ביחד לפי נקודה X ו- Yזה יוצר מרובעים שהרוחב שלהם תמיד 1e-6 והגובה נקבע לפי ה-Yו- y יהיה תוצאה של הפונקציה כשמכניסים את הXלכן בשביל למצוא את האיקס הבא שמתחת לגרף הפונקציה צריך לחבר לנק' ההתחלה את ה1e-6 וככה זה מתקדם כל פעם באותו מרווח - 1e-6עד שזה מגיע לתחום השני שהוגדר לו בהתחלה(a או b(וככה עושים סכום של אינטגרל לפי שיטה של ריימןלא?<
פורסם 2010 באפריל 315 שנים עדיין לא הבנתי מה אתה מנסה לעשות מתמטית כי אתה לא מסביר באופן מדויק או שסתם מאוחר לי, אתה רוצה לתת למשתמש אפשרות להכניס כמה מרובעים במקביל או מרובע אחד? מה אתה רוצה לקבל מהמשתמש כי בדרך שכתבת אתה מוגבל לa ו b, ולא לאינסוף מלבנים כמו שהבנתי שאתה רוצה, בשביל אינסוף מלבנים כאלה אתה צריך בנאי ובשביל לעבוד איתם יחד אתה צריך שיטותאם אתה רוצה רק ל a b ספציפים אזimport java.util.*;public class blabla{public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("a?"); double a, b; a=scan.nextDouble(); System.out.println("b?"); b=scan.nextDouble(); double s = 0; // שטח מלבן double sum = 0; // סכום השטחים של המלבנים double dx = 1e-6; // מרווח בין מלבן למלבן double y = 0; // נקודה על ציר Y { if (a<b) { for( double xp = b; xp <= a; xp = xp+dx) // XP זה התקדמות של האיקס { y = (Math.sin(xp))+(Math.cos(xp)); s = dx*y; sum = sum+s; // xp is the same all the way הלולאה בחיים לא תסתיים}} else if(a>b) { for(double xp = a; xp <= b; xp = xp+dx) { y = (Math.sin(xp))+(Math.cos(xp)); s = dx*y; sum = sum+s; }}//else if System.out.println("the S is: " +sum); }}}}ועם בנאי זה נראה אחרתimport java.util.*;public class blabla{private double a, b; blabla(double x, double y){ a=x; b=y;}public double getSomething(){ b=scan.nextDouble(); double s = 0; // שטח מלבן double sum = 0; // סכום השטחים של המלבנים double dx = 1e-6; // מרווח בין מלבן למלבן double y = 0; // נקודה על ציר Y { if (a<b) { for( double xp = b; xp <= a; xp = xp+dx) // XP זה התקדמות של האיקס { y = (Math.sin(xp))+(Math.cos(xp)); s = dx*y; sum = sum+s; // xp is the same all the way הלולאה בחיים לא תסתיים }} else if(a>b) { for(double xp = a; xp <= b; xp = xp+dx) { y = (Math.sin(xp))+(Math.cos(xp)); s = dx*y; sum = sum+s; }}} return sum;}}בקיצור עדיין לא הבנתי במדויק מה אתה רוצה לעשות מבחינת הקוד, לא מהבחינה המתמטיתשאני שואל אותך מה אתה רוצה לעשות אני מתכווןמה אתה רוצה שהמשתמש יוכל להכניס כקלט ומה ייצא כפלט זה כבר עניין של חישוב.. הבעיה שלך בקוד הזה היא הרבה לפני החישובלמה עשית את הלולאות פור הזה ומה הן בכלל אמורות לעשות אני לא יודע, מה שבטוח זה בחיים לא יעבור ריצה כי האי והבי שתקבל כקלט תמיד ישארו אותו דבר והלולאה לא תסתיים, מה גם שלא לקחת בחשבון אם הם שווים
פורסם 2010 באפריל 315 שנים מחבר חחח לא אחיתקשיבאני רוצה לחשב סכום של אינטגרל לפי שיטה של ריימןזהולא מספרים קבועיםרק הפונקציה קבועהhttp://en.wikipedia.org/wiki/Riemann_sum
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.