排空驭气奔如电 烛阴wdnmd
关注数: 2 粉丝数: 7 发帖数: 167 关注贴吧数: 15
关于程序嵌套的问题 我想问一下这个报错应该如何解决findBinaryCriticalValueOptimized[start_, end_, precision_] := Module[{left = 1, right = 4, mid, fLeft, fRight, fMid, iter = 0, maxIter = 20, amp},(*初始化函数值*)amp = left; NotebookEvaluate[ "A", InsertResults -> True]; fLeft = ampp; amp = right; NotebookEvaluate[ "A", InsertResults -> True]; fRight = ampp; (*检查区间有效性*) If[fLeft == fRight, Return["错误:函数在区间端点值相同,请调整起始和结束值。f(left) = " <> ToString[fLeft] <> ", f(right) = " <> ToString[fRight]]]; Print["开始搜索0/1跳变的临界值..."]; Print["初始区间: [", left, ", ", right, "]"]; Print["f(left) = ", fLeft, ", f(right) = ", fRight]; Print["目标精度(区间长度): ", precision]; While[iter < maxIter && Abs[right - left] > precision, iter++; mid = (left + right)/2; (*设置当前变量值并运行笔记本*)amp = mid; NotebookEvaluate[ "A", InsertResults -> True]; fMid = ampp; Print["迭代 ", iter, ": amp = ", mid, ", f(p) = ", fMid, ", 区间长度 = ", Abs[right - left]]; (*更新区间*)If[fMid == fLeft, left = mid, right = mid];]; Print["*** 搜索完成 ***"]; Print["最终区间: [", left, ", ", right, "]"]; Print["区间长度: ", Abs[right - left]]; Print["迭代次数: ", iter]; (*返回区间的中点作为最佳估计*)Return[(left + right)/2]] (*执行搜索*) criticalValue = findBinaryCriticalValueOptimized[startValue, endValue, desiredPrecision] Out[4]= "错误:函数在区间端点值相同,请调整起始和结束值。f(left) = ampp, f(right) = ampp" 这个是另一个程序 测试 Global`ampp If[amp > 2.09583, ampp = 1, ampp = 0] originalNb = NotebookFileName[]; If[originalNb =!= $Failed, base = DirectoryName[originalNb]; nameBase = FileBaseName[originalNb]; newName = nameBase <> "_" <> ToString[amp] <> ".nb"; newPath = FileNameJoin[{base, newName}]; NotebookSave[EvaluationNotebook[], newPath]; Print["程序已保存为: ", newPath], Print["未保存的笔记本,请先手动保存"]]
1 下一页