Advanced mathematical constraint analyzer
Add constraints to analyze convexity
Enter mathematical constraints using variables like x1, x2, x3...
Examples:
'use client'
import { useState } from 'react'
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
import { ConstraintInput } from '@/components/constraint-input'
import { ConvexityVisualizer } from '@/components/convexity-visualizer'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
import { Badge } from '@/components/ui/badge'
import { CheckCircle, XCircle, AlertCircle } from 'lucide-react'
export interface Constraint {
id: string
expression: string
type: 'equality' | 'inequality'
coefficients: number[]
constant: number
operator: '=' | '>=' | '<=' | '>' | '<'
isValid: boolean
variables: string[]
}
export function ConvexityChecker() {
const [constraints, setConstraints] = useState<Constraint[]>([])
const [isConvex, setIsConvex] = useState<boolean | null>(null)
const [analysis, setAnalysis] = useState<string>('')
const addConstraint = (constraint: Constraint) => {
setConstraints(prev => [...prev, constraint])
analyzeConvexity([...constraints, constraint])
}
const analyzeConvexity = (constraintList: Constraint[]) => {
if (constraintList.length === 0) {
setIsConvex(null)
setAnalysis('')
return
}
const allLinear = constraintList.every(c => c.isValid)
if (allLinear) {
setIsConvex(true)
setAnalysis('All constraints are linear, forming a convex set.')
} else {
setIsConvex(false)
setAnalysis('Some constraints are non-linear or invalid.')
}
}
// ... rest of component
}