💄 Better simplify
This commit is contained in:
@@ -1189,12 +1189,7 @@ ${b1}y &= ${c1 - a1 * x.toDouble()}
|
||||
double denominator,
|
||||
bool isPlus,
|
||||
) {
|
||||
final sign = isPlus ? '+' : '-';
|
||||
final bStr = b == 0
|
||||
? ''
|
||||
: b > 0
|
||||
? '${b.toInt()}'
|
||||
: '(${b.toInt()})';
|
||||
final denomInt = denominator.toInt();
|
||||
final denomStr = denominator == 2 ? '2' : denominator.toString();
|
||||
|
||||
// Format sqrt(delta) symbolically using the Rational value
|
||||
@@ -1211,9 +1206,39 @@ ${b1}y &= ${c1 - a1 * x.toDouble()}
|
||||
}
|
||||
} else {
|
||||
// 完整的表达式:(-b ± sqrt(delta))/denominator
|
||||
final bInt = b.toInt();
|
||||
|
||||
// Check if b is divisible by denominator for simplification
|
||||
if (bInt % denomInt == 0) {
|
||||
// Can simplify: b/denominator becomes integer
|
||||
final simplifiedB = bInt ~/ denomInt;
|
||||
|
||||
if (simplifiedB == 0) {
|
||||
// Just the sqrt part with correct sign
|
||||
return isPlus ? '$sqrtExpr' : '-$sqrtExpr';
|
||||
} else if (simplifiedB == 1) {
|
||||
// +1 * sqrt part
|
||||
return isPlus ? '1 + $sqrtExpr' : '1 - $sqrtExpr';
|
||||
} else if (simplifiedB == -1) {
|
||||
// -1 * sqrt part
|
||||
return isPlus ? '-1 + $sqrtExpr' : '-1 - $sqrtExpr';
|
||||
} else if (simplifiedB > 0) {
|
||||
// Positive coefficient
|
||||
return isPlus
|
||||
? '$simplifiedB + $sqrtExpr'
|
||||
: '$simplifiedB - $sqrtExpr';
|
||||
} else {
|
||||
// Negative coefficient
|
||||
final absB = (-simplifiedB).toString();
|
||||
return isPlus ? '-$absB + $sqrtExpr' : '-$absB - $sqrtExpr';
|
||||
}
|
||||
} else {
|
||||
// Cannot simplify, use fraction form
|
||||
final bStr = b > 0 ? '${bInt}' : '(${bInt})';
|
||||
final signStr = isPlus ? '+' : '-';
|
||||
final numerator = b > 0
|
||||
? '-$bStr $sign $sqrtExpr'
|
||||
: '(${b.toInt()}) $sign $sqrtExpr';
|
||||
? '-$bStr $signStr $sqrtExpr'
|
||||
: '(${bInt}) $signStr $sqrtExpr';
|
||||
|
||||
if (denominator == 2) {
|
||||
return '\\frac{$numerator}{2}';
|
||||
@@ -1222,6 +1247,7 @@ ${b1}y &= ${c1 - a1 * x.toDouble()}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 格式化复数根的虚部:sqrt(-delta)/(2a)
|
||||
String _formatImaginaryPart(String sqrtExpr, double denominator) {
|
||||
|
Reference in New Issue
Block a user